72a431dd4b
Switch from using "text/template" to "html/template", which provides basic XSS preventions. We haven't identified any particular place where unsanitized user data is rendered to the frontend. This is just a preventative step. At the same time, make more templates take pure URL instead of forming an URL themselves using an "authReqID" argument. This will help us stop using the auth req ID in certain places, preventing garbage collection from killing login flows that wait too long at the login screen. Also increase the login session window (time between initial redirect and the user logging in) from 30 minutes to 24 hours, and display a more helpful error message when the session expires. How to test: 1. Spin up dex and example with examples/config-dev.yaml. 2. Login through both the password prompt and the direct redirect. 3. Edit examples/config-dev.yaml removing the "connectors" section. 4. Ensure you can still login with a password. (email/password is "admin@example.com" and "password")
31 lines
1.0 KiB
HTML
31 lines
1.0 KiB
HTML
{{ template "header.html" . }}
|
|
|
|
<div class="theme-panel">
|
|
<h2 class="theme-heading">Log in to Your Account</h2>
|
|
<form method="post" action="{{ .PostURL }}">
|
|
<div class="theme-form-row">
|
|
<div class="theme-form-label">
|
|
<label for="userid">Username</label>
|
|
</div>
|
|
<input tabindex="1" required id="login" name="login" type="text" class="theme-form-input" placeholder="username" {{ if .Username }} value="{{ .Username }}" {{ else }} autofocus {{ end }}/>
|
|
</div>
|
|
<div class="theme-form-row">
|
|
<div class="theme-form-label">
|
|
<label for="password">Password</label>
|
|
</div>
|
|
<input tabindex="2" required id="password" name="password" type="password" class="theme-form-input" placeholder="password" {{ if .Invalid }} autofocus {{ end }}/>
|
|
</div>
|
|
|
|
{{ if .Invalid }}
|
|
<div class="dex-error-box">
|
|
Invalid username and password.
|
|
</div>
|
|
{{ end }}
|
|
|
|
<button tabindex="3" type="submit" class="dex-btn theme-btn--primary">Login</button>
|
|
|
|
</form>
|
|
</div>
|
|
|
|
{{ template "footer.html" . }}
|