def post(self): request = self.request user = request.validated['user'] user.password = request.validated['password'] # The user was validated by the nonce so we can log in token = log_validated_user_i_know_what_i_do(user, request) if token: settings = request.registry.settings response = token_to_response(user, token, request) try: client = get_discourse_client(settings) r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Since only the password is changed, any error with discourse # must not prevent login and validation. log.error( 'Error logging into discourse for %d', user.id, exc_info=True) user.clear_validation_nonce() try: DBSession.flush() except: log.warning('Error persisting user', exc_info=True) raise HTTPInternalServerError('Error persisting user') return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None
def post(self): request = self.request user = request.validated['user'] user.password = request.validated['password'] # The user was validated by the nonce so we can log in token = log_validated_user_i_know_what_i_do(user, request) if token: settings = request.registry.settings response = token_to_response(user, token, request) try: client = get_discourse_client(settings) r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Since only the password is changed, any error with discourse # must not prevent login and validation. log.error('Error logging into discourse for %d', user.id, exc_info=True) user.clear_validation_nonce() try: DBSession.flush() except: log.warning('Error persisting user', exc_info=True) raise HTTPInternalServerError('Error persisting user') return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None
def post(self): user = self.request.validated['sso_user'] token = log_validated_user_i_know_what_i_do(user, self.request) response = token_to_response(user, token, self.request) if 'discourse' in self.request.json: client = get_discourse_client(self.request.registry.settings) try: r = client.redirect_without_nonce(user) response['redirect_internal'] = r except Exception: # Any error with discourse should not prevent login log.warning('Error logging into discourse for %d', user.id, exc_info=True) return response
def post(self): request = self.request user = request.validated['user'] user.clear_validation_nonce() user.email_validated = True # the user profile can be indexed once the account is confirmed notify_es_syncer(self.request.registry.queue_config) # Synchronizing to Discourse is unnecessary as it will be done # during the redirect_without_nonce call below. # The user was validated by the nonce so we can log in token = log_validated_user_i_know_what_i_do(user, request) if token: response = token_to_response(user, token, request) settings = request.registry.settings try: client = get_discourse_client(settings) r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Any error with discourse must prevent login and validation log.error( 'Error logging into discourse for %d', user.id, exc_info=True) raise HTTPInternalServerError('Error with Discourse') try: DBSession.flush() except: log.warning('Error persisting user', exc_info=True) raise HTTPInternalServerError('Error persisting user') return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None
def post(self): request = self.request user = request.validated['user'] user.clear_validation_nonce() user.email_validated = True # the user profile can be indexed once the account is confirmed notify_es_syncer(self.request.registry.queue_config) # Synchronizing to Discourse is unnecessary as it will be done # during the redirect_without_nonce call below. # The user was validated by the nonce so we can log in token = log_validated_user_i_know_what_i_do(user, request) if token: response = token_to_response(user, token, request) settings = request.registry.settings try: client = get_discourse_client(settings) r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Any error with discourse must prevent login and validation log.error('Error logging into discourse for %d', user.id, exc_info=True) raise HTTPInternalServerError('Error with Discourse') try: DBSession.flush() except: log.warning('Error persisting user', exc_info=True) raise HTTPInternalServerError('Error persisting user') return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None