2022-04-09 17:38:00 +02:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta charset="utf-8">
|
|
|
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<meta name="robots" content="noindex, nofollow">
|
|
|
|
|
|
|
|
<title>{{ str['login'] }}</title>
|
|
|
|
|
|
|
|
<link rel="stylesheet" href="{{ url('static', filename='style.css') }}">
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
<main>
|
|
|
|
<h1>{{ str['login'] }}</h1>
|
2023-11-20 11:45:49 +01:00
|
|
|
|
|
|
|
%try:
|
|
|
|
%if two_factor_authentication:
|
2023-11-22 08:26:22 +01:00
|
|
|
<form method="post" action="/user_step2/{{key}}">
|
2023-11-20 11:45:49 +01:00
|
|
|
<label for="code">kodea</label>
|
|
|
|
<input id="code" name="code" value="" type="text" required autofocus>
|
|
|
|
%end
|
|
|
|
%except:
|
|
|
|
<form method="post" action="/auth">
|
|
|
|
<label for="username">{{ str['usrn'] }}</label>
|
|
|
|
<input id="username" name="username" value="{{ get('username', '') }}" type="text" required autofocus>
|
2022-04-09 17:38:00 +02:00
|
|
|
|
2023-11-20 11:45:49 +01:00
|
|
|
<label for="password">{{ str['pwd'] }}</label>
|
|
|
|
<input id="password" name="password" type="password" pattern="^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#$%^&*_=+-]).{8,24}$" oninvalid="setCustomValidity('{{ str['pwd-pattern'] }}')" oninput="setCustomValidity('')" required>
|
|
|
|
|
|
|
|
%end
|
2022-04-09 17:38:00 +02:00
|
|
|
|
|
|
|
<button class="green" type="submit">{{str['login']}}</button>
|
2022-04-29 10:28:43 +02:00
|
|
|
<a href="/signup">{{ str['or-sign-up'] }}</a>
|
2022-04-09 17:38:00 +02:00
|
|
|
</form>
|
|
|
|
|
|
|
|
%for type, text, animation in get('alerts', []):
|
|
|
|
<div class="alerts {{ animation }}">
|
|
|
|
<div class="alert {{ type }}">{{ text }}</div>
|
|
|
|
</div>
|
|
|
|
%end
|
|
|
|
|
|
|
|
</main>
|
|
|
|
</body>
|
|
|
|
</html>
|