{% extends "admin/base.html" %} {% block title %}Profile — cmdop admin{% endblock %} {% block content %} {% from 'admin/components/ui.html' import card, input, badge, page_header %} {# Plan 58 — Vercel polish. - Show fleets + per-fleet role. - Hide the password form when password login is disabled (SSO-only relay). - Don't send a stale display_name when only changing the password. - Account info reads as a metadata grid; explicit Save button. #}
{{ page_header('Profile', 'Manage your account.', help_anchor='profile') }} {% call card(title="Account") %}
{{ input("display_name", label="Display name", value=user.display_name or '', placeholder="Your name") }}

User ID

{{ user.id }}

Joined

{{ user.created_at.strftime('%Y-%m-%d') if user.created_at else '—' }}

{% if user.is_server_admin %} {{ badge('Server admin', 'blue') }} {% endif %} {% if member_role %} {{ badge(member_role + ' @ ' + (fleet.name if fleet else 'fleet'), 'default') }} {% endif %}
{% endcall %} {% call card(title="Fleet memberships", subtitle="Roles per fleet you can access") %} {% if fleets %} {% else %}

You don't belong to any fleet yet.

{% endif %} {% endcall %} {% if password_login_enabled %} {% call card(title="Change password", subtitle="Requires your current password") %}
{{ input("current_password", label="Current password", type="password", required=true) }} {{ input("new_password", label="New password", type="password", required=true, attrs='minlength="8"') }} {{ input("confirm_password", label="Confirm new password", type="password", required=true, attrs='minlength="8"') }}

At least 8 characters.

{% endcall %} {% else %} {% call card(title="Password") %}

Password login is disabled on this relay. Sign in via your identity provider.

{% endcall %} {% endif %}
{% endblock %}