115 lines
3.8 KiB
PHP
115 lines
3.8 KiB
PHP
<?php
|
|
// controllers/UserController.php
|
|
|
|
require_once __DIR__ . '/../models/User.php';
|
|
|
|
class UserController {
|
|
private $db;
|
|
private $userModel;
|
|
private $jwt_secret;
|
|
|
|
public function __construct($db, $jwt_secret = null) {
|
|
$this->db = $db;
|
|
$this->userModel = new User($this->db);
|
|
$this->jwt_secret = $jwt_secret;
|
|
}
|
|
|
|
// --- INTERCEPTE L'INSCRIPTION ---
|
|
public function register($data) {
|
|
if (empty($data['username']) || empty($data['email']) || empty($data['password'])) {
|
|
http_response_code(400);
|
|
echo json_encode(["success" => false, "message" => "Données incomplètes. Pseudo, email et mot de passe requis."]);
|
|
return;
|
|
}
|
|
|
|
$result = $this->userModel->register($data['username'], $data['email'], $data['password']);
|
|
|
|
if ($result['success']) {
|
|
http_response_code(201);
|
|
} else {
|
|
http_response_code(400);
|
|
}
|
|
|
|
echo json_encode($result);
|
|
}
|
|
|
|
// --- INTERCEPTE LA CONNEXION ---
|
|
public function login($data) {
|
|
if (empty($data['email']) || empty($data['password'])) {
|
|
http_response_code(400);
|
|
echo json_encode(["success" => false, "message" => "Email et mot de passe requis."]);
|
|
return;
|
|
}
|
|
|
|
$result = $this->userModel->login($data['email'], $data['password']);
|
|
|
|
if ($result['success']) {
|
|
require_once __DIR__ . '/../utils/JWT.php';
|
|
|
|
$token_payload = ["user_id" => $result['user']['id']];
|
|
$token = JWT::generate($token_payload, $this->jwt_secret);
|
|
|
|
http_response_code(200);
|
|
echo json_encode([
|
|
"success" => true,
|
|
"token" => $token,
|
|
"user" => [
|
|
"id" => $result['user']['id'],
|
|
"username" => $result['user']['username'],
|
|
"email" => $result['user']['email'],
|
|
"pairing_code" => $result['user']['pairing_code'],
|
|
"partner_id" => $result['user']['partner_id']
|
|
],
|
|
"partner_id" => $result['user']['partner_id'] // On utilise bien le résultat de la requête
|
|
]);
|
|
} else {
|
|
http_response_code(401);
|
|
echo json_encode(["success" => false, "message" => "Email ou mot de passe incorrect."]);
|
|
}
|
|
}
|
|
|
|
// --- INTERCEPTE LA LIAISON DE COMPTES ---
|
|
public function link($data) {
|
|
if (empty($data['user_id']) || empty($data['partner_code'])) {
|
|
http_response_code(400);
|
|
echo json_encode(["success" => false, "message" => "ID utilisateur et code partenaire requis."]);
|
|
return;
|
|
}
|
|
|
|
$result = $this->userModel->linkPartner($data['user_id'], $data['partner_code']);
|
|
|
|
if ($result['success']) {
|
|
http_response_code(200);
|
|
} else {
|
|
http_response_code(400);
|
|
}
|
|
|
|
echo json_encode($result);
|
|
}
|
|
|
|
// --- INTERCEPTE LA VÉRIFICATION DU STATUT ---
|
|
public function pairingStatus($data) {
|
|
if (empty($data['user_id'])) {
|
|
http_response_code(400);
|
|
echo json_encode(["success" => false, "message" => "ID utilisateur requis."]);
|
|
return;
|
|
}
|
|
|
|
$result = $this->userModel->getPairingStatus($data['user_id']);
|
|
http_response_code($result['success'] ? 200 : 400);
|
|
echo json_encode($result);
|
|
}
|
|
|
|
// --- INTERCEPTE LA DÉLIAISON ---
|
|
public function unlink($data) {
|
|
if (empty($data['user_id'])) {
|
|
http_response_code(400);
|
|
echo json_encode(["success" => false, "message" => "ID utilisateur requis."]);
|
|
return;
|
|
}
|
|
|
|
$result = $this->userModel->unlinkPartner($data['user_id']);
|
|
http_response_code($result['success'] ? 200 : 400);
|
|
echo json_encode($result);
|
|
}
|
|
} |