2026-04-29 17:49:07 +03:00
|
|
|
|
{% extends "admin/layout.html" %}
|
|
|
|
|
|
{% let active_page = "users" %}
|
|
|
|
|
|
|
|
|
|
|
|
{% block title %}{{ t.users_title }}{% endblock %}
|
|
|
|
|
|
|
|
|
|
|
|
{% block content %}
|
|
|
|
|
|
<div class="page-head">
|
|
|
|
|
|
<h1>{{ t.users_title }}</h1>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
{% for user in &users %}
|
|
|
|
|
|
<div class="item-card">
|
|
|
|
|
|
<div class="item-card-header">
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<span class="name">{{ user.login }}{% if let Some(dn) = user.display_name.as_deref() %} <span class="muted-detail">— {{ dn }}</span>{% endif %}</span>
|
2026-04-29 17:49:07 +03:00
|
|
|
|
<span class="badge badge-{{ user.status }}">{{ t.client_status(&user.status) }}</span>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="item-card-meta">
|
|
|
|
|
|
<span>🕐 {{ user.created_at.format("%d.%m.%Y %H:%M") }}</span>
|
|
|
|
|
|
</div>
|
2026-05-15 15:28:19 +03:00
|
|
|
|
{% if user.status == "active" %}
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<form method="post" action="/admin/users/{{ user.id }}/telegram" class="inline-admin-form">
|
|
|
|
|
|
<div class="inline-admin-grid">
|
|
|
|
|
|
<div class="field">
|
|
|
|
|
|
<label class="label is-small">{{ t.users_telegram_chat_id }}</label>
|
|
|
|
|
|
<div class="control">
|
|
|
|
|
|
<input class="input is-small" type="text" name="telegram_chat_id" placeholder="123456789" value="{{ user.telegram_chat_id.as_deref().unwrap_or_default() }}">
|
2026-05-15 15:28:19 +03:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<div>
|
|
|
|
|
|
<label class="admin-toggle admin-toggle-compact">
|
2026-05-15 15:28:19 +03:00
|
|
|
|
<input type="checkbox" name="telegram_notifications" value="true" {% if user.telegram_notifications == Some(true) %}checked{% endif %}>
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<span class="admin-toggle-track" aria-hidden="true"><span></span></span>
|
|
|
|
|
|
<span><strong>{{ t.users_telegram_enabled }}</strong></span>
|
2026-05-15 15:28:19 +03:00
|
|
|
|
</label>
|
|
|
|
|
|
</div>
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<div>
|
2026-05-15 15:28:19 +03:00
|
|
|
|
<button type="submit" class="button is-small is-info is-outlined">💾</button>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
{% endif %}
|
2026-04-29 17:49:07 +03:00
|
|
|
|
<div class="item-card-actions">
|
|
|
|
|
|
{% if user.status == "active" %}
|
|
|
|
|
|
<form method="post" action="/admin/users/{{ user.id }}/archive">
|
|
|
|
|
|
<button type="submit" class="button is-small is-warning is-outlined btn-sm">{{ t.action_archive }}</button>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
{% else %}
|
|
|
|
|
|
<form method="post" action="/admin/users/{{ user.id }}/activate">
|
|
|
|
|
|
<button type="submit" class="button is-small is-success is-outlined btn-sm">{{ t.action_activate }}</button>
|
|
|
|
|
|
</form>
|
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
{% endfor %}
|
|
|
|
|
|
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<section class="admin-section mt-5">
|
|
|
|
|
|
<header class="admin-section-head">
|
|
|
|
|
|
<span class="admin-section-icon" aria-hidden="true">➕</span>
|
|
|
|
|
|
<div><h2>{{ t.users_add_title }}</h2></div>
|
|
|
|
|
|
</header>
|
|
|
|
|
|
<div class="admin-section-body">
|
2026-04-29 17:49:07 +03:00
|
|
|
|
{% if let Some(err) = error.as_ref() %}
|
|
|
|
|
|
<div class="notification is-danger is-light">{{ err }}</div>
|
|
|
|
|
|
{% endif %}
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<form method="post" action="/admin/users/add" class="form-grid">
|
|
|
|
|
|
<div class="field">
|
|
|
|
|
|
<label class="label is-small">{{ t.users_login }}</label>
|
|
|
|
|
|
<div class="control"><input class="input" type="text" name="login" required></div>
|
2026-04-29 17:49:07 +03:00
|
|
|
|
</div>
|
2026-08-09 03:19:47 +01:00
|
|
|
|
<div class="field">
|
|
|
|
|
|
<label class="label is-small">{{ t.users_display_name }}</label>
|
|
|
|
|
|
<div class="control"><input class="input" type="text" name="display_name"></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="field">
|
|
|
|
|
|
<label class="label is-small">{{ t.users_password }}</label>
|
|
|
|
|
|
<div class="control"><input class="input" type="password" name="password" required minlength="4"></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="field">
|
|
|
|
|
|
<label class="label is-small">{{ t.users_password_confirm }}</label>
|
|
|
|
|
|
<div class="control"><input class="input" type="password" name="password_confirm" required minlength="4"></div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div class="admin-field-wide">
|
|
|
|
|
|
<button type="submit" class="button is-primary">{{ t.users_add_button }}</button>
|
2026-04-29 17:49:07 +03:00
|
|
|
|
</div>
|
|
|
|
|
|
</form>
|
2026-08-09 03:19:47 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
</section>
|
2026-04-29 17:49:07 +03:00
|
|
|
|
{% endblock %}
|