def post(self): request = self.request username = request.validated['username'] password = request.validated['password'] user = DBSession.query(User). \ filter(User.username == username).first() token = try_login(user, password, request) if user else None if token: response = token_to_response(user, token, request) if 'discourse' in request.json: settings = request.registry.settings client = get_discourse_client(settings) try: if 'sso' in request.json and 'sig' in request.json: sso = request.json['sso'] sig = request.json['sig'] redirect = client.redirect(user, sso, sig) response['redirect'] = redirect else: r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Any error with discourse should not prevent login log.warning( 'Error logging into discourse for %d', user.id, exc_info=True) return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None
def post(self): request = self.request username = request.validated['username'] password = request.validated['password'] user = DBSession.query(User). \ filter(User.username == username).first() token = try_login(user, password, request) if user else None if token: response = token_to_response(user, token, request) if 'discourse' in request.json: settings = request.registry.settings client = get_discourse_client(settings) try: if 'sso' in request.json and 'sig' in request.json: sso = request.json['sso'] sig = request.json['sig'] redirect = client.redirect(user, sso, sig) response['redirect'] = redirect else: r = client.redirect_without_nonce(user) response['redirect_internal'] = r except: # Any error with discourse should not prevent login log.warning('Error logging into discourse for %d', user.id, exc_info=True) return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None
def post(self): request = self.request username = request.validated["username"] password = request.validated["password"] user = DBSession.query(User).filter(User.username == username).first() token = try_login(user, password, request) if user else None if token: response = token_to_response(user, token, request) if "discourse" in request.json: settings = request.registry.settings client = get_discourse_client(settings) try: if "sso" in request.json and "sig" in request.json: sso = request.json["sso"] sig = request.json["sig"] redirect = client.redirect(user, sso, sig) response["redirect"] = redirect else: r = client.redirect_without_nonce(user) response["redirect_internal"] = r except: # Any error with discourse should not prevent login log.warning("Error logging into discourse for %d", user.id, exc_info=True) return response else: request.errors.status = 403 request.errors.add("body", "user", "Login failed") return None
def post(self): request = self.request username = request.validated['username'] password = request.validated['password'] user = DBSession.query(User). \ filter(User.username == username).first() token = try_login(user, password, request) if user else None if token: response = token_to_response(user, token, request) if 'sso' in request.json and 'sig' in request.json: sso = request.json['sso'] sig = request.json['sig'] settings = request.registry.settings redirect = discourse_redirect(user, sso, sig, settings) response['redirect'] = redirect return response else: request.errors.status = 403 request.errors.add('body', 'user', 'Login failed') return None