aboutsummaryrefslogtreecommitdiff
path: root/wqflask/wqflask/oauth2/ui.py
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask/wqflask/oauth2/ui.py')
-rw-r--r--wqflask/wqflask/oauth2/ui.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/wqflask/wqflask/oauth2/ui.py b/wqflask/wqflask/oauth2/ui.py
new file mode 100644
index 00000000..31b873be
--- /dev/null
+++ b/wqflask/wqflask/oauth2/ui.py
@@ -0,0 +1,23 @@
+"""UI utilities"""
+from flask import session, render_template
+
+from .client import oauth2_get
+
+def render_ui(templatepath: str, **kwargs):
+ """Handle repetitive UI rendering stuff."""
+ logged_in = ("oauth2_token" in session and bool(session["oauth2_token"]))
+ roles = kwargs.get("roles", tuple()) # Get roles if already provided
+ if logged_in and not bool(roles): # If not, try fetching them
+ roles_results = oauth2_get("oauth2/user/roles").either(
+ lambda err: {"roles_error": process_error(err)},
+ lambda roles: {"roles": roles})
+ kwargs = {**kwargs, **roles_results}
+ roles = kwargs.get("roles", tuple())
+ user_privileges = tuple(
+ privilege["privilege_id"] for role in roles
+ for privilege in role["privileges"])
+ kwargs = {
+ **kwargs, "roles": roles, "user_privileges": user_privileges,
+ "logged_in": logged_in
+ }
+ return render_template(templatepath, **kwargs)