Files
ACORE/templates/password-setup.html
lokses 3359a8db13 employees: HR-заявки, приглашения на пароль, профиль и 2FA
Модель/сервисы HR-заявок с заменами, приглашения на установку пароля
(инвайты), обновлённая страница профиля сотрудника и правки 2FA.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-09 18:03:32 +03:00

79 lines
4.6 KiB
HTML

{% load static %}
<!DOCTYPE html>
<html lang="uk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>АКС — Встановлення пароля</title>
<link rel="stylesheet" href="{% static 'assets/css/main.css' %}">
</head>
<body style="background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-sidebar-accent) 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 1rem; font-family: var(--font-sans);">
<div style="width: 100%; max-width: 28rem; background: var(--color-card); border-radius: 0.75rem; border: 1px solid var(--color-border); box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1); overflow: hidden;">
<div style="padding: 2rem 2rem 1.5rem; text-align: center; border-bottom: 1px solid var(--color-border);">
<div style="width: 3rem; height: 3rem; margin: 0 auto 0.75rem;">
<img src="{% static 'assets/img/logosm.svg' %}" alt="АКС" style="width: 100%; height: 100%; object-fit: contain;">
</div>
<h1 style="font-size: 1.375rem; font-weight: 600; color: var(--color-foreground); margin-bottom: 0.375rem;">
{% if invalid %}Посилання недійсне{% else %}Встановлення пароля{% endif %}
</h1>
{% if invalid %}
<p style="font-size: 0.875rem; color: var(--color-muted-foreground);">
Посилання прострочене, вже використане або не існує. Зверніться до HR або IT для нового запрошення.
</p>
<p style="margin-top: 1rem;"><a href="/login/" style="color: var(--color-primary); text-decoration: none; font-weight: 500;">← На сторінку входу</a></p>
{% else %}
<p style="font-size: 0.875rem; color: var(--color-muted-foreground);">
{{ employee.last_name }} {{ employee.first_name }} · логін <strong>{{ employee.username }}</strong>
</p>
{% if expires_at %}
<p style="font-size: 0.75rem; color: var(--color-muted-foreground); margin-top: 0.375rem;">
Дійсне до {{ expires_at|date:"d.m.Y H:i" }}
</p>
{% endif %}
{% endif %}
</div>
{% if not invalid %}
<form method="post" style="padding: 2rem; display: flex; flex-direction: column; gap: 1.25rem;">
{% csrf_token %}
{% if errors %}
<div style="color: #d63333; background: rgba(214, 51, 51, 0.1); border: 1px solid rgba(214, 51, 51, 0.25); padding: 0.75rem; border-radius: 0.5rem; font-size: 0.8125rem;">
{% for err in errors %}<div>{{ err }}</div>{% endfor %}
</div>
{% endif %}
<div>
<label for="password" style="display: block; font-size: 0.875rem; font-weight: 500; margin-bottom: 0.5rem;">Новий пароль</label>
<input type="password" id="password" name="password" required autocomplete="new-password" class="input"
placeholder="Мінімум 8 символів" style="width: 100%; padding: 0.75rem 1rem;">
</div>
<div>
<label for="password_confirm" style="display: block; font-size: 0.875rem; font-weight: 500; margin-bottom: 0.5rem;">Підтвердження пароля</label>
<input type="password" id="password_confirm" name="password_confirm" required autocomplete="new-password" class="input"
placeholder="Повторіть пароль" style="width: 100%; padding: 0.75rem 1rem;">
</div>
{% if show_ad_sync %}
<label style="display: flex; align-items: flex-start; gap: 0.5rem; font-size: 0.8125rem; color: var(--color-foreground); cursor: pointer;">
<input type="checkbox" name="sync_ad" value="1" style="margin-top: 0.125rem; width: 1rem; height: 1rem;" checked>
<span>Також змінити пароль у домені Active Directory<br>
<span style="color: var(--color-muted-foreground); font-size: 0.75rem;">{{ employee.ad_user_dn }}</span>
</span>
</label>
{% elif ad_sync_hint %}
<p style="font-size: 0.8125rem; color: var(--color-muted-foreground); margin: 0; padding: 0.75rem; background: var(--color-muted); border-radius: 0.5rem;">
{{ ad_sync_hint }}
</p>
{% endif %}
<button type="submit" class="btn btn-primary" style="width: 100%; padding: 0.75rem 1rem; font-size: 0.875rem; font-weight: 500;">
Зберегти пароль
</button>
</form>
{% endif %}
</div>
</body>
</html>