github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/assets/templates/magic_link_twofactor.html (about) 1 <!DOCTYPE html> 2 <html lang="{{.Locale}}"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="refresh" content="3600"> 6 <meta name="viewport" content="width=device-width, initial-scale=1"> 7 <meta name="theme-color" content="#fff"> 8 <title>{{.TemplateTitle}}</title> 9 <link rel="stylesheet" href="{{asset .Domain "/fonts/fonts.css" .ContextName}}"> 10 <link rel="stylesheet" href="{{asset .Domain "/css/cozy-bs.min.css" .ContextName}}"> 11 <link rel="stylesheet" href="{{asset .Domain "/styles/theme.css" .ContextName}}"> 12 <link rel="stylesheet" href="{{asset .Domain "/styles/cirrus.css" .ContextName}}"> 13 {{.Favicon}} 14 <link rel="preload" href="/assets/icons/check.svg" as="image"> 15 </head> 16 <body class="cirrus theme-inverted"> 17 <form id="login-form" method="POST" action="/auth/magic_link/twofactor" class="d-contents" data-iterations="{{.Iterations}}" data-salt="{{.Salt}}"> 18 <input id="redirect" type="hidden" name="redirect" value="{{.Redirect}}" /> 19 <input id="magic_code" type="hidden" name="magic_code" value="{{.MagicCode}}" /> 20 <input id="csrf_token" type="hidden" name="csrf_token" value="{{.CSRF}}" /> 21 <input id="trusted-device-token" type="hidden" name="trusted-device-token" value="" /> 22 <main class="wrapper"> 23 24 <header class="wrapper-top"> 25 {{if not .BottomNavBar}} 26 <p class="banner caption small-md fst-italic"> 27 <span class="icon icon-answer"></span> 28 <strong>{{t "Login Password best practice"}}</strong> 29 {{t "Login Password tip"}} 30 </p> 31 {{end}} 32 <a href="https://cozy.io/" class="btn p-2 d-sm-none"> 33 <img src="{{asset .Domain "/images/logo-dark.svg"}}" alt="Cozy Cloud" class="logo" /> 34 </a> 35 </header> 36 37 <div class="d-flex flex-column align-items-center"> 38 <img src="/public/avatar" alt="" class="avatar my-3 border border-primary border-2 rounded-circle" /> 39 <h1 class="h4 h2-md mb-0 text-center">{{.Title}}</h1> 40 <p class="mb-4 mb-md-5 text-muted">{{.Domain}}</p> 41 42 <div id="login-field" class="input-group form-floating has-validation w-100"> 43 <input type="password" class="form-control form-control-md-lg" id="password" name="passphrase" autofocus autocomplete="current-password" spellcheck="false" /> 44 <label for="password">{{t "Login Password field"}}</label> 45 <button id="password-visibility-button" class="btn btn-outline-info" 46 type="button" 47 name="password-visibility" 48 data-show="{{t "Login Password show"}}" 49 data-hide="{{t "Login Password hide"}}" 50 title="{{t "Login Password show"}}"> 51 <span id="password-visibility-icon" class="icon icon-eye-closed"></span> 52 </button> 53 {{if .CredentialsError}} 54 <div class="invalid-tooltip mb-1"> 55 <div class="tooltip-arrow"></div> 56 <span class="icon icon-alert bg-danger"></span> 57 {{.CredentialsError}} 58 </div> 59 {{end}} 60 </div> 61 <a href="/auth/passphrase_reset{{if .Redirect}}?redirect={{.Redirect}}{{end}}" class="align-self-start my-3"> 62 {{t "Login Forgot password"}} 63 </a> 64 </div> 65 66 <footer class="w-100"> 67 <button id="login-submit" class="btn btn-primary btn-md-lg w-100 my-3 mt-md-5" type="submit"> 68 {{t "Login Submit"}} 69 </button> 70 {{if .BottomNavBar}} 71 <p class="banner caption mt-n1 mb-0 small-md fst-italic fullbleed"> 72 <span class="icon icon-answer reverse-y align-bottom"></span> 73 <strong>{{t "Login Password best practice"}}</strong> 74 {{t "Login Password tip"}} 75 </p> 76 {{end}} 77 </footer> 78 79 </main> 80 </form> 81 <script src="{{asset .Domain "/scripts/cirrus.js"}}"></script> 82 {{if .CryptoPolyfill}}<script src="{{asset .Domain "/js/asmcrypto.js"}}"></script>{{end}} 83 <script src="{{asset .Domain "/scripts/password-helpers.js"}}"></script> 84 <script src="{{asset .Domain "/scripts/password-visibility.js"}}"></script> 85 <script src="{{asset .Domain "/scripts/login.js"}}"></script> 86 </body> 87 </html>