{% extends "base.html" %} {% block title %}Portal Users{% endblock %} {% block style %} form.add { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)) auto; gap: 10px; align-items: end; } form.add label { font-weight: 600; font-size: 13px; } form.add input, form.add select { display: block; width: 100%; margin-top: 4px; } table.plain { width: 100%; border-collapse: collapse; font-size: 13px; } table.plain th, table.plain td { text-align: left; padding: 8px; border-bottom: 1px solid var(--line); vertical-align: middle; } table.plain th { color: #3b4757; font-size: 12px; text-transform: uppercase; letter-spacing: .4px; background: var(--head); } td form { display: inline-flex; gap: 6px; margin: 0 8px 0 0; } td form input { width: 150px; padding: 4px 8px; } td form select, td form button { padding: 4px 8px; } .tag { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 12px; font-weight: 600; background: var(--head); } .tag.off { background: var(--fail-bg); color: var(--fail); } .tag.lock, .tag.change { background: var(--review-bg); color: var(--review); } .tag.on { background: var(--pass-bg); color: var(--pass); } @media (max-width: 760px) { form.add { grid-template-columns: 1fr; } } {% endblock %} {% block content %}
Admin: everything, and this page. Operator: see everything, Start / Stop a Run. Viewer: see only. Users are disabled, never deleted.
{% if error %}They change the first password at their first Sign-in.
| User | Role | Status | Added | Change |
|---|---|---|---|---|
| {{ u.username }} {{ u.display_name }} |
{{ u.role }} | {% if u.disabled %}Disabled {% else %}Active{% endif %} {% if u.must_change %}Must change password{% endif %} {% if u.locked_until %}Locked until {{ u.locked_until | usdate }}{% endif %} | {{ u.created_at | usdate }} by {{ u.created_by }} |
{% if u.disabled %} {% elif u.username != user.username %} {% endif %} |