From ae84e9e26faad304835665276f3897ed1ce09754 Mon Sep 17 00:00:00 2001 From: hzhang Date: Mon, 2 Dec 2024 15:22:11 +0000 Subject: [PATCH] init commit --- app.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000..f407c0e --- /dev/null +++ b/app.py @@ -0,0 +1,51 @@ +from authlib.integrations import flask_client +from flask import Flask, jsonify, request, url_for, redirect, session +from flask_cors import CORS +from authlib.integrations.flask_client import OAuth +import os + +app = Flask(__name__) +CORS(app) +oauth = OAuth(app) + +keycloak = oauth.register( + 'keycloak', + client_id="main", + client_secret="", + server_metadata_url="https://login.hangman-lab.top/auth/realms/Hangman-Lab/.well-known/openid-configuration", + client_kwargs={"scope": "openid email profile"}, +) + + +@app.route('/api/login') +def login(): + redirect_uri = url_for("authorize", _external=True) + return keycloak.authorize_redirect(redirect_uri) + +@app.route('/api/authorize') +def authorize(): + token = keycloak.authorize_access_token() + user_info = keycloak.parse_id_token(token) + session['user'] = user_info + +@app.route('/api/logout') +def logout(): + session.pop('user', None) + logout_url = "https://login.hangman-lab.top/auth/realms/Hangman-Lab/protocol/openid-connect/logout" + return redirect(logout_url) + +@app.route("/api/user") +def user(): + u = session.get('user') + if not u: + return jsonify({"username": "guest", "role": "guest"}) + return jsonify(user) + +@app.route('/api/get_note_list', methods=['GET']) +def get_note_list(): + raise NotImplementedError + +@app.route('/api/get_note', methods=['GET']) +def get_note(idx): + raise NotImplementedError +