diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-24 13:53:13 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-24 13:53:13 +0200 |
| commit | dcb576618b868b888a5b1b31e35491f300ce4050 (patch) | |
| tree | 3a970eae416fba2939cd366b1ba2b5d294154f2c /app/views/otp_challenges | |
| parent | fefec929c59c72dc93e4be30e8f23cd8c5258b0a (diff) | |
Complete the login only after the second factor
Enrolled users get a pending marker instead of a session after the
password step; a valid code through the challenge writes the real
session via reset_session. otp_required without enrollment funnels
into setup everywhere except the enrollment, user, and login
machinery.
Diffstat (limited to 'app/views/otp_challenges')
| -rw-r--r-- | app/views/otp_challenges/new.html.erb | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/app/views/otp_challenges/new.html.erb b/app/views/otp_challenges/new.html.erb new file mode 100644 index 00000000..a9c7a15c --- /dev/null +++ b/app/views/otp_challenges/new.html.erb | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <h1>Second factor</h1> | ||
| 2 | |||
| 3 | <div id="page_editor"> | ||
| 4 | <div class="node_description">Code</div> | ||
| 5 | <div class="node_content"> | ||
| 6 | <%= form_tag otp_challenge_path, :method => :post do %> | ||
| 7 | <%= text_field_tag :code, nil, :autofocus => true, | ||
| 8 | :autocomplete => "one-time-code", :inputmode => "numeric" %> | ||
| 9 | <%= submit_tag "Log in" %> | ||
| 10 | <% end %> | ||
| 11 | <span class="field_hint">Enter the six-digit code from your authenticator app.</span> | ||
| 12 | </div> | ||
| 13 | </div> | ||
