Switch to UniAuth.auth

This commit is contained in:
Edward Betts 2024-01-23 10:49:58 +00:00
parent 5f0d2e884f
commit fc36647d49
2 changed files with 2 additions and 38 deletions

View file

@ -1,36 +0,0 @@
"""Authentication via UniAuth."""
import flask
import werkzeug
from itsdangerous.url_safe import URLSafeTimedSerializer
max_age = 60 * 60 * 24 * 90
def verify_auth_token(token: str) -> str | None:
"""Verify the authentication token."""
serializer = URLSafeTimedSerializer(flask.current_app.config["SECRET_KEY"])
try:
username = serializer.loads(token, salt="auth", max_age=max_age)
except Exception:
return None
assert isinstance(username, str)
return username
def require_authentication() -> werkzeug.Response | None:
"""Require authentication and redirect with return URL."""
if not flask.current_app.config.get("REQUIRE_AUTH"):
return None
token = flask.request.cookies.get("auth_token")
if token and verify_auth_token(token):
return None
# Construct the redirect URL with the original URL as a parameter
return flask.redirect(
flask.current_app.config["UNIAUTH_URL"]
+ "/login?next="
+ werkzeug.urls.url_quote(flask.request.url)
)