{% extends "base.html" %} {% from "_macros.html" import icon, mark, wordmark %} {# Approving a device login (RFC 8628). The card layout of the sign-in page, on purpose: this is a sign-in, for somebody else's program, and it should look as serious as one. Everything the device said about itself is shown before the button, together with the address the request came from -- a code typed in from somebody else's message is the attack this page exists to make visible. #} {% block title %}{{ t("Sign in a device") }} - {{ brand.name }}{% endblock %} {% block body %}
{{ mark(cls="brand-mark", uid="device") }}

{{ t("Sign in a device") }}

{{ t("A program on another machine is asking to use this instance as you.") }}

{% if not allowed %} {% elif row %}
{{ t("Device") }}
{{ row.device_name }}
{% if row.device_host %}
{{ t("Machine") }}
{{ row.device_host }}{% if row.device_platform %} · {{ row.device_platform }}{% endif %}
{% endif %} {% if row.client %}
{{ t("Program") }}
{{ row.client }}
{% endif %}
{{ t("Asked from") }}
{{ row.ip or "?" }}
{{ t("It may") }}
    {% for scope in row.scopes_json %}
  • {{ scope_label(scope) }}
  • {% endfor %}
{#- The second token of the same approval (services/devices.py). -#} {% if row.agent_scopes_json %}
{{ t("Its agent may") }}
    {% for scope in row.agent_scopes_json %}
  • {{ scope_label(scope) }}
  • {% endfor %}
{% endif %}

{{ t("Approve only a device you are signing in yourself, right now. It keeps access until you revoke it under Settings → Devices.") }}

{% else %} {% if looked %} {% endif %}
{% endif %}
{% endblock %}