def oauth_callback(): if not settings.OAUTH: abort(404) resp = oauth.provider.authorized_response() if resp is None or isinstance(resp, OAuthException): log.warning("Failed OAuth: %r", resp) return Unauthorized("Authentication has failed.") response = signals.handle_oauth_session.send(provider=oauth.provider, oauth=resp) for (_, role) in response: if role is None: continue update_role(role) db.session.commit() log.info("Logged in: %r", role) state = request.args.get('state') next_url = get_best_next_url(state, request.referrer) next_url, _ = urldefrag(next_url) next_url = '%s#token=%s' % (next_url, create_token(role)) return redirect(next_url) log.error("No OAuth handler for %r was installed.", oauth.provider.name) return Unauthorized("Authentication has failed.")
def password_login(): """Provides email and password authentication.""" data = parse_request(LoginSchema) q = Role.by_email(data.get('email')) q = q.filter(Role.password_digest != None) # noqa role = q.first() if role is None: return Unauthorized("Authentication has failed.") if not role.check_password(data.get('password')): return Unauthorized("Authentication has failed.") return jsonify({'status': 'ok', 'token': create_token(role)})
def password_login(): """Provides email and password authentication.""" data = parse_request(LoginSchema) role = Role.by_email(data.get('email')) if role is None or not role.has_password: return Unauthorized("Authentication has failed.") if not role.check_password(data.get('password')): return Unauthorized("Authentication has failed.") update_role(role) db.session.commit() return jsonify({ 'status': 'ok', 'token': create_token(role) })
def oauth_callback(provider): oauth_provider = oauth.remote_apps.get(provider) if not oauth_provider: abort(404) resp = oauth_provider.authorized_response() if resp is None or isinstance(resp, OAuthException): log.warning("Failed OAuth: %r", resp) return Unauthorized("Authentication has failed.") response = signals.handle_oauth_session.send(provider=oauth_provider, oauth=resp) db.session.commit() for (_, role) in response: if role is None: continue log.info("Logged in: %r", role) next_url = extract_next_url(request) next_url, _ = urldefrag(next_url) next_url = '%s#token=%s' % (next_url, create_token(role)) return redirect(next_url) log.error("No OAuth handler for %r was installed.", provider) return Unauthorized("Authentication has failed.")