src/Controller/BaseController.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Doctrine\DBAL\Connection;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\HttpFoundation\Request;
  6. abstract class BaseController extends AbstractController
  7. {
  8.     protected function getAuthorizedUser(Request $requestConnection $db): ?array
  9.     {
  10.         $sessionHash $request->getSession()->get('hash');
  11.         if ($sessionHash) {
  12.             $user $db->fetchAssociative('SELECT * FROM users WHERE hash = ? LIMIT 1', [$sessionHash]);
  13.             if ($user) {
  14.                 return $user;
  15.             }
  16.         }
  17.         $token = (string) $request->cookies->get('auth_token''');
  18.         if ($token === '') {
  19.             return null;
  20.         }
  21.         $user $db->fetchAssociative(
  22.             'SELECT * FROM users WHERE auth_token_hash = ? LIMIT 1',
  23.             [hash('sha256'$token)]
  24.         );
  25.         if ($user) {
  26.             $request->getSession()->set('hash'$user['hash']);
  27.             return $user;
  28.         }
  29.         return null;
  30.     }
  31.     protected function publicUser(?array $user): ?array
  32.     {
  33.         if (!$user) {
  34.             return null;
  35.         }
  36.         return [
  37.             'id' => (int) $user['id'],
  38.             'login' => (string) $user['login'],
  39.             'email' => (string) $user['email'],
  40.             'balance' => (float) $user['balance'],
  41.             'created_at' => (string) $user['created_at'],
  42.         ];
  43.     }
  44. }