<?php
namespace App\Controller;
use Doctrine\DBAL\Connection;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
abstract class BaseController extends AbstractController
{
protected function getAuthorizedUser(Request $request, Connection $db): ?array
{
$sessionHash = $request->getSession()->get('hash');
if ($sessionHash) {
$user = $db->fetchAssociative('SELECT * FROM users WHERE hash = ? LIMIT 1', [$sessionHash]);
if ($user) {
return $user;
}
}
$token = (string) $request->cookies->get('auth_token', '');
if ($token === '') {
return null;
}
$user = $db->fetchAssociative(
'SELECT * FROM users WHERE auth_token_hash = ? LIMIT 1',
[hash('sha256', $token)]
);
if ($user) {
$request->getSession()->set('hash', $user['hash']);
return $user;
}
return null;
}
protected function publicUser(?array $user): ?array
{
if (!$user) {
return null;
}
return [
'id' => (int) $user['id'],
'login' => (string) $user['login'],
'email' => (string) $user['email'],
'balance' => (float) $user['balance'],
'created_at' => (string) $user['created_at'],
];
}
}