![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/lavocat.quebec/private_html/php-migration/api/auth/ |
<?php
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
exit(0);
}
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['error' => 'Method not allowed']);
exit;
}
try {
$input = json_decode(file_get_contents('php://input'), true);
$email = $input['email'] ?? '';
$password = $input['password'] ?? '';
$name = $input['name'] ?? '';
$role = $input['role'] ?? 'CLIENT';
if (empty($email) || empty($password)) {
http_response_code(400);
echo json_encode(['error' => 'Email and password are required']);
exit;
}
// Connect to SQLite database
$db = new PDO('sqlite:' . __DIR__ . '/../../../prisma/dev.db');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Check if email already exists
$stmt = $db->prepare('SELECT id FROM users WHERE LOWER(email) = LOWER(:email)');
$stmt->execute(['email' => $email]);
if ($stmt->fetch()) {
http_response_code(400);
echo json_encode(['error' => 'Email already registered']);
exit;
}
// Generate ID
$id = 'user_' . bin2hex(random_bytes(12));
// Hash password
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
// Insert new user
$stmt = $db->prepare('
INSERT INTO users (id, email, password, name, role, createdAt, updatedAt)
VALUES (:id, :email, :password, :name, :role, datetime("now"), datetime("now"))
');
$stmt->execute([
'id' => $id,
'email' => $email,
'password' => $hashedPassword,
'name' => $name,
'role' => $role
]);
// Create session
session_start();
$_SESSION['user_id'] = $id;
$_SESSION['user_email'] = $email;
$_SESSION['user_name'] = $name;
$_SESSION['user_role'] = $role;
echo json_encode([
'success' => true,
'user' => [
'id' => $id,
'email' => $email,
'name' => $name,
'role' => $role
],
'message' => 'Account created successfully'
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode(['error' => 'Signup failed', 'message' => $e->getMessage()]);
}