validate([ 'email' => 'required|string|email', 'password' => 'required|string' ]); // Log::info('Tentative de connexion', $request->all()); $user = User::where('email', $fields['email'])->first(); // Vérification du mot de passe haché (Sécurité) if(!$user || !Hash::check($fields['password'], $user->password)) { return response([ 'status' => 'error', 'message' => 'Identifiants invalides' ], 401); } // Vérification si le compte est actif if (!$user->is_active) { return response([ 'status' => 'error', 'message' => 'Votre compte a été désactivé par un administrateur.' ], 403); } // Log::info('Email reçu: ' . $request->email); // Log::info('Password saisi: ' . $request->password); // Log::info('Hachage en BDD: ' . $user->password); // Création du Token pour le mobile $token = $user->createToken('android_token')->plainTextToken; return response([ 'status' => 'success', 'user' => $user, 'token' => $token ], 200); } public function register(Request $request) { // 1. Validation des données (Standard Qualité) $validator = Validator::make($request->all(), [ 'name' => 'required|string|max:255', 'email' => 'required|string|email|max:255|unique:users', 'password' => 'required|string|min:8|confirmed', ]); Log::info('Tentative de création', $request->all()); if ($validator->fails()) { Log::info( $validator->errors()); return response()->json([ 'status' => 'error', 'errors' => $validator->errors() ], 422); } // 2. Création de l'utilisateur (Respect du MCD) $user = User::create([ 'name' => $request->name, 'email' => $request->email, 'password' => Hash::make($request->password), // Chiffrement obligatoire ]); // 3. Génération du token pour le mobile $token = $user->createToken('android_token')->plainTextToken; return response()->json([ 'status' => 'success', 'message' => 'Compte créé avec succès', 'user' => $user, 'token' => $token ], 201); } public function updateProfile(Request $request) { $user = $request->user(); $request->validate([ 'current_password' => 'required', 'email' => [ 'sometimes', 'email', Rule::unique('users')->ignore($user->id) // Empêche les doublons en BDD ], ]); // 2. Vérification de sécurité (RGPD/Confidentialité) if (!Hash::check($request->current_password, $user->password)) { return response()->json([ 'status' => 'error', 'message' => 'Le mot de passe actuel est incorrect' ], 403); } // 3. Mise à jour dynamique (Evolutivité) $data = $request->except(['current_password', 'password', 'id']); $user->fill($data); $user->save(); return response()->json([ 'status' => 'success', 'user' => $user ]); } }