Add user auth, personal cabinet, admin panel and first admin bootstrap

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-06 22:20:09 +03:00
parent c6a7ecfc4c
commit 61e7290ce8
26 changed files with 1351 additions and 108 deletions
+36
View File
@@ -0,0 +1,36 @@
{% extends "base.html" %}
{% block title %}Вход — PhotoHost{% endblock %}
{% block content %}
<section class="auth-section">
<div class="container auth-container">
<div class="auth-card">
<h1 class="auth-card__title">Вход</h1>
<p class="auth-card__subtitle">Войдите в аккаунт для загрузки фото</p>
{% include "partials/alerts.html" %}
<form method="post" class="auth-form">
<div class="form-group">
<label for="login">Логин или email</label>
<input type="text" id="login" name="login" required autocomplete="username" placeholder="username или email@example.com">
</div>
<div class="form-group">
<label for="password">Пароль</label>
<input type="password" id="password" name="password" required autocomplete="current-password" placeholder="••••••••">
</div>
<label class="form-checkbox">
<input type="checkbox" name="remember">
<span>Запомнить меня</span>
</label>
<button type="submit" class="btn btn--primary btn--full">Войти</button>
</form>
<p class="auth-card__footer">
Нет аккаунта? <a href="{{ url_for('auth.register') }}">Зарегистрироваться</a>
</p>
</div>
</div>
</section>
{% endblock %}
+40
View File
@@ -0,0 +1,40 @@
{% extends "base.html" %}
{% block title %}Регистрация — PhotoHost{% endblock %}
{% block content %}
<section class="auth-section">
<div class="container auth-container">
<div class="auth-card">
<h1 class="auth-card__title">Регистрация</h1>
<p class="auth-card__subtitle">Создайте аккаунт для загрузки и управления фото</p>
{% include "partials/alerts.html" %}
<form method="post" class="auth-form">
<div class="form-group">
<label for="username">Имя пользователя</label>
<input type="text" id="username" name="username" required minlength="3" autocomplete="username" placeholder="min 3 символа">
</div>
<div class="form-group">
<label for="email">Email</label>
<input type="email" id="email" name="email" required autocomplete="email" placeholder="you@example.com">
</div>
<div class="form-group">
<label for="password">Пароль</label>
<input type="password" id="password" name="password" required minlength="6" autocomplete="new-password" placeholder="min 6 символов">
</div>
<div class="form-group">
<label for="password2">Подтверждение пароля</label>
<input type="password" id="password2" name="password2" required minlength="6" autocomplete="new-password" placeholder="повторите пароль">
</div>
<button type="submit" class="btn btn--primary btn--full">Создать аккаунт</button>
</form>
<p class="auth-card__footer">
Уже есть аккаунт? <a href="{{ url_for('auth.login') }}">Войти</a>
</p>
</div>
</div>
</section>
{% endblock %}