feat: профиль — просмотр, смена имени, email и пароля
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
<%- include('../partials/layout-start') %>
|
||||
|
||||
<div class="account">
|
||||
<h1>Личный кабинет</h1>
|
||||
|
||||
<% if (success) { %><p class="alert alert--success"><%= success %></p><% } %>
|
||||
<% if (error) { %><p class="alert alert--error"><%= error %></p><% } %>
|
||||
|
||||
<nav class="account-tabs" aria-label="Разделы профиля">
|
||||
<a href="/account?tab=profile" class="account-tabs__link <%= activeTab === 'profile' ? 'account-tabs__link--active' : '' %>">Профиль</a>
|
||||
<a href="/account?tab=email" class="account-tabs__link <%= activeTab === 'email' ? 'account-tabs__link--active' : '' %>">Смена email</a>
|
||||
<a href="/account?tab=password" class="account-tabs__link <%= activeTab === 'password' ? 'account-tabs__link--active' : '' %>">Смена пароля</a>
|
||||
</nav>
|
||||
|
||||
<% if (activeTab === 'profile') { %>
|
||||
<div class="account-grid">
|
||||
<section class="card account-section">
|
||||
<h2>Мой профиль</h2>
|
||||
<dl class="profile-dl">
|
||||
<dt>ID</dt>
|
||||
<dd><%= user.id %></dd>
|
||||
<dt>Email</dt>
|
||||
<dd><%= user.email %></dd>
|
||||
<dt>Роль</dt>
|
||||
<dd><span class="role-badge role-badge--<%= user.role %>"><%= roleLabels[user.role] || user.role %></span></dd>
|
||||
<dt>Регистрация</dt>
|
||||
<dd><%= new Date(user.created_at).toLocaleString('ru-RU') %></dd>
|
||||
<dt>Заказов</dt>
|
||||
<dd><%= orderCount %></dd>
|
||||
</dl>
|
||||
<a href="/orders" class="btn btn--primary">Мои заказы</a>
|
||||
</section>
|
||||
|
||||
<section class="card account-section">
|
||||
<h2>Изменить имя</h2>
|
||||
<form action="/account/profile" method="post" class="form">
|
||||
<label class="label">
|
||||
Имя
|
||||
<input type="text" name="name" class="input" required value="<%= user.name %>" autocomplete="name">
|
||||
</label>
|
||||
<button type="submit" class="btn btn--primary">Сохранить</button>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
<% } %>
|
||||
|
||||
<% if (activeTab === 'email') { %>
|
||||
<section class="card account-section account-section--narrow">
|
||||
<h2>Смена email</h2>
|
||||
<p class="muted">Текущий email: <strong><%= user.email %></strong></p>
|
||||
<form action="/account/email" method="post" class="form">
|
||||
<label class="label">
|
||||
Новый email
|
||||
<input type="email" name="email" class="input" required autocomplete="email">
|
||||
</label>
|
||||
<label class="label">
|
||||
Текущий пароль (подтверждение)
|
||||
<input type="password" name="current_password" class="input" required autocomplete="current-password">
|
||||
</label>
|
||||
<button type="submit" class="btn btn--primary">Изменить email</button>
|
||||
</form>
|
||||
</section>
|
||||
<% } %>
|
||||
|
||||
<% if (activeTab === 'password') { %>
|
||||
<section class="card account-section account-section--narrow">
|
||||
<h2>Смена пароля</h2>
|
||||
<form action="/account/password" method="post" class="form">
|
||||
<label class="label">
|
||||
Текущий пароль
|
||||
<input type="password" name="current_password" class="input" required autocomplete="current-password">
|
||||
</label>
|
||||
<label class="label">
|
||||
Новый пароль
|
||||
<input type="password" name="password" class="input" required minlength="6" autocomplete="new-password">
|
||||
</label>
|
||||
<label class="label">
|
||||
Повторите новый пароль
|
||||
<input type="password" name="password2" class="input" required minlength="6" autocomplete="new-password">
|
||||
</label>
|
||||
<button type="submit" class="btn btn--primary">Изменить пароль</button>
|
||||
</form>
|
||||
</section>
|
||||
<% } %>
|
||||
</div>
|
||||
|
||||
<%- include('../partials/layout-end') %>
|
||||
Reference in New Issue
Block a user