<?php
require_once 'core/Auth.php';
require_once 'models/User.php';

class AuthController {
    public function login($input) {
        $username = $input['usuario'] ?? null;
        $password = $input['contrasena'] ?? null;
        $clientId = $input['id_cliente'] ?? null;

        if (!$username || !$password || !$clientId) {
            return ['status' => 'error', 'message' => 'Faltan credenciales'];
        }

        $user = User::find($username, $password, $clientId);

        if ($user) {
            $token = Auth::generateToken($user['user_api'], $clientId);
             User::guardarToken($user['user_api'], $clientId, $token);
            return [
                'status' => 'success',
                'token' => $token,
                'expires_in' => JWT_EXPIRE
            ];
        }

        return ['status' => 'error', 'message' => 'Credenciales inv¨¢lidas'];
    }
    
     public function create($input) {
        $payload = Middleware::requireAuth(); // valida JWT y devuelve los datos del token

        // Validar que ese token sea el mismo guardado en la BD
        $headers = getallheaders();
        $token = str_replace('Bearer ', '', $headers['Authorization'] ?? '');

        $username = $payload->uid ?? null;
        $clientId = $payload->cid ?? null;

        if (!User::validarTokenEnBD($username, $clientId, $token)) {
            http_response_code(401);
            return ['status' => 'error', 'message' => 'Token no autorizado (inconsistencia con la base de datos)'];
        }

        // Aqu¨ª contin¨²a tu l¨®gica normal de creaci¨®n
        return [
            'status' => 'success',
            'message' => 'Cuenta registrada correctamente (simulado)'
        ];
    }
    
}
