88c6ce8ccc
- 迁移为 frontend-web、frontend-electron、backend-web 与 docker 部署结构 - 网页端:订阅门禁二次弹窗、套餐/支付组件化、顶栏分组对齐 - 首页:最近文件与模板库布局优化,缩略图对齐,下载与删除操作 - 新增管理后台、支付与云端文件 API,更新 README 与项目规范 Co-authored-by: Cursor <cursoragent@cursor.com>
45 lines
1.3 KiB
PHP
45 lines
1.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
$host = getenv('SOON_DB_HOST') ?: 'mysql';
|
|
$port = (int)(getenv('SOON_DB_PORT') ?: 3306);
|
|
$user = getenv('SOON_DB_USER') ?: 'soondesign';
|
|
$pass = getenv('SOON_DB_PASS') ?: 'soondesign';
|
|
$db = getenv('SOON_DB_NAME') ?: 'soondesign';
|
|
$email = getenv('SOON_DEV_ADMIN_EMAIL') ?: 'admin@local.test';
|
|
$plain = getenv('SOON_DEV_ADMIN_PASS') ?: 'admin123';
|
|
|
|
try {
|
|
$pdo = new PDO(
|
|
sprintf('mysql:host=%s;port=%d;dbname=%s;charset=utf8mb4', $host, $port, $db),
|
|
$user,
|
|
$pass,
|
|
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
|
|
);
|
|
} catch (Throwable $e) {
|
|
fwrite(STDERR, 'seed-dev-admin: ' . $e->getMessage() . PHP_EOL);
|
|
exit(1);
|
|
}
|
|
|
|
$stmt = $pdo->prepare('SELECT id FROM users WHERE email = :email LIMIT 1');
|
|
$stmt->execute(['email' => $email]);
|
|
if ($stmt->fetchColumn()) {
|
|
exit(0);
|
|
}
|
|
|
|
$hash = password_hash($plain, PASSWORD_BCRYPT);
|
|
$ins = $pdo->prepare(
|
|
'INSERT INTO users (email, password_hash, role, admin_level, status, created_at) '
|
|
. 'VALUES (:email, :hash, :role, :level, :status, :created_at)'
|
|
);
|
|
$ins->execute([
|
|
'email' => $email,
|
|
'hash' => $hash,
|
|
'role' => 'admin',
|
|
'level' => 'full',
|
|
'status' => 'active',
|
|
'created_at' => date('Y-m-d H:i:s'),
|
|
]);
|
|
|
|
fwrite(STDOUT, "seed-dev-admin: created {$email}" . PHP_EOL);
|