def reactivation_email(self, user): """ Send the reactivation email to the specified user, and return the response as json data. """ return json.loads(reactivation_email_for_user(user).content)
def reactivation_email(self, user): """ Send the reactivation email to the specified user, and return the response as json data. """ return json.loads(reactivation_email_for_user(user).content)
def ensure_user_information( strategy, auth_entry, backend=None, user=None, social=None, allow_inactive_user=False, *args, **kwargs ): """ Ensure that we have the necessary information about a user (either an existing account or registration data) to proceed with the pipeline. """ response = {} data = kwargs["response"] def dispatch_to_register(): """Force user creation on login or register""" request = strategy.request data["terms_of_service"] = True data["honor_code"] = True data["password"] = make_random_password() # force name creation if it is empty in sso-profile data["name"] = " ".join([data.get("firstname", ""), data.get("lastname", "")]).strip() or data["username"] data["provider"] = backend.name if request.session.get("ExternalAuthMap"): del request.session["ExternalAuthMap"] try: user = User.objects.get(email=data["email"]) except User.DoesNotExist: create_account_with_params(request, data) user = request.user user.is_active = True user.save() return {"user": user} if not user: if auth_entry in [AUTH_ENTRY_LOGIN_API, AUTH_ENTRY_REGISTER_API]: return HttpResponseBadRequest() elif auth_entry in [AUTH_ENTRY_LOGIN, AUTH_ENTRY_LOGIN_2]: response = dispatch_to_register() elif auth_entry in [AUTH_ENTRY_REGISTER, AUTH_ENTRY_REGISTER_2]: response = dispatch_to_register() elif auth_entry == AUTH_ENTRY_ACCOUNT_SETTINGS: raise AuthEntryError(backend, "auth_entry is wrong. Settings requires a user.") else: raise AuthEntryError(backend, "auth_entry invalid") else: user.email = data["email"] user.username = data["username"] user.first_name = data["firstname"] user.last_name = data["lastname"] user.save() try: user_profile = UserProfile.objects.get(user=user) except User.DoesNotExist: user_profile = None except User.MultipleObjectsReturned: user_profile = UserProfile.objects.filter(user=user)[0] if user_profile: user_profile.name = " ".join([data["firstname"], data["lastname"]]).strip() or data["username"] user = user or response.get("user") if user and not user.is_active: if allow_inactive_user: pass elif social is not None: reactivation_email_for_user(user) raise NotActivatedException(backend, user.email) # add roles for User permissions = kwargs.get("response", {}).get("permissions") if permissions is not None: try: set_roles_for_edx_users(user, permissions, strategy) except Exception as e: log.error(u"set_roles_for_edx_users error: {}".format(e)) return response
def ensure_user_information(strategy, auth_entry, backend=None, user=None, social=None, allow_inactive_user=False, *args, **kwargs): """ Ensure that we have the necessary information about a user (either an existing account or registration data) to proceed with the pipeline. """ response = {} data = kwargs['response'] try: data['firstname'] = data['Firstname'] except KeyError: raise Exception("First name is required") try: data['email'] = data['Email'] except KeyError: raise Exception("Email field is required") data['lastname'] = data.pop('Lastname') if data.get('Lastname') else '' data['username'] = re.sub('[\W_]', '', data['email']) def dispatch_to_register(): """Force user creation on login or register""" request = strategy.request data['terms_of_service'] = True data['honor_code'] = True data['password'] = make_random_password() # force name creation if it is empty in sso-profile data['name'] = ' '.join([data['firstname'], data['lastname'] ]).strip() or data['username'] data['provider'] = backend.name if request.session.get('ExternalAuthMap'): del request.session['ExternalAuthMap'] try: user = User.objects.get(email=data['email']) except User.DoesNotExist: try: create_account_with_params(request, data) except AccountValidationError: data['username'] = data['email'] create_account_with_params(request, data) user = request.user user.is_active = True user.set_unusable_password() user.save() del data['password'] return {'user': user} if not user: if auth_entry in [AUTH_ENTRY_LOGIN_API, AUTH_ENTRY_REGISTER_API]: return HttpResponseBadRequest() elif auth_entry in [AUTH_ENTRY_LOGIN, AUTH_ENTRY_LOGIN_2]: response = dispatch_to_register() elif auth_entry in [AUTH_ENTRY_REGISTER, AUTH_ENTRY_REGISTER_2]: response = dispatch_to_register() elif auth_entry == AUTH_ENTRY_ACCOUNT_SETTINGS: raise AuthEntryError( backend, 'auth_entry is wrong. Settings requires a user.') else: raise AuthEntryError(backend, 'auth_entry invalid') else: try: user = User.objects.get(username=data['username'], email=data['email']) except User.DoesNotExist: user.username = data['username'] user.first_name = data['firstname'] user.last_name = data['lastname'] user.save() try: user_profile = UserProfile.objects.get(user=user) except User.DoesNotExist: user_profile = None except User.MultipleObjectsReturned: user_profile = UserProfile.objects.filter(user=user)[0] if user_profile: user_profile.name = ' '.join([data['firstname'], data['lastname'] ]).strip() or data['username'] user = user or response.get('user') if user and not user.is_active: if allow_inactive_user: pass elif social is not None: reactivation_email_for_user(user) raise NotActivatedException(backend, user.email) # add roles for User permissions = kwargs.get('response', {}).get('permissions') if permissions is not None: try: set_roles_for_edx_users(user, permissions, strategy) except Exception as e: log.error(u'set_roles_for_edx_users error: {}'.format(e)) return response
def reactivation_email(self): """Send the reactivation email, and return the response as json data""" return json.loads(reactivation_email_for_user(self.user).content)
def reactivation_email(self): """Send the reactivation email, and return the response as json data""" return json.loads(reactivation_email_for_user(self.user).content)
def ensure_user_information( strategy, auth_entry, backend=None, user=None, social=None, allow_inactive_user=False, *args, **kwargs): """ Ensure that we have the necessary information about a user (either an existing account or registration data) to proceed with the pipeline. """ response = {} data = kwargs['response'] def dispatch_to_register(): """Force user creation on login or register""" request = strategy.request data['terms_of_service'] = True data['honor_code'] = True data['password'] = make_random_password() # force name creation if it is empty in sso-profile data['name'] = ' '.join([data.get('firstname', ''), data.get('lastname', '')]).strip() or data['username'] data['provider'] = backend.name if request.session.get('ExternalAuthMap'): del request.session['ExternalAuthMap'] try: user = User.objects.get(email=data['email']) except User.DoesNotExist: create_account_with_params(request, data) user = request.user user.first_name = data.get('firstname') user.last_name = data.get('lastname') user.is_active = True user.save() return {'user': user} if not user: if auth_entry in [AUTH_ENTRY_LOGIN_API, AUTH_ENTRY_REGISTER_API]: return HttpResponseBadRequest() elif auth_entry in [AUTH_ENTRY_LOGIN, AUTH_ENTRY_LOGIN_2]: response = dispatch_to_register() elif auth_entry in [AUTH_ENTRY_REGISTER, AUTH_ENTRY_REGISTER_2]: response = dispatch_to_register() elif auth_entry == AUTH_ENTRY_ACCOUNT_SETTINGS: raise AuthEntryError( backend, 'auth_entry is wrong. Settings requires a user.') else: raise AuthEntryError(backend, 'auth_entry invalid') else: if user.id != 1: user.email = data['email'] user.username = data['username'] user.first_name = data['firstname'] user.last_name = data['lastname'] user.save() try: user_profile = UserProfile.objects.get(user=user) except User.DoesNotExist: user_profile = None except User.MultipleObjectsReturned: user_profile = UserProfile.objects.filter(user=user)[0] if user_profile: user_profile.name = user.get_full_name() user_profile.goals = json.dumps(data.get('meta', {})) user_profile.save() user = user or response.get('user') if user and not user.is_active: if allow_inactive_user: pass elif social is not None: reactivation_email_for_user(user) # зачем это надо? raise NotActivatedException(backend, user.email) # add roles for User permissions = kwargs.get('response', {}).get('permissions') if permissions is not None: try: set_roles_for_edx_users(user, permissions, strategy) except Exception as e: log.error(u'set_roles_for_edx_users error: {}'.format(e)) return response
def ensure_user_information( strategy, auth_entry, backend=None, user=None, social=None, allow_inactive_user=False, *args, **kwargs): """ Ensure that we have the necessary information about a user (either an existing account or registration data) to proceed with the pipeline. """ response = {} data = kwargs['response'] display_name = data.get('display_name').split(" ") data['first_name'] = display_name[0] data['last_name'] = display_name[1] if len(display_name) >= 2 else '' data['name'] = data.get('display_name') data['username'] = data['user_login'] def dispatch_to_register(): """Force user creation on login or register""" request = strategy.request data['terms_of_service'] = "True" data['honor_code'] = 'True' data['password'] = make_random_password() data['provider'] = backend.name if request.session.get('ExternalAuthMap'): del request.session['ExternalAuthMap'] try: user = User.objects.get(email=data['email']) except User.DoesNotExist: create_account_with_params(request, data) user = request.user user.first_name = data['first_name'] user.last_name = data['last_name'] user.is_active = True user.save() CourseCreator.objects.get_or_create( user=user, state=CourseCreator.UNREQUESTED ) return {'user': user} if not user: if auth_entry in [AUTH_ENTRY_LOGIN_API, AUTH_ENTRY_REGISTER_API]: return HttpResponseBadRequest() elif auth_entry in [AUTH_ENTRY_LOGIN, AUTH_ENTRY_LOGIN_2]: response = dispatch_to_register() elif auth_entry in [AUTH_ENTRY_REGISTER, AUTH_ENTRY_REGISTER_2]: response = dispatch_to_register() elif auth_entry == AUTH_ENTRY_ACCOUNT_SETTINGS: raise AuthEntryError( backend, 'auth_entry is wrong. Settings requires a user.') else: raise AuthEntryError(backend, 'auth_entry invalid') else: if user.id != 1: user.email = data['email'] user.username = data['username'] user.first_name = data['first_name'] user.last_name = data['last_name'] user.save() CourseCreator.objects.get_or_create( user=user, state=CourseCreator.UNREQUESTED ) try: user_profile = UserProfile.objects.get(user=user) except User.DoesNotExist: user_profile = None except User.MultipleObjectsReturned: user_profile = UserProfile.objects.filter(user=user)[0] if user_profile: user_profile.name = user.get_full_name() user_profile.save() user = user or response.get('user') if user and not user.is_active: if allow_inactive_user: pass elif social is not None: reactivation_email_for_user(user) raise AuthEntryError(backend, user.email) return {'user': user}
def ensure_user_information(strategy, auth_entry, backend=None, user=None, social=None, allow_inactive_user=False, *args, **kwargs): """ Ensure that we have the necessary information about a user (either an existing account or registration data) to proceed with the pipeline. """ response = {} data = kwargs['response'] display_name = data.get('display_name').split(" ") data['first_name'] = display_name[0] data['last_name'] = display_name[1] if len(display_name) >= 2 else '' data['name'] = data.get('display_name') data['username'] = data['user_login'] def dispatch_to_register(): """Force user creation on login or register""" request = strategy.request data['terms_of_service'] = "True" data['honor_code'] = 'True' data['password'] = make_random_password() data['provider'] = backend.name if request.session.get('ExternalAuthMap'): del request.session['ExternalAuthMap'] try: user = User.objects.get(email=data['email']) except User.DoesNotExist: create_account_with_params(request, data) user = request.user user.first_name = data['first_name'] user.last_name = data['last_name'] user.is_active = True user.save() CourseCreator.objects.get_or_create( user=user, state=CourseCreator.UNREQUESTED) return {'user': user} if not user: if auth_entry in [AUTH_ENTRY_LOGIN_API, AUTH_ENTRY_REGISTER_API]: return HttpResponseBadRequest() elif auth_entry in [AUTH_ENTRY_LOGIN, AUTH_ENTRY_LOGIN_2]: response = dispatch_to_register() elif auth_entry in [AUTH_ENTRY_REGISTER, AUTH_ENTRY_REGISTER_2]: response = dispatch_to_register() elif auth_entry == AUTH_ENTRY_ACCOUNT_SETTINGS: raise AuthEntryError( backend, 'auth_entry is wrong. Settings requires a user.') else: raise AuthEntryError(backend, 'auth_entry invalid') else: if user.id != 1: user.email = data['email'] user.username = data['username'] user.first_name = data['first_name'] user.last_name = data['last_name'] user.save() CourseCreator.objects.get_or_create( user=user, state=CourseCreator.UNREQUESTED) try: user_profile = UserProfile.objects.get(user=user) except User.DoesNotExist: user_profile = None except User.MultipleObjectsReturned: user_profile = UserProfile.objects.filter(user=user)[0] if user_profile: user_profile.name = user.get_full_name() user_profile.save() user = user or response.get('user') if user and not user.is_active: if allow_inactive_user: pass elif social is not None: reactivation_email_for_user(user) raise AuthEntryError(backend, user.email) return {'user': user}