init commit

This commit is contained in:
h z
2024-12-02 15:22:11 +00:00
commit ae84e9e26f

51
app.py Normal file
View File

@@ -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="<KEY>",
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