{# settings/users.html — Settings › Users (#5336): every account, active ones first. A row opens the account's page. #} {% extends "base.html" %} {% from "_macros.html" import crumbs, page_header, status_badge %} {% from "settings/_tabs.html" import settings_tabs %} {% block title %}Settings — Users — Steward{% endblock %} {% block section_tabs %}{{ settings_tabs("users") }}{% endblock %} {% block breadcrumb %}{{ crumbs([("Settings", "/settings/"), ("Users", "")]) }}{% endblock %} {% block content %} {% call page_header("Users") %}Invite by emailAdd user{% endcall %} {% if done %}
{{ done }}
{% endif %}

{{ users|length }} account{{ 's' if users|length != 1 }} · {{ admins }} active admin{{ 's' if admins != 1 }} {%- if disabled %} · {{ disabled }} disabled{% endif %}

{% for u in users %} {% endfor %}
UserSigns in withRoleEmailedLast sign-inAI tokens
{{ u.username }} {%- if u.id == session.user_id %} (you){% endif %}
{{ u.email }}
{{ sources.get(u.auth_source, u.auth_source) }} {{ u.role.value|capitalize }}{% if not u.is_active %} {{ status_badge("inactive", "Disabled") }}{% endif %} {% if u.id not in reachable %}no address {%- elif gets[u.id] %}{{ gets[u.id]|join(", ") }}{% else %}—{% endif %} {% if last.get(u.id) %}{{ last[u.id]|ago }}{% else %}—{% endif %} {{ tokens.get(u.id, 0) or "—" }}
{% if invites %}
{% for i, state, by in invites %} {% endfor %}
Invites not yet used
Sent toRoleSent byLink works untilActions
{{ i.email }} {{ i.role.value|capitalize }} {{ by }} {% if state == "expired" %}{{ status_badge("inactive", "Expired") }}{% else %}{{ i.expires_at|when }}{% endif %}
{{ csrf_field() }}
{{ csrf_field() }}
{% endif %}

Accounts that sign in with LDAP or single sign-on are added at their first sign-in, with the role their provider's groups give them (Settings › Authentication).

{% endblock %}