canaille-globuzma/oidc_ldap_bridge/tokens.py

38 lines
1.1 KiB
Python
Raw Normal View History

2020-08-27 08:50:50 +00:00
from flask import Blueprint, render_template, flash, redirect, url_for
from flask_babel import gettext
2020-08-31 09:23:50 +00:00
from oidc_ldap_bridge.models import Token, Client
from oidc_ldap_bridge.flaskutils import user_needed
2020-08-26 14:27:08 +00:00
bp = Blueprint(__name__, "tokens")
@bp.route("/")
2020-08-27 08:50:50 +00:00
@user_needed()
def tokens(user):
tokens = Token.filter(oauthSubject=user.dn)
tokens = [t for t in tokens if t.is_refresh_token_active()]
client_ids = list(set(t.oauthClientID for t in tokens))
clients = (
{c.oauthClientID: c for c in Client.filter(oauthClientID=client_ids)}
if client_ids
else {}
)
return render_template("token_list.html", tokens=tokens, clients=clients)
@bp.route("/delete/<token_id>")
@user_needed()
def delete(user, token_id):
token = Token.get(token_id)
if not token or token.oauthSubject != user.dn:
flash(gettext("Could not delete this access"), "error")
else:
token.revoked = True
token.save()
flash(gettext("The access has been revoked"), "success")
2020-08-31 09:23:50 +00:00
return redirect(url_for("oidc_ldap_bridge.tokens.tokens"))