From 82a506278bcbd7cda98354b283953e5611b0b4e0 Mon Sep 17 00:00:00 2001 From: decentral1se Date: Fri, 11 Jun 2021 14:23:13 +0200 Subject: [PATCH] Basic login redirect --- keycloak_collective_portal.py | 16 ++++++++++++++-- poetry.lock | 14 +++++++++++++- pyproject.toml | 1 + templates/login.html | 8 ++++++++ 4 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 templates/login.html diff --git a/keycloak_collective_portal.py b/keycloak_collective_portal.py index 6998653..fbf7d18 100644 --- a/keycloak_collective_portal.py +++ b/keycloak_collective_portal.py @@ -1,15 +1,27 @@ """Community Keycloak SSO user management.""" from fastapi import FastAPI, Request -from fastapi.responses import HTMLResponse +from fastapi.responses import HTMLResponse, RedirectResponse from fastapi.templating import Jinja2Templates +from starlette.middleware.sessions import SessionMiddleware app = FastAPI() +app.add_middleware(SessionMiddleware, secret_key="mysecretzkey") templates = Jinja2Templates(directory="templates") @app.get("/", response_class=HTMLResponse) async def home(request: Request): + user = request.session.get("user") + if user: + return templates.TemplateResponse( + "index.html", context={"request": request} + ) + return RedirectResponse("/login") + + +@app.get("/login", response_class=HTMLResponse) +async def login(request: Request): return templates.TemplateResponse( - "index.html", context={"request": request} + "login.html", context={"request": request} ) diff --git a/poetry.lock b/poetry.lock index 8b2a547..5c7597c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -121,6 +121,14 @@ pipfile_deprecated_finder = ["pipreqs", "requirementslib"] requirements_deprecated_finder = ["pipreqs", "pip-api"] colors = ["colorama (>=0.4.3,<0.5.0)"] +[[package]] +name = "itsdangerous" +version = "2.0.1" +description = "Safely pass data to untrusted environments and back." +category = "main" +optional = false +python-versions = ">=3.6" + [[package]] name = "jinja2" version = "3.0.1" @@ -324,7 +332,7 @@ python-versions = ">=3.6.1" [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "27448995033f96e0639ead7c435ba26b4758706f9e26ecb5ade3d29692959668" +content-hash = "a3278c69c36a0390a247780ff0ad55c878d2e1ea028097bd46d8998d1c449ce1" [metadata.files] appdirs = [ @@ -380,6 +388,10 @@ isort = [ {file = "isort-5.8.0-py3-none-any.whl", hash = "sha256:2bb1680aad211e3c9944dbce1d4ba09a989f04e238296c87fe2139faa26d655d"}, {file = "isort-5.8.0.tar.gz", hash = "sha256:0a943902919f65c5684ac4e0154b1ad4fac6dcaa5d9f3426b732f1c8b5419be6"}, ] +itsdangerous = [ + {file = "itsdangerous-2.0.1-py3-none-any.whl", hash = "sha256:5174094b9637652bdb841a3029700391451bd092ba3db90600dea710ba28e97c"}, + {file = "itsdangerous-2.0.1.tar.gz", hash = "sha256:9e724d68fc22902a1435351f84c3fb8623f303fffcc566a4cb952df8c572cff0"}, +] jinja2 = [ {file = "Jinja2-3.0.1-py3-none-any.whl", hash = "sha256:1f06f2da51e7b56b8f238affdd6b4e2c61e39598a378cc49345bc1bd42a978a4"}, {file = "Jinja2-3.0.1.tar.gz", hash = "sha256:703f484b47a6af502e743c9122595cc812b0271f661722403114f71a79d0f5a4"}, diff --git a/pyproject.toml b/pyproject.toml index 33f4b12..a393bad 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -10,6 +10,7 @@ python = "^3.9" fastapi = "^0.65.2" uvicorn = {extras = ["standard"], version = "^0.14.0"} Jinja2 = "^3.0.1" +itsdangerous = "^2.0.1" [tool.poetry.dev-dependencies] black = "^21.6b0" diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..0c85893 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,8 @@ + + + Login + + +

Please login

+ +