2020-09-17 09:10:12 +00:00
|
|
|
import datetime
|
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()]
|
2020-09-07 13:39:51 +00:00
|
|
|
client_dns = list(set(t.oauthClient for t in tokens))
|
|
|
|
clients = {dn: Client.get(dn) for dn in client_dns}
|
2020-08-27 08:50:50 +00:00
|
|
|
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:
|
2020-09-17 09:10:12 +00:00
|
|
|
token.oauthRevokationDate = datetime.datetime.now().strftime("%Y%m%d%H%M%SZ")
|
2020-08-27 08:50:50 +00:00
|
|
|
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"))
|