def get_or_create_user(user_id, first_name='', last_name='', middle_name='', *args, **kwargs): """ Get or create a local user from fusionauth's information. Mostly used for local user federation. You can actually add more code here to support and make various authentication actions, for example to implement a work around the fact that FA don't support yet users having more than one email address. :param user_id: :param first_name: :param last_name: :param middle_name: :return: """ from django.db.models import Q User = get_user_model() user_qs = User.objects.filter( Q(email=user_id) ) if user_qs.exists(): return user_qs.first() # if not user: user = User( email=user_id , first_name=first_name , last_name=last_name , **kwargs ) # todo: create the mail here user.save() return user