feat(dev): adopt shared platform-tools dev toolbar and one-click dev login
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8edc37e43a
commit
5f64ae57db
7 files changed
+76
-76
No files matched your search
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* DEV ONLY -- login de um clique da barra de dev (includes/dev_toolbar.php).
|
||||
* Fica na raiz porque este site não tem public/ (o .htaccess encaminha
|
||||
* /dev_login para aqui). O guarda, o 404 antes de tocar na BD/sessão, o POST e o
|
||||
* papel permitido são do platform-tools (platform_dev_login_handle). Aqui só: o
|
||||
* CSRF do site e a abertura da sessão como o login real (auth_login), sem
|
||||
* palavra-passe. As contas são as de scripts/dev_accounts.php.
|
||||
*/
|
||||
$_dev_shared = __DIR__ . '/shared/platform-tools/functions_dev.php';
|
||||
if (!is_file($_dev_shared)) { http_response_code(404); exit; } // submódulo sem o ficheiro (produção)
|
||||
require_once $_dev_shared;
|
||||
|
||||
platform_dev_login_handle([
|
||||
'roles' => ['admin' => 'admin@mail.pt', 'sysadmin' => 'sysadmin@mail.pt'],
|
||||
'bootstrap' => function () { global $pdo; require __DIR__ . '/config/db.php'; require_once __DIR__ . '/config/functions.php'; },
|
||||
'csrf_ok' => fn(): bool => is_string($_POST['_csrf'] ?? null) && is_string($_SESSION['csrf_token'] ?? null)
|
||||
&& $_SESSION['csrf_token'] !== '' && hash_equals($_SESSION['csrf_token'], $_POST['_csrf']),
|
||||
'login' => function (string $role, string $email): ?string {
|
||||
global $pdo;
|
||||
$st = $pdo->prepare('SELECT * FROM users WHERE email = ? AND role = ? AND is_active = 1 LIMIT 1');
|
||||
$st->execute([$email, $role]);
|
||||
$user = $st->fetch(PDO::FETCH_ASSOC);
|
||||
if (!$user) return null; // conta em falta: corra php scripts/dev_accounts.php
|
||||
auth_login($pdo, $user);
|
||||
fit_stamp_login_ua($pdo, (int) $user['id']);
|
||||
return base_url(post_login_destination($role));
|
||||
},
|
||||
]);
|
||||
Reference in new issue
Block a user