At first i thought that i would need to implement sessions, the ones that keep small files onto the disk, to know which user is talking to the server, but then i realized that, for now at least, i only need a very large number, plus the email address, to be used as a lookup, and that can be stored in the user table, in a separate schema. Had to change login to avoid raising exceptions when login failed because i now keep a record of login attemps, and functions are always run in a single transaction, thus the exception would prevent me to insert into login_attempt. Even if i use a separate procedure, i could not keep the records. I did not want to add a parameter to the logout function because i was afraid that it could be called from separate users. I do not know whether it is possible with the current approach, since the settings variable is also set by the same applications; time will tell.
25 lines
725 B
HTML
25 lines
725 B
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Login — Numerus</title>
|
|
</head>
|
|
<body>
|
|
<h1>Numerus</h1>
|
|
<h2>Login</h2>
|
|
{{ if .LoginError }}
|
|
<p>{{ .LoginError }}</p>
|
|
{{ end }}
|
|
<form method="POST" action="/login">
|
|
<label for="user_email">Email</label>
|
|
<input id="user_email" type="email" required autofocus name="email" autocapitalize="none" value="{{ .Email }}">
|
|
|
|
<label for="user_password">Password</label>
|
|
<input id="user_password" type="password" required name="password" autocomplete="current-password" value="{{ .Password }}">
|
|
|
|
<button type="submit">Login</button>
|
|
</form>
|
|
</body>
|
|
</html>
|