events: record source when user is using source to authenticate
This commit is contained in:
parent
61d1407804
commit
36bc1dc020
|
@ -1,4 +1,6 @@
|
||||||
"""authentik events signal listener"""
|
"""authentik events signal listener"""
|
||||||
|
from authentik.flows.planner import FlowPlan, PLAN_CONTEXT_SOURCE
|
||||||
|
from authentik.flows.views import SESSION_KEY_PLAN
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
from typing import Any, Dict, Optional
|
from typing import Any, Dict, Optional
|
||||||
|
|
||||||
|
@ -46,6 +48,11 @@ class EventNewThread(Thread):
|
||||||
def on_user_logged_in(sender, request: HttpRequest, user: User, **_):
|
def on_user_logged_in(sender, request: HttpRequest, user: User, **_):
|
||||||
"""Log successful login"""
|
"""Log successful login"""
|
||||||
thread = EventNewThread(EventAction.LOGIN, request)
|
thread = EventNewThread(EventAction.LOGIN, request)
|
||||||
|
if SESSION_KEY_PLAN in request.session:
|
||||||
|
flow_plan: FlowPlan = request.session[SESSION_KEY_PLAN]
|
||||||
|
if PLAN_CONTEXT_SOURCE in flow_plan.context:
|
||||||
|
# Login request came from an external source, save it in the context
|
||||||
|
thread.kwargs["using_source"] = flow_plan.context[PLAN_CONTEXT_SOURCE]
|
||||||
thread.user = user
|
thread.user = user
|
||||||
thread.run()
|
thread.run()
|
||||||
|
|
||||||
|
|
|
@ -136,6 +136,15 @@ export class EventInfo extends LitElement {
|
||||||
// Action types which typically don't record any extra context.
|
// Action types which typically don't record any extra context.
|
||||||
// If context is not empty, we fall to the default response.
|
// If context is not empty, we fall to the default response.
|
||||||
case "login":
|
case "login":
|
||||||
|
if ("using_source" in this.event.context) {
|
||||||
|
return html`<div class="pf-l-flex">
|
||||||
|
<div class="pf-l-flex__item">
|
||||||
|
<h3>${gettext("Using source")}</h3>
|
||||||
|
${this.getModelInfo(this.event.context.using_source as EventContext)}
|
||||||
|
</div>
|
||||||
|
</div>`;
|
||||||
|
}
|
||||||
|
return this.defaultResponse();
|
||||||
case "logout":
|
case "logout":
|
||||||
if (this.event.context === {}) {
|
if (this.event.context === {}) {
|
||||||
return html`<span>${gettext("No additional data available.")}</span>`;
|
return html`<span>${gettext("No additional data available.")}</span>`;
|
||||||
|
|
Reference in New Issue