Deploy: 2026-05-21 01:26:06

This commit is contained in:
Hamza-Ayed
2026-05-21 01:26:06 +03:00
parent 146ebd7200
commit 16d494b4e1
13 changed files with 816 additions and 32 deletions

View File

@@ -0,0 +1,45 @@
<?php
namespace App\Models;
use App\Core\Database;
use App\Core\Security;
class User extends BaseModel
{
protected static string $table = 'users';
/**
* Find user securely by email using Blind Index (HMAC-SHA256 Hash).
*/
public static function findByEmail(string $email): ?array
{
$emailHash = Security::blindIndex($email);
return Database::selectOne(
"SELECT * FROM users WHERE email_hash = :hash LIMIT 1",
['hash' => $emailHash]
);
}
/**
* Create a new user securely (encrypting sensitive data and generating hashes).
*/
public static function createSecure(array $data): string
{
// 1. Hash password
$data['password'] = Security::hashPassword($data['password']);
// 2. Generate blind index for email lookup
$data['email_hash'] = Security::blindIndex($data['email']);
// 3. Encrypt the email itself using AES-256-GCM
$data['email'] = Security::encrypt($data['email']);
// 4. Ensure default values if none provided
$data['role'] = $data['role'] ?? 'admin';
$data['status'] = $data['status'] ?? 'active';
return self::create($data);
}
}