{% extends "base.html" %} {% block title %}Auth debug — {{ session.user.email }}{% endblock %} {% block content %}

Auth debug — your session

Self-service diagnostic. This page is gated by AGNES_DEBUG_AUTH; visible only on dev/staging instances.

What you see is your own data only. No raw JWT, no password hash, no full PAT. The "Refetch" button below asks Google what your current group membership looks like and shows a diff against what Agnes has cached — it does not apply the result. Your real next sync runs at next sign-in.

User record

id
{{ user_record.id }}
email
{{ user_record.email }}
name
{{ user_record.name or "—" }}
active
{{ "yes" if user_record.active else "no" }}
created_at
{{ user_record.created_at or "—" }}

Session JWT (decoded)

Raw token never displayed; fingerprint correlates with logs.
{% if claims %}
fingerprint
{{ token_fingerprint }}…
subject (sub)
{{ claims.sub }}
email
{{ claims.email }}
type (typ)
{{ claims.typ or "session" }}
issued (iat)
{{ claims.iat or "—" }}
expires (exp)
{{ claims.exp or "—" }}
jti
{{ claims.jti or "—" }}
{% else %}
No session token in the request — are you signed in via cookie?
{% endif %}

Group memberships

{{ memberships|length }} row(s)
{% if memberships %} {% for m in memberships %} {% endfor %}
GroupLinked toSourceAddedAdded by
{{ m.name }}{% if m.is_system %} (system){% endif %} {% if m.external_id %} {{ m.external_id }} {% else %} {% endif %} {{ m.source }} {{ m.added_at or "—" }} {{ m.added_by or "—" }}
{% else %}
No group memberships.
{% endif %}

Resource grants (effective)

Distinct {{ grants|length }} grant(s) reachable via your groups.
{% if grants %} {% for g in grants %} {% endfor %}
Resource typeResource idVia group
{{ g.resource_type }} {{ g.resource_id }} {{ g.via_group }}
{% else %}
No resource grants reachable.
{% endif %}

Last Google sync snapshot

Read from user_group_members.
prefix in effect
{{ google_group_prefix or "(none)" }}
google_sync rows
{{ sync_summary.google_sync_count }}
last added_at
{{ sync_summary.last_added_at or "—" }}
{% endblock %}