docs: один зарегистрированный администратор (ADMIN_EMAIL)

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-17 13:41:16 +03:00
parent e2a7c79245
commit ed9850c96f
6 changed files with 47 additions and 4 deletions
+9
View File
@@ -685,6 +685,15 @@ a:hover {
margin-top: 1.25rem;
}
.admin-hint {
margin: 0 0 1rem;
font-size: 0.9rem;
}
.admin-hint code {
font-size: 0.85em;
}
.admin-header {
margin-bottom: 1.5rem;
}
+11 -2
View File
@@ -7,6 +7,15 @@ async function seedAdmin() {
const password = process.env.ADMIN_PASSWORD || 'admin';
const name = process.env.ADMIN_NAME || 'Администратор';
// Только один администратор — пользователь с ADMIN_EMAIL (остальные customer)
const { rowCount: demoted } = await query(
`UPDATE users SET role = $1 WHERE role = $2 AND email != $3`,
[ROLES.CUSTOMER, ROLES.ADMIN, email]
);
if (demoted > 0) {
console.log('Снята роль admin у', demoted, 'пользоват(елей) — админ только:', email);
}
const { rows } = await query('SELECT id, role FROM users WHERE email = $1', [email]);
if (!rows[0]) {
@@ -16,13 +25,13 @@ async function seedAdmin() {
VALUES ($1, $2, $3, $4)`,
[email, hash, name, ROLES.ADMIN]
);
console.log('Создан администратор:', email);
console.log('Создан администратор (единственный):', email);
return;
}
if (rows[0].role !== ROLES.ADMIN) {
await query('UPDATE users SET role = $1 WHERE id = $2', [ROLES.ADMIN, rows[0].id]);
console.log('Пользователю назначена роль admin:', email);
console.log('Назначен единственный администратор:', email);
}
}
+5
View File
@@ -12,6 +12,11 @@
</nav>
</div>
<p class="muted admin-hint">
Один администратор — зарегистрированный пользователь с email из <code>ADMIN_EMAIL</code> в <code>.env</code>.
Остальные при регистрации получают роль «Клиент».
</p>
<table class="cart-table">
<thead>
<tr>