From 291a0b393e4197864d582982f4afc2cb30814be3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Mon, 23 May 2016 12:43:54 +0200 Subject: [PATCH] Added /users/me endpoint to get info about the current user. The user must perform the request with a valid auth token. --- pillar/application/__init__.py | 2 +- pillar/application/modules/users.py | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/pillar/application/__init__.py b/pillar/application/__init__.py index 3fb5ac02..a23b446d 100644 --- a/pillar/application/__init__.py +++ b/pillar/application/__init__.py @@ -204,5 +204,5 @@ local_auth.setup_app(app, url_prefix='/auth') file_storage.setup_app(app, url_prefix='/storage') latest.setup_app(app, url_prefix='/latest') blender_cloud.setup_app(app, url_prefix='/bcloud') -users.setup_app(app) +users.setup_app(app, url_prefix='/users') nodes.setup_app(app) diff --git a/pillar/application/modules/users.py b/pillar/application/modules/users.py index 6c0ca4e7..8aac9347 100644 --- a/pillar/application/modules/users.py +++ b/pillar/application/modules/users.py @@ -4,13 +4,24 @@ import json import logging import urllib -from flask import g, current_app +from flask import g, current_app, Blueprint, make_response from werkzeug.exceptions import Forbidden from eve.utils import parse_request +from eve.methods.get import get -from application.utils.authorization import user_has_role +from application.utils.authorization import user_has_role, require_login +from application.utils import jsonify log = logging.getLogger(__name__) +blueprint = Blueprint('users', __name__) + + +@blueprint.route('/me') +@require_login() +def my_info(): + eve_resp, _, _, status, _ = get('users', {'_id': g.current_user['user_id']}) + resp = jsonify(eve_resp['_items'][0], status=status) + return resp def gravatar(email, size=64): @@ -122,7 +133,7 @@ def after_fetching_user_resource(response): after_fetching_user(user) -def setup_app(app): +def setup_app(app, url_prefix): app.on_pre_GET_users += check_user_access app.on_post_GET_users += post_GET_user app.on_pre_PUT_users += check_put_access @@ -130,3 +141,5 @@ def setup_app(app): app.on_replaced_users += after_replacing_user app.on_fetched_item_users += after_fetching_user app.on_fetched_resource_users += after_fetching_user_resource + + app.register_blueprint(blueprint, url_prefix=url_prefix)