<p>Scan this with your authenticator app, then enter the code it shows.</p>
19
<divclass="qr">{{ qr|safe }}</div>
20
<pclass="small mute">Or enter the secret by hand: <code>{{ secret }}</code></p>
21
<divclass="sec-row"><labelfor="code">Code from the app</label><inputtype="text"id="code"name="code"inputmode="numeric"autocomplete="one-time-code"autofocusrequired><buttontype="submit">TURN ON</button></div>
<pclass="small mute">A code from your authenticator app is asked for at every sign in.</p>
27
<divclass="sec-row"><labelfor="password">Your password, to turn it off</label><inputtype="password"id="password"name="password"autocomplete="current-password"required><buttontype="submit"class="danger">TURN OFF</button></div>
{% if me.totp_enabled() %}<sectionclass="card-box"id="phones">
38
<divclass="card-head"><h2>Phones</h2><spanclass="count-chip">{{ phones.len() }}</span><spanclass="small mute more">approve with a fingerprint instead of typing a code</span></div>
39
{% if phones.is_empty() %}<pclass="empty small">No phone approves for you yet. In the OxygenHub app, Account › <strong>Use this phone as a second factor</strong>.</p>{% else %}
<pclass="small mute pad sec-foot">Signing in, a phone shows three numbers; pick the one this page shows and confirm with your fingerprint, face or PIN. Your authenticator app's codes still work when the phone is not to hand.</p>
{% if !connected.is_empty() %}<sectionclass="card-box"id="connected">
52
<divclass="card-head"><h2>Connected accounts</h2><spanclass="small mute more">sign in with these instead of a password</span></div>
53
<ulclass="rows token-rows">{% for (id, name, login) in connected %}
54
<li>
55
<divclass="token-main"><divclass="token-name"><strong>{{ name }}</strong>{% if let Some(l) = login %} <spanclass="mute">{{ l }}</span>{% else %} <spanclass="small mute">not connected</span>{% endif %}</div></div>
56
<divclass="token-actions">{% if login.is_some() %}<formclass="inline"method="post"action="/settings/security/disconnect/{{ id }}"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttonclass="small">Disconnect</button></form>{% else %}<aclass="go small"href="/settings/security/connect/{{ id }}">Connect</a>{% endif %}</div>
<formclass="inline more"method="post"action="/settings/security/sessions"><inputtype="hidden"name="_csrf"value="{{ shell.csrf }}"><buttonclass="small"title="Sign out every browser except this one">Sign out everywhere else</button></form></div>
63
{% if sessions.is_empty() %}<pclass="empty small">No sessions.</p>{% else %}
64
<ulclass="rows token-rows">{% for x in sessions %}
65
<li>
66
<divclass="token-main">
67
<divclass="token-name"><strong>{{ x.browser }}</strong>{% if x.current %} <spanclass="tag">this browser</span>{% endif %}</div>
68
<divclass="small mute">{% if !x.address.is_empty() %}{{ x.address }} · {% endif %}used <timetitle="{{ x.seen_ms|when_i }}">{{ x.seen_ms|ago_i }}</time> · signed in <timetitle="{{ x.created_ms|when_i }}">{{ x.created_ms|ago_i }}</time></div>