39 lines
820 B
Python
39 lines
820 B
Python
|
from functools import wraps
|
||
|
from json import load
|
||
|
from os import environ
|
||
|
|
||
|
from flask import redirect, render_template, session, url_for
|
||
|
|
||
|
from .ldap import get_user
|
||
|
|
||
|
with open(environ["APP_CONFIG"]) as f:
|
||
|
APP_CONFIG = load(f)
|
||
|
|
||
|
|
||
|
def template(ldap, name, **kwargs):
|
||
|
user = None
|
||
|
is_admin = False
|
||
|
|
||
|
if ldap:
|
||
|
user = get_user(ldap, session["username"])
|
||
|
|
||
|
ldap.search(
|
||
|
APP_CONFIG["ldap"]["user_base"],
|
||
|
APP_CONFIG["template"]["group_admin"].format(user["uid"]),
|
||
|
attributes=["uid"],
|
||
|
)
|
||
|
if len(ldap.entries) == 1:
|
||
|
is_admin = True
|
||
|
|
||
|
return render_template(
|
||
|
name,
|
||
|
APP_CONFIG=APP_CONFIG,
|
||
|
CURRENT_USER=user,
|
||
|
USER_IS_ADMIN=is_admin,
|
||
|
**kwargs,
|
||
|
)
|
||
|
|
||
|
|
||
|
class UserNotFoundException(Exception):
|
||
|
pass
|