user_info.py 879 B

123456789101112131415161718192021222324252627282930
  1. from flask import request, jsonify
  2. from flask_cors import cross_origin
  3. from app.models import OauthToken, ClientUser
  4. from app.oauth.base import oauth_bp
  5. @oauth_bp.route("/user_info")
  6. @oauth_bp.route("/me")
  7. @oauth_bp.route("/userinfo")
  8. @cross_origin()
  9. def user_info():
  10. """
  11. Call by client to get user information
  12. Usually bearer token is used.
  13. """
  14. if "AUTHORIZATION" in request.headers:
  15. access_token = request.headers["AUTHORIZATION"].replace("Bearer ", "")
  16. else:
  17. access_token = request.args.get("access_token")
  18. oauth_token: OauthToken = OauthToken.get_by(access_token=access_token)
  19. if not oauth_token:
  20. return jsonify(error="Invalid access token"), 400
  21. client_user = ClientUser.get_or_create(
  22. client_id=oauth_token.client_id, user_id=oauth_token.user_id
  23. )
  24. return jsonify(client_user.get_user_info())