{% extends "base.html" %} {% block title %}Admin{% endblock %} {% block body %}

Instance

Admins manage accounts and invitations. Being an admin does not grant access to anyone’s scopes, but whoever can log in to the server can read everything on its disk.

Repository{{ health.head }}Last change {{ health.head_time|when }}
Off-site backup {% if not health.backup_configured %}Never ranNo backup has been pushed yet {% elif health.backup_current %}CurrentPushed {{ health.backup_time|ago }} {% else %}BehindLast pushed {{ health.backup_time|ago }}{% endif %}
State snapshot {% if not health.state_time %}Never ranAccounts and approvals are not backed up off-site {% elif health.state_fresh %}CurrentEncrypted, pushed {{ health.state_time|ago }} {% else %}BehindLast pushed {{ health.state_time|ago }}{% endif %}
Email{{ mailer_kind }} via {{ smtp_host }}
State database{{ (db_size / 1024)|round(1) }} KB

Pushes from Git

Permission problems: {{ 'refused' if push_enforce else 'report only' }}
Mirrors push to the repository directly over Git. Pushes to anything but main, oversized records and credentials are always refused; permission problems are {{ 'refused too' if push_enforce else 'only reported for now' }}.
{% for p in pushes %}
{{ p.at|when('%m-%d %H:%M') }} {% for m in p.hard + p.soft %}{{ m }}{% endfor %} {{ 'refused' if p.rejected else 'warning' }}
{% else %}
No problems reported.
{% endfor %}

Accounts

{{ accounts|selectattr('a.status', 'equalto', 'active')|list|length }} active of {{ accounts|length }}
{% for row in accounts %}{% set a = row.a %}
{{ a.name }} {% if a.is_admin %}admin{% endif %}{% if a.id == me.id %} you{% endif %}
{{ row.emails|join(', ') }} · handle {{ a.handle }}
{{ a.status }} {{ row.agents }} agent{{ 's' if row.agents != 1 }} · {{ row.last|ago if row.last else 'never active' }} {% if a.id != me.id %}
{% if a.is_admin %}{% else %}{% endif %} {% if a.status == 'active' %}{% else %}{% endif %}
{% endif %}
{% endfor %}

Invite someone

Registration is by invitation only. To give access to a scope at the same time, invite from the scope’s page instead.

Open invitations

{% for i in invites %} {% else %}
None open.
{% endfor %}
{% endblock %}