|
- <?php
-
- declare(strict_types=1);
-
- namespace App\Controllers;
-
- use Core\Controller;
- use Core\Request;
- use Core\Response;
-
- class AuthController extends Controller
- {
- public function login(): Response
- {
- if (auth()->check()) {
- return $this->redirect('/');
- }
-
- return $this->redirect(auth()->beginLogin());
- }
-
- public function callback(): Response
- {
- $request = Request::capture();
- $error = (string) $request->input('error', '');
-
- if ($error !== '') {
- $desc = (string) $request->input('error_description', $error);
- return new Response('Authentication error: ' . e($desc), 400);
- }
-
- $code = (string) $request->input('code', '');
- $state = (string) $request->input('state', '');
-
- if ($code === '' || $state === '') {
- return $this->redirect('/login');
- }
-
- try {
- auth()->handleCallback($code, $state);
- } catch (\Throwable $e) {
- return new Response('Login failed: ' . e($e->getMessage()), 400);
- }
-
- return $this->redirect('/');
- }
-
- public function logout(): Response
- {
- return $this->redirect(auth()->logout());
- }
- }
|