chg: dev: small refactors on back-end #8
This commit is contained in:
@@ -13,6 +13,7 @@ namespace App\Controller;
|
|||||||
use App\Entity\User;
|
use App\Entity\User;
|
||||||
use App\Security\PasskeyToken;
|
use App\Security\PasskeyToken;
|
||||||
use App\Service\WebAuthnService;
|
use App\Service\WebAuthnService;
|
||||||
|
use Exception;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
@@ -25,6 +26,7 @@ use Webauthn\PublicKeyCredentialCreationOptions;
|
|||||||
use Webauthn\PublicKeyCredentialParameters;
|
use Webauthn\PublicKeyCredentialParameters;
|
||||||
use Webauthn\PublicKeyCredentialRpEntity;
|
use Webauthn\PublicKeyCredentialRpEntity;
|
||||||
use Webauthn\PublicKeyCredentialUserEntity;
|
use Webauthn\PublicKeyCredentialUserEntity;
|
||||||
|
use function random_bytes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class WebAuthnController
|
* Class WebAuthnController
|
||||||
@@ -78,7 +80,7 @@ class WebAuthnController extends AbstractController
|
|||||||
$creationOptions = PublicKeyCredentialCreationOptions::create(
|
$creationOptions = PublicKeyCredentialCreationOptions::create(
|
||||||
$rpEntity,
|
$rpEntity,
|
||||||
$userEntity,
|
$userEntity,
|
||||||
\random_bytes(32),
|
random_bytes(32),
|
||||||
$credentialParameters,
|
$credentialParameters,
|
||||||
$authenticatorSelectionCriteria,
|
$authenticatorSelectionCriteria,
|
||||||
PublicKeyCredentialCreationOptions::ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT
|
PublicKeyCredentialCreationOptions::ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT
|
||||||
@@ -113,7 +115,7 @@ class WebAuthnController extends AbstractController
|
|||||||
];
|
];
|
||||||
|
|
||||||
return new JsonResponse($response);
|
return new JsonResponse($response);
|
||||||
} catch (\Exception $e) {
|
} catch (Exception $e) {
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
['error' => $e->getMessage()],
|
['error' => $e->getMessage()],
|
||||||
Response::HTTP_BAD_REQUEST
|
Response::HTTP_BAD_REQUEST
|
||||||
@@ -155,7 +157,7 @@ class WebAuthnController extends AbstractController
|
|||||||
$request->getSession()->remove('webauthn_credential_name');
|
$request->getSession()->remove('webauthn_credential_name');
|
||||||
|
|
||||||
return new JsonResponse(['success' => true]);
|
return new JsonResponse(['success' => true]);
|
||||||
} catch (\Exception $e) {
|
} catch (Exception $e) {
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
['error' => 'Registration failed: ' . $e->getMessage()],
|
['error' => 'Registration failed: ' . $e->getMessage()],
|
||||||
Response::HTTP_BAD_REQUEST
|
Response::HTTP_BAD_REQUEST
|
||||||
@@ -219,7 +221,7 @@ class WebAuthnController extends AbstractController
|
|||||||
}
|
}
|
||||||
|
|
||||||
return new JsonResponse(['error' => 'Credential not found'], Response::HTTP_NOT_FOUND);
|
return new JsonResponse(['error' => 'Credential not found'], Response::HTTP_NOT_FOUND);
|
||||||
} catch (\Exception $e) {
|
} catch (Exception $e) {
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
['error' => $e->getMessage()],
|
['error' => $e->getMessage()],
|
||||||
Response::HTTP_BAD_REQUEST
|
Response::HTTP_BAD_REQUEST
|
||||||
@@ -232,7 +234,7 @@ class WebAuthnController extends AbstractController
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
/** Generate challenge */
|
/** Generate challenge */
|
||||||
$challenge = \random_bytes(32);
|
$challenge = random_bytes(32);
|
||||||
|
|
||||||
/** Store in session for verification later */
|
/** Store in session for verification later */
|
||||||
$request->getSession()->set('webauthn_request_challenge', $challenge);
|
$request->getSession()->set('webauthn_request_challenge', $challenge);
|
||||||
@@ -250,7 +252,7 @@ class WebAuthnController extends AbstractController
|
|||||||
];
|
];
|
||||||
|
|
||||||
return new JsonResponse($response);
|
return new JsonResponse($response);
|
||||||
} catch (\Exception $e) {
|
} catch (Exception $e) {
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
['error' => $e->getMessage()],
|
['error' => $e->getMessage()],
|
||||||
Response::HTTP_BAD_REQUEST
|
Response::HTTP_BAD_REQUEST
|
||||||
@@ -304,7 +306,7 @@ class WebAuthnController extends AbstractController
|
|||||||
'redirect' => '/',
|
'redirect' => '/',
|
||||||
'message' => 'Successfully authenticated with passkey',
|
'message' => 'Successfully authenticated with passkey',
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (Exception $e) {
|
||||||
return new JsonResponse(
|
return new JsonResponse(
|
||||||
['error' => $e->getMessage()],
|
['error' => $e->getMessage()],
|
||||||
Response::HTTP_BAD_REQUEST
|
Response::HTTP_BAD_REQUEST
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ use DateTime;
|
|||||||
* @link www.splendidbear.org
|
* @link www.splendidbear.org
|
||||||
* @since 2026. 04. 20.
|
* @since 2026. 04. 20.
|
||||||
*/
|
*/
|
||||||
readonly class ProfileChartDataFactory
|
readonly final class ProfileChartDataFactory
|
||||||
{
|
{
|
||||||
public function __construct(private PlayedGameRepository $repo) { }
|
public function __construct(private PlayedGameRepository $repo) { }
|
||||||
|
|
||||||
|
|||||||
@@ -29,8 +29,7 @@ use Doctrine\ORM\Mapping\Table;
|
|||||||
* @link www.splendidbear.org
|
* @link www.splendidbear.org
|
||||||
* @since 2026. 04. 15.
|
* @since 2026. 04. 15.
|
||||||
*/
|
*/
|
||||||
#[Entity(repositoryClass: ContactMessageRepository::class)]
|
#[Entity(repositoryClass: ContactMessageRepository::class), Table(name: 'contact_messages')]
|
||||||
#[Table(name: 'contact_messages')]
|
|
||||||
class ContactMessage
|
class ContactMessage
|
||||||
{
|
{
|
||||||
#[Id, GeneratedValue, Column]
|
#[Id, GeneratedValue, Column]
|
||||||
|
|||||||
@@ -36,8 +36,7 @@ use Symfony\Component\Security\Core\User\UserInterface;
|
|||||||
* @link www.splendidbear.org
|
* @link www.splendidbear.org
|
||||||
* @since 2026. 04. 09.
|
* @since 2026. 04. 09.
|
||||||
*/
|
*/
|
||||||
#[Table(name: 'app_user')]
|
#[Entity(repositoryClass: UserRepository::class), Table(name: 'app_user')]
|
||||||
#[Entity(repositoryClass: UserRepository::class)]
|
|
||||||
#[UniqueEntity(fields: ['username'], message: 'This username is already taken.')]
|
#[UniqueEntity(fields: ['username'], message: 'This username is already taken.')]
|
||||||
#[UniqueEntity(fields: ['email'], message: 'This email address is already registered.')]
|
#[UniqueEntity(fields: ['email'], message: 'This email address is already registered.')]
|
||||||
class User implements UserInterface, PasswordAuthenticatedUserInterface, TotpTwoFactorInterface, BackupCodeInterface
|
class User implements UserInterface, PasswordAuthenticatedUserInterface, TotpTwoFactorInterface, BackupCodeInterface
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ use Doctrine\ORM\Mapping\Table;
|
|||||||
* @link www.splendidbear.org
|
* @link www.splendidbear.org
|
||||||
* @since 2026. 04. 20.
|
* @since 2026. 04. 20.
|
||||||
*/
|
*/
|
||||||
#[Entity(repositoryClass: UserStatsRepository::class, readOnly: true), Table]
|
#[Entity(repositoryClass: UserStatsRepository::class, readOnly: true)]
|
||||||
class UserStats
|
class UserStats
|
||||||
{
|
{
|
||||||
#[Id, Column(name: 'user_id')]
|
#[Id, Column(name: 'user_id')]
|
||||||
|
|||||||
@@ -33,8 +33,7 @@ use RuntimeException;
|
|||||||
* @link www.splendidbear.org
|
* @link www.splendidbear.org
|
||||||
* @since 2026. 04. 12.
|
* @since 2026. 04. 12.
|
||||||
*/
|
*/
|
||||||
#[Table(name: 'app_webauthn_credential')]
|
#[Entity(repositoryClass: WebAuthnCredentialRepository::class), Table(name: 'app_webauthn_credential')]
|
||||||
#[Entity(repositoryClass: WebAuthnCredentialRepository::class)]
|
|
||||||
class WebAuthnCredential
|
class WebAuthnCredential
|
||||||
{
|
{
|
||||||
#[Id, GeneratedValue, Column]
|
#[Id, GeneratedValue, Column]
|
||||||
|
|||||||
Reference in New Issue
Block a user