<?php

use Illuminate\Support\Facades\Route;
use Illuminate\Support\Facades\URL;
use App\Models\User;
use Illuminate\Support\Facades\Auth;

/*
|--------------------------------------------------------------------------
| API Routes for Ordiges app
|--------------------------------------------------------------------------
*/

// On restreint l'accès à ces méthodes par addresse IP
Route::middleware('restrictIp')->group(function() {

    // L'utilisateur demande un lien de connexion
    Route::get('getAutologin/{user}', function ($user) {
        // Vérifier que l'utilisateur existe
        $user_aptimap = User::where("email", $user)->first();
    
        if($user_aptimap !== null) {
            // Retourner la route temporaire
            $url = URL::temporarySignedRoute(
                'autologin', now()->addMinutes(30), ['user' => $user_aptimap] // Validité de 30 minutes
            );
            if (request()->wantsJson()) {
                return response()->json([
                    'result' => 'success',
                    'expiration_date' => now()->addMinutes(30),
                    'login_url' => $url,
                ]);
            } else {
                echo $url;
            }
        } else {
            abort(404);
        }
    })->name('getAutologin');
    
    // L'utilisateur se connecte à partir du lien généré, si le lien est valide
    Route::get('autologin/{user}', function (User $user) {
        Auth::login($user);
        return redirect()->route('home');
    })->name('autologin')->middleware('signed');
});