From b870c6108494463b9bc17440f638b1e408ad1db1 Mon Sep 17 00:00:00 2001 From: dsc Date: Sun, 3 Sep 2023 03:22:44 +0300 Subject: [PATCH] Fix for new keycloak version --- yellow/auth.py | 17 ++++++++++++----- yellow/templates/error.html | 1 - 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/yellow/auth.py b/yellow/auth.py index 75eac4a..cc55942 100644 --- a/yellow/auth.py +++ b/yellow/auth.py @@ -1,7 +1,7 @@ import re import peewee -from quart import session, redirect, url_for +from quart import session, redirect, url_for, current_app from quart_keycloak import Keycloak, KeycloakAuthToken, KeycloakLogoutRequest from yellow.factory import keycloak from yellow.models import User @@ -10,18 +10,25 @@ from yellow.models import User @keycloak.after_login() async def handle_user_login(auth_token: KeycloakAuthToken): username = auth_token.username + uid = auth_token.sub + if not re.match(r"^[a-zA-Z0-9_\.-]+$", username): raise Exception("bad username") try: - user = User.select().where(User.id == uid).get() - except peewee.DoesNotExist: + user = User.select().where(User.username == username).get() + except Exception as ex: user = None if not user: # create new user if it does not exist yet - user = User.create(id=uid, username=username) + current_app.logger.info(f'User {username} not found, creating') + try: + user = User.create(id=uid, username=username) + except Exception as ex: + current_app.logger.debug(f'User {username}, creation error') + raise # user is now logged in session['user'] = user.to_json() - return redirect(url_for('bp_routes.dashboard')) \ No newline at end of file + return redirect(url_for('bp_routes.dashboard')) diff --git a/yellow/templates/error.html b/yellow/templates/error.html index a009ac9..fb8e90b 100644 --- a/yellow/templates/error.html +++ b/yellow/templates/error.html @@ -4,7 +4,6 @@ - Such {{code}} error :(