Beispiel #1
0
    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
Beispiel #2
0
    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
Beispiel #3
0
    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
Beispiel #4
0
    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