validate($this->request->post('g-recaptcha-response'));
+ $captchaResponse = $captchaValidator->validate(\Container::$request->post('g-recaptcha-response'));
if (!$captchaResponse['success']) {
return new JsonContent(['error' => ['errorText' => 'reCAPTCHA challenge failed. Please try again!']]);
}
}
- if (filter_var($this->request->post('email'), FILTER_VALIDATE_EMAIL) === false) {
+ if (filter_var(\Container::$request->post('email'), FILTER_VALIDATE_EMAIL) === false) {
return new JsonContent(['error' => ['errorText' => 'The given email address is not valid.']]);
}
- if ($this->request->session()->has('tmp_user_data')) {
- $tmpUserData = $this->request->session()->get('tmp_user_data');
+ if (\Container::$request->session()->has('tmp_user_data')) {
+ $tmpUserData = \Container::$request->session()->get('tmp_user_data');
$tmpUser = new User();
$tmpUser->setPassword($tmpUserData['password_hashed']);
- if (!$tmpUser->checkPassword($this->request->post('password'))) {
+ if (!$tmpUser->checkPassword(\Container::$request->post('password'))) {
return new JsonContent(['error' => ['errorText' => 'The given passwords do not match.']]);
}
} else {
- if (strlen($this->request->post('password')) < 6) {
+ if (strlen(\Container::$request->post('password')) < 6) {
return new JsonContent([
'error' => [
'errorText' => 'The given password is too short. Please choose a password that is at least 6 characters long!'
@@ -336,19 +328,17 @@ class LoginController
]);
}
- if ($this->request->post('password') !== $this->request->post('password_confirm')) {
+ if (\Container::$request->post('password') !== \Container::$request->post('password_confirm')) {
return new JsonContent(['error' => ['errorText' => 'The given passwords do not match.']]);
}
}
$user = new User();
- $user->setEmail($this->request->post('email'));
- $user->setPlainPassword($this->request->post('password'));
+ $user->setEmail(\Container::$request->post('email'));
+ $user->setPlainPassword(\Container::$request->post('password'));
$user->setCreatedDate(new DateTime());
- \Container::$dbConnection->startTransaction();
-
- $this->pdm->saveToDb($user);
+ \Container::$persistentDataManager->saveToDb($user);
$token = bin2hex(random_bytes(16));
@@ -357,25 +347,23 @@ class LoginController
$confirmation->setToken($token);
$confirmation->setLastSentDate(new DateTime());
- $this->pdm->saveToDb($confirmation);
-
- \Container::$dbConnection->commit();
+ \Container::$persistentDataManager->saveToDb($confirmation);
$this->sendConfirmationEmail($user->getEmail(), $token, $user->getCreatedDate());
- $this->request->session()->delete('tmp_user_data');
+ \Container::$request->session()->delete('tmp_user_data');
return new JsonContent(['success' => true]);
}
public function signupWithGoogle(): IContent
{
- if ($this->request->user() !== null) {
+ if (\Container::$request->user() !== null) {
$this->deleteRedirectUrl();
return new JsonContent(['success' => true]);
}
- $userData = $this->request->session()->get('google_user_data');
+ $userData = \Container::$request->session()->get('google_user_data');
$user = $this->userRepository->getByEmail($userData['email']);
@@ -392,14 +380,14 @@ class LoginController
$user->setActive(true);
$user->setGoogleSub($userData['sub']);
- $this->pdm->saveToDb($user);
+ \Container::$persistentDataManager->saveToDb($user);
if ($sendWelcomeEmail) {
$this->sendWelcomeEmail($user->getEmail());
}
- $this->request->session()->delete('google_user_data');
- $this->request->setUser($user);
+ \Container::$request->session()->delete('google_user_data');
+ \Container::$request->setUser($user);
$this->deleteRedirectUrl();
return new JsonContent(['success' => true]);
@@ -407,43 +395,39 @@ class LoginController
public function resetSignup(): IContent
{
- $this->request->session()->delete('tmp_user_data');
+ \Container::$request->session()->delete('tmp_user_data');
return new JsonContent(['success' => true]);
}
public function resetGoogleSignup(): IContent
{
- $this->request->session()->delete('google_user_data');
+ \Container::$request->session()->delete('google_user_data');
return new JsonContent(['success' => true]);
}
public function activate()
{
- if ($this->request->user() !== null) {
+ if (\Container::$request->user() !== null) {
$this->deleteRedirectUrl();
return new Redirect($this->redirectUrl, IRedirect::TEMPORARY);
}
- $confirmation = $this->userConfirmationRepository->getByToken(substr($this->request->query('token'), 0, 32));
+ $confirmation = $this->userConfirmationRepository->getByToken(substr(\Container::$request->query('token'), 0, 32));
if ($confirmation === null) {
return new HtmlContent('login/activate');
}
- \Container::$dbConnection->startTransaction();
-
- $this->pdm->deleteFromDb($confirmation);
+ \Container::$persistentDataManager->deleteFromDb($confirmation);
$user = $this->userRepository->getById($confirmation->getUserId());
$user->setActive(true);
- $this->pdm->saveToDb($user);
+ \Container::$persistentDataManager->saveToDb($user);
- \Container::$dbConnection->commit();
-
- $this->request->setUser($user);
+ \Container::$request->setUser($user);
$this->deleteRedirectUrl();
return new Redirect($this->redirectUrl, IRedirect::TEMPORARY);
@@ -451,37 +435,33 @@ class LoginController
public function cancel()
{
- if ($this->request->user() !== null) {
+ if (\Container::$request->user() !== null) {
$this->deleteRedirectUrl();
return new Redirect($this->redirectUrl, IRedirect::TEMPORARY);
}
- $confirmation = $this->userConfirmationRepository->getByToken(substr($this->request->query('token'), 0, 32));
+ $confirmation = $this->userConfirmationRepository->getByToken(substr(\Container::$request->query('token'), 0, 32));
if ($confirmation === null) {
return new HtmlContent('login/cancel', ['success' => false]);
}
- \Container::$dbConnection->startTransaction();
-
- $this->pdm->deleteFromDb($confirmation);
+ \Container::$persistentDataManager->deleteFromDb($confirmation);
$user = $this->userRepository->getById($confirmation->getUserId());
foreach ($this->userPlayedPlaceRepository->getAllByUser($user) as $userPlayedPlace) {
- $this->pdm->deleteFromDb($userPlayedPlace);
+ \Container::$persistentDataManager->deleteFromDb($userPlayedPlace);
}
- $this->pdm->deleteFromDb($user);
-
- \Container::$dbConnection->commit();
+ \Container::$persistentDataManager->deleteFromDb($user);
return new HtmlContent('login/cancel', ['success' => true]);
}
public function requestPasswordReset(): IContent
{
- if ($this->request->user() !== null) {
+ if (\Container::$request->user() !== null) {
$this->deleteRedirectUrl();
return new JsonContent([
'redirect' => [
@@ -491,18 +471,18 @@ class LoginController
}
if (!empty($_ENV['RECAPTCHA_SITEKEY'])) {
- if (!$this->request->post('g-recaptcha-response')) {
+ if (!\Container::$request->post('g-recaptcha-response')) {
return new JsonContent(['error' => ['errorText' => 'Please check "I\'m not a robot" in the reCAPTCHA box!']]);
}
$captchaValidator = new CaptchaValidator();
- $captchaResponse = $captchaValidator->validate($this->request->post('g-recaptcha-response'));
+ $captchaResponse = $captchaValidator->validate(\Container::$request->post('g-recaptcha-response'));
if (!$captchaResponse['success']) {
return new JsonContent(['error' => ['errorText' => 'reCAPTCHA challenge failed. Please try again!']]);
}
}
- $user = $this->userRepository->getByEmail($this->request->post('email'));
+ $user = $this->userRepository->getByEmail(\Container::$request->post('email'));
if ($user === null) {
return new JsonContent([
@@ -541,15 +521,11 @@ class LoginController
$passwordResetter->setToken($token);
$passwordResetter->setExpiresDate($expires);
- \Container::$dbConnection->startTransaction();
-
if ($existingResetter !== null) {
- $this->pdm->deleteFromDb($existingResetter);
+ \Container::$persistentDataManager->deleteFromDb($existingResetter);
}
- $this->pdm->saveToDb($passwordResetter);
-
- \Container::$dbConnection->commit();
+ \Container::$persistentDataManager->saveToDb($passwordResetter);
$this->sendPasswordResetEmail($user->getEmail(), $token, $expires);
@@ -559,7 +535,7 @@ class LoginController
public function resetPassword(): IContent
{
- if ($this->request->user() !== null) {
+ if (\Container::$request->user() !== null) {
$this->deleteRedirectUrl();
return new JsonContent([
'redirect' => [
@@ -568,7 +544,7 @@ class LoginController
]);
}
- $token = $this->request->query('token');
+ $token = \Container::$request->query('token');
$resetter = $this->userPasswordResetterRepository->getByToken($token);
if ($resetter === null || $resetter->getExpiresDate() < new DateTime()) {
@@ -579,7 +555,7 @@ class LoginController
]);
}
- if (strlen($this->request->post('password')) < 6) {
+ if (strlen(\Container::$request->post('password')) < 6) {
return new JsonContent([
'error' => [
'errorText' => 'The given password is too short. Please choose a password that is at least 6 characters long!'
@@ -587,22 +563,18 @@ class LoginController
]);
}
- if ($this->request->post('password') !== $this->request->post('password_confirm')) {
+ if (\Container::$request->post('password') !== \Container::$request->post('password_confirm')) {
return new JsonContent(['error' => ['errorText' => 'The given passwords do not match.']]);
}
- \Container::$dbConnection->startTransaction();
-
- $this->pdm->deleteFromDb($resetter);
+ \Container::$persistentDataManager->deleteFromDb($resetter);
$user = $this->userRepository->getById($resetter->getUserId());
- $user->setPlainPassword($this->request->post('password'));
+ $user->setPlainPassword(\Container::$request->post('password'));
- $this->pdm->saveToDb($user);
+ \Container::$persistentDataManager->saveToDb($user);
- \Container::$dbConnection->commit();
-
- $this->request->setUser($user);
+ \Container::$request->setUser($user);
$this->deleteRedirectUrl();
return new JsonContent(['success' => true]);
@@ -615,9 +587,9 @@ class LoginController
$mail->setSubject('Welcome to ' . $_ENV['APP_NAME'] . ' - Activate your account');
$mail->setBodyFromTemplate('signup', [
'EMAIL' => $email,
- 'ACTIVATE_LINK' => $this->request->getBase() .
+ 'ACTIVATE_LINK' => \Container::$request->getBase() .
\Container::$routeCollection->getRoute('signup.activate')->generateLink(['token' => $token]),
- 'CANCEL_LINK' => $this->request->getBase() .
+ 'CANCEL_LINK' => \Container::$request->getBase() .
\Container::$routeCollection->getRoute('signup.cancel')->generateLink(['token' => $token]),
'ACTIVATABLE_UNTIL' => (clone $created)->add(new DateInterval('P1D'))->format('Y-m-d H:i T')
]);
@@ -634,7 +606,7 @@ class LoginController
$confirmation->setLastSentDate(new DateTime());
- $this->pdm->saveToDb($confirmation);
+ \Container::$persistentDataManager->saveToDb($confirmation);
$this->sendConfirmationEmail($user->getEmail(), $confirmation->getToken(), $user->getCreatedDate());
@@ -659,7 +631,7 @@ class LoginController
$mail->setSubject($_ENV['APP_NAME'] . ' - Password reset');
$mail->setBodyFromTemplate('password-reset', [
'EMAIL' => $email,
- 'RESET_LINK' => $this->request->getBase() .
+ 'RESET_LINK' => \Container::$request->getBase() .
\Container::$routeCollection->getRoute('password-reset')->generateLink(['token' => $token]),
'EXPIRES' => $expires->format('Y-m-d H:i T')
]);
@@ -668,6 +640,6 @@ class LoginController
private function deleteRedirectUrl(): void
{
- $this->request->session()->delete('redirect_after_login');
+ \Container::$request->session()->delete('redirect_after_login');
}
}
diff --git a/src/Controller/MapAdminController.php b/src/Controller/MapAdminController.php
index 47a972f..dd9467b 100644
--- a/src/Controller/MapAdminController.php
+++ b/src/Controller/MapAdminController.php
@@ -4,13 +4,11 @@ use DateTime;
use SokoWeb\Interfaces\Authentication\IUser;
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
use SokoWeb\Interfaces\Authorization\ISecured;
-use SokoWeb\Interfaces\Request\IRequest;
use SokoWeb\Interfaces\Response\IContent;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\Map;
use MapGuesser\PersistentData\Model\Place;
use MapGuesser\PersistentData\Model\PlaceInChallenge;
-use SokoWeb\PersistentData\PersistentDataManager;
use MapGuesser\Repository\ChallengeRepository;
use MapGuesser\Repository\GuessRepository;
use MapGuesser\Repository\MapRepository;
@@ -27,10 +25,6 @@ class MapAdminController implements IAuthenticationRequired, ISecured
{
private static string $unnamedMapName = '[unnamed map]';
- private IRequest $request;
-
- private PersistentDataManager $pdm;
-
private MapRepository $mapRepository;
private PlaceRepository $placeRepository;
@@ -45,10 +39,8 @@ class MapAdminController implements IAuthenticationRequired, ISecured
private UserInChallengeRepository $userInChallengeRepository;
- public function __construct(IRequest $request)
+ public function __construct()
{
- $this->request = $request;
- $this->pdm = new PersistentDataManager();
$this->mapRepository = new MapRepository();
$this->placeRepository = new PlaceRepository();
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
@@ -65,12 +57,12 @@ class MapAdminController implements IAuthenticationRequired, ISecured
public function authorize(): bool
{
- return $this->request->user()->hasPermission(IUser::PERMISSION_ADMIN);
+ return \Container::$request->user()->hasPermission(IUser::PERMISSION_ADMIN);
}
public function getMapEditor(): IContent
{
- $mapId = (int) $this->request->query('mapId');
+ $mapId = (int) \Container::$request->query('mapId');
if ($mapId) {
$map = $this->mapRepository->getById($mapId);
@@ -93,7 +85,7 @@ class MapAdminController implements IAuthenticationRequired, ISecured
public function getPlace(): IContent
{
- $placeId = (int) $this->request->query('placeId');
+ $placeId = (int) \Container::$request->query('placeId');
$place = $this->placeRepository->getById($placeId);
@@ -102,16 +94,14 @@ class MapAdminController implements IAuthenticationRequired, ISecured
public function saveMap(): IContent
{
- $mapId = (int) $this->request->query('mapId');
-
- \Container::$dbConnection->startTransaction();
+ $mapId = (int) \Container::$request->query('mapId');
if ($mapId) {
$map = $this->mapRepository->getById($mapId);
} else {
$map = new Map();
$map->setName(self::$unnamedMapName);
- $this->pdm->saveToDb($map);
+ \Container::$persistentDataManager->saveToDb($map);
}
if (isset($_POST['added'])) {
@@ -133,7 +123,7 @@ class MapAdminController implements IAuthenticationRequired, ISecured
$place->setPanoIdCachedTimestampDate(new DateTime('-1 day'));
}
- $this->pdm->saveToDb($place);
+ \Container::$persistentDataManager->saveToDb($place);
$addedIds[] = ['tempId' => $placeRaw['id'], 'id' => $place->getId()];
}
@@ -155,7 +145,7 @@ class MapAdminController implements IAuthenticationRequired, ISecured
));
$place->setPanoIdCachedTimestampDate(new DateTime('-1 day'));
- $this->pdm->saveToDb($place);
+ \Container::$persistentDataManager->saveToDb($place);
}
}
@@ -184,26 +174,20 @@ class MapAdminController implements IAuthenticationRequired, ISecured
$map->setUnlisted((bool)$_POST['unlisted']);
}
- $this->pdm->saveToDb($map);
-
- \Container::$dbConnection->commit();
+ \Container::$persistentDataManager->saveToDb($map);
return new JsonContent(['mapId' => $map->getId(), 'added' => $addedIds]);
}
public function deleteMap(): IContent
{
- $mapId = (int) $this->request->query('mapId');
+ $mapId = (int) \Container::$request->query('mapId');
$map = $this->mapRepository->getById($mapId);
- \Container::$dbConnection->startTransaction();
-
$this->deletePlaces($map);
- $this->pdm->deleteFromDb($map);
-
- \Container::$dbConnection->commit();
+ \Container::$persistentDataManager->deleteFromDb($map);
return new JsonContent(['success' => true]);
}
@@ -211,14 +195,14 @@ class MapAdminController implements IAuthenticationRequired, ISecured
private function deletePlace(Place $place): void
{
foreach ($this->userPlayedPlaceRepository->getAllByPlace($place) as $userPlayedPlace) {
- $this->pdm->deleteFromDb($userPlayedPlace);
+ \Container::$persistentDataManager->deleteFromDb($userPlayedPlace);
}
foreach ($this->challengeRepository->getAllByPlace($place) as $challenge) {
$this->deleteChallenge($challenge);
}
- $this->pdm->deleteFromDb($place);
+ \Container::$persistentDataManager->deleteFromDb($place);
}
private function deletePlaces(Map $map): void
@@ -231,18 +215,18 @@ class MapAdminController implements IAuthenticationRequired, ISecured
private function deleteChallenge(Challenge $challenge): void
{
foreach ($this->userInChallengeRepository->getAllByChallenge($challenge) as $userInChallenge) {
- $this->pdm->deleteFromDb($userInChallenge);
+ \Container::$persistentDataManager->deleteFromDb($userInChallenge);
}
foreach ($this->guessRepository->getAllInChallenge($challenge, [PlaceInChallenge::class]) as $guess) {
- $this->pdm->deleteFromDb($guess);
+ \Container::$persistentDataManager->deleteFromDb($guess);
}
foreach ($this->placeInChallengeRepository->getAllByChallenge($challenge) as $placeInChallenge) {
- $this->pdm->deleteFromDb($placeInChallenge);
+ \Container::$persistentDataManager->deleteFromDb($placeInChallenge);
}
- $this->pdm->deleteFromDb($challenge);
+ \Container::$persistentDataManager->deleteFromDb($challenge);
}
private function calculateMapBounds(Map $map): Bounds
diff --git a/src/Controller/MapsController.php b/src/Controller/MapsController.php
index 704d9a3..45505e9 100644
--- a/src/Controller/MapsController.php
+++ b/src/Controller/MapsController.php
@@ -4,19 +4,11 @@ use SokoWeb\Database\Query\Select;
use SokoWeb\Database\RawExpression;
use SokoWeb\Interfaces\Authentication\IUser;
use SokoWeb\Interfaces\Database\IResultSet;
-use SokoWeb\Interfaces\Request\IRequest;
use SokoWeb\Interfaces\Response\IContent;
use SokoWeb\Response\HtmlContent;
class MapsController
{
- private IRequest $request;
-
- public function __construct(IRequest $request)
- {
- $this->request = $request;
- }
-
public function getMaps(): IContent
{
//TODO: from repository - count should be added
@@ -37,7 +29,7 @@ class MapsController
$select->groupBy(['maps', 'id']);
$select->orderBy('name');
- $user = $this->request->user();
+ $user = \Container::$request->user();
$isAdmin = $user !== null && $user->hasPermission(IUser::PERMISSION_ADMIN);
if (!$isAdmin) {
$select->where(['maps', 'unlisted'], '=', false);
diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php
index 0fcb69f..2058690 100644
--- a/src/Controller/UserController.php
+++ b/src/Controller/UserController.php
@@ -3,11 +3,9 @@
use DateTime;
use SokoWeb\Http\Request;
use SokoWeb\Interfaces\Authentication\IAuthenticationRequired;
-use SokoWeb\Interfaces\Request\IRequest;
use SokoWeb\Interfaces\Response\IContent;
use SokoWeb\Interfaces\Response\IRedirect;
use SokoWeb\OAuth\GoogleOAuth;
-use SokoWeb\PersistentData\PersistentDataManager;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\Repository\GuessRepository;
use MapGuesser\Repository\UserConfirmationRepository;
@@ -21,10 +19,6 @@ use SokoWeb\Util\JwtParser;
class UserController implements IAuthenticationRequired
{
- private IRequest $request;
-
- private PersistentDataManager $pdm;
-
private UserConfirmationRepository $userConfirmationRepository;
private UserPasswordResetterRepository $userPasswordResetterRepository;
@@ -35,10 +29,8 @@ class UserController implements IAuthenticationRequired
private GuessRepository $guessRepository;
- public function __construct(IRequest $request)
+ public function __construct()
{
- $this->request = $request;
- $this->pdm = new PersistentDataManager();
$this->userConfirmationRepository = new UserConfirmationRepository();
$this->userPasswordResetterRepository = new UserPasswordResetterRepository();
$this->userPlayedPlaceRepository = new UserPlayedPlaceRepository();
@@ -56,7 +48,7 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
return new HtmlContent('account/account', ['user' => $user->toArray()]);
}
@@ -66,19 +58,19 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
$state = bin2hex(random_bytes(16));
$nonce = bin2hex(random_bytes(16));
- $this->request->session()->set('oauth_state', $state);
- $this->request->session()->set('oauth_nonce', $nonce);
+ \Container::$request->session()->set('oauth_state', $state);
+ \Container::$request->session()->set('oauth_nonce', $nonce);
$oAuth = new GoogleOAuth(new Request());
$url = $oAuth->getDialogUrl(
$state,
- $this->request->getBase() . \Container::$routeCollection->getRoute('account.googleAuthenticate-action')->generateLink(),
+ \Container::$request->getBase() . \Container::$routeCollection->getRoute('account.googleAuthenticate-action')->generateLink(),
$nonce,
$user->getEmail()
);
@@ -91,16 +83,16 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
- if ($this->request->query('state') !== $this->request->session()->get('oauth_state')) {
+ if (\Container::$request->query('state') !== \Container::$request->session()->get('oauth_state')) {
return new HtmlContent('account/google_authenticate', ['success' => false]);
}
$oAuth = new GoogleOAuth(new Request());
$tokenData = $oAuth->getToken(
- $this->request->query('code'),
- $this->request->getBase() . \Container::$routeCollection->getRoute('account.googleAuthenticate-action')->generateLink()
+ \Container::$request->query('code'),
+ \Container::$request->getBase() . \Container::$routeCollection->getRoute('account.googleAuthenticate-action')->generateLink()
);
if (!isset($tokenData['id_token'])) {
@@ -110,7 +102,7 @@ class UserController implements IAuthenticationRequired
$jwtParser = new JwtParser($tokenData['id_token']);
$idToken = $jwtParser->getPayload();
- if ($idToken['nonce'] !== $this->request->session()->get('oauth_nonce')) {
+ if ($idToken['nonce'] !== \Container::$request->session()->get('oauth_nonce')) {
return new HtmlContent('account/google_authenticate', ['success' => false]);
}
@@ -122,7 +114,7 @@ class UserController implements IAuthenticationRequired
}
$authenticatedWithGoogleUntil = new DateTime('+45 seconds');
- $this->request->session()->set('authenticated_with_google_until', $authenticatedWithGoogleUntil);
+ \Container::$request->session()->set('authenticated_with_google_until', $authenticatedWithGoogleUntil);
return new HtmlContent('account/google_authenticate', [
'success' => true,
@@ -135,7 +127,7 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
return new HtmlContent('account/delete', ['user' => $user->toArray()]);
}
@@ -145,19 +137,19 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
if (!$this->confirmUserIdentity(
$user,
- $this->request->session()->get('authenticated_with_google_until'),
- $this->request->post('password'),
+ \Container::$request->session()->get('authenticated_with_google_until'),
+ \Container::$request->post('password'),
$error
)) {
return new JsonContent(['error' => ['errorText' => $error]]);
}
- if (strlen($this->request->post('password_new')) > 0) {
- if (strlen($this->request->post('password_new')) < 6) {
+ if (strlen(\Container::$request->post('password_new')) > 0) {
+ if (strlen(\Container::$request->post('password_new')) < 6) {
return new JsonContent([
'error' => [
'errorText' => 'The given new password is too short. Please choose a password that is at least 6 characters long!'
@@ -165,7 +157,7 @@ class UserController implements IAuthenticationRequired
]);
}
- if ($this->request->post('password_new') !== $this->request->post('password_new_confirm')) {
+ if (\Container::$request->post('password_new') !== \Container::$request->post('password_new_confirm')) {
return new JsonContent([
'error' => [
'errorText' => 'The given new passwords do not match.'
@@ -173,12 +165,12 @@ class UserController implements IAuthenticationRequired
]);
}
- $user->setPlainPassword($this->request->post('password_new'));
+ $user->setPlainPassword(\Container::$request->post('password_new'));
}
- $this->pdm->saveToDb($user);
+ \Container::$persistentDataManager->saveToDb($user);
- $this->request->session()->delete('authenticated_with_google_until');
+ \Container::$request->session()->delete('authenticated_with_google_until');
return new JsonContent(['success' => true]);
}
@@ -188,46 +180,42 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
- $user = $this->request->user();
+ $user = \Container::$request->user();
if (!$this->confirmUserIdentity(
$user,
- $this->request->session()->get('authenticated_with_google_until'),
- $this->request->post('password'),
+ \Container::$request->session()->get('authenticated_with_google_until'),
+ \Container::$request->post('password'),
$error
)) {
return new JsonContent(['error' => ['errorText' => $error]]);
}
- \Container::$dbConnection->startTransaction();
-
$userConfirmation = $this->userConfirmationRepository->getByUser($user);
if ($userConfirmation !== null) {
- $this->pdm->deleteFromDb($userConfirmation);
+ \Container::$persistentDataManager->deleteFromDb($userConfirmation);
}
$userPasswordResetter = $this->userPasswordResetterRepository->getByUser($user);
if ($userPasswordResetter !== null) {
- $this->pdm->deleteFromDb($userPasswordResetter);
+ \Container::$persistentDataManager->deleteFromDb($userPasswordResetter);
}
foreach ($this->userPlayedPlaceRepository->getAllByUser($user) as $userPlayedPlace) {
- $this->pdm->deleteFromDb($userPlayedPlace);
+ \Container::$persistentDataManager->deleteFromDb($userPlayedPlace);
}
foreach ($this->userInChallengeRepository->getAllByUser($user) as $userInChallenge) {
- $this->pdm->deleteFromDb($userInChallenge);
+ \Container::$persistentDataManager->deleteFromDb($userInChallenge);
}
foreach ($this->guessRepository->getAllByUser($user) as $guess) {
- $this->pdm->deleteFromDb($guess);
+ \Container::$persistentDataManager->deleteFromDb($guess);
}
- $this->pdm->deleteFromDb($user);
+ \Container::$persistentDataManager->deleteFromDb($user);
- \Container::$dbConnection->commit();
-
- $this->request->session()->delete('authenticated_with_google_until');
+ \Container::$request->session()->delete('authenticated_with_google_until');
return new JsonContent(['success' => true]);
}
diff --git a/src/PersistentData/Model/Place.php b/src/PersistentData/Model/Place.php
index 71c015a..182955c 100644
--- a/src/PersistentData/Model/Place.php
+++ b/src/PersistentData/Model/Place.php
@@ -4,7 +4,6 @@ use DateInterval;
use DateTime;
use SokoWeb\PersistentData\Model\Model;
use SokoWeb\Http\Request;
-use SokoWeb\PersistentData\PersistentDataManager;
use MapGuesser\Util\Geo\Position;
use MapGuesser\Util\Panorama\Pov;
@@ -163,7 +162,7 @@ class Place extends Model
$this->panoIdCached = $panoId;
$this->panoIdCachedTimestamp = new DateTime();
- (new PersistentDataManager())->saveToDb($this);
+ \Container::$persistentDataManager->saveToDb($this);
return $panoId;
}
diff --git a/src/Repository/ChallengeRepository.php b/src/Repository/ChallengeRepository.php
index 60bc42f..cc4423e 100644
--- a/src/Repository/ChallengeRepository.php
+++ b/src/Repository/ChallengeRepository.php
@@ -5,20 +5,12 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\Place;
use MapGuesser\PersistentData\Model\User;
-use SokoWeb\PersistentData\PersistentDataManager;
class ChallengeRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $challengeId): ?Challenge
{
- return $this->pdm->selectFromDbById($challengeId, Challenge::class);
+ return \Container::$persistentDataManager->selectFromDbById($challengeId, Challenge::class);
}
public function getByToken(int $token): ?Challenge
@@ -26,7 +18,7 @@ class ChallengeRepository
$select = new Select(\Container::$dbConnection);
$select->where('token', '=', $token);
- return $this->pdm->selectFromDb($select, Challenge::class);
+ return \Container::$persistentDataManager->selectFromDb($select, Challenge::class);
}
public function getByTokenStr(string $token_str): ?Challenge
@@ -50,7 +42,7 @@ class ChallengeRepository
$select->innerJoin('users', ['users', 'id'], '=', ['user_in_challenge', 'user_id']);
$select->where('user_id', '=', $user->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Challenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Challenge::class);
}
public function getAllByOwner(User $user): Generator
@@ -61,7 +53,7 @@ class ChallengeRepository
$select->where('user_id', '=', $user->getId());
$select->where('is_owner', '=', true);
- yield from $this->pdm->selectMultipleFromDb($select, Challenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Challenge::class);
}
public function getAllByPlace(Place $place): Generator
@@ -70,6 +62,6 @@ class ChallengeRepository
$select->innerJoin('place_in_challenge', ['challenges', 'id'], '=', ['place_in_challenge', 'challenge_id']);
$select->where('place_id', '=', $place->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Challenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Challenge::class);
}
}
diff --git a/src/Repository/GuessRepository.php b/src/Repository/GuessRepository.php
index 307429c..2baa6c8 100644
--- a/src/Repository/GuessRepository.php
+++ b/src/Repository/GuessRepository.php
@@ -7,23 +7,15 @@ use MapGuesser\PersistentData\Model\Guess;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\PersistentData\Model\Place;
use MapGuesser\PersistentData\Model\PlaceInChallenge;
-use SokoWeb\PersistentData\PersistentDataManager;
class GuessRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getAllByUser(User $user): Generator
{
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class);
}
public function getAllByUserAndChallenge(User $user, Challenge $challenge): Generator
@@ -33,7 +25,7 @@ class GuessRepository
$select->where('user_id', '=', $user->getId());
$select->where('challenge_id', '=', $challenge->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class);
}
public function getByUserAndPlaceInChallenge(User $user, Challenge $challenge, Place $place): ?Guess
@@ -44,7 +36,7 @@ class GuessRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->where('place_id', '=', $place->getId());
- return $this->pdm->selectFromDb($select, Guess::class);
+ return \Container::$persistentDataManager->selectFromDb($select, Guess::class);
}
public function getAllInChallengeByUser(int $userId, Challenge $challenge): Generator
@@ -55,7 +47,7 @@ class GuessRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->orderBy('round');
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class);
}
public function getAllInChallenge(Challenge $challenge, array $withRelations = []): Generator
@@ -69,7 +61,7 @@ class GuessRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->orderBy('round');
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class, true, $withRelations);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class, true, $withRelations);
}
public function getAllInChallengeByRound(int $round, Challenge $challenge, array $withRelations = []): Generator
@@ -83,7 +75,7 @@ class GuessRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->where('round', '=', $round);
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class, true, $withRelations);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class, true, $withRelations);
}
public function getAllByPlace(Place $place): Generator
@@ -92,6 +84,6 @@ class GuessRepository
$select->innerJoin('place_in_challenge', ['place_in_challenge', 'id'], '=', ['guesses', 'place_in_challenge_id']);
$select->where('place_id', '=', $place->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Guess::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Guess::class);
}
}
diff --git a/src/Repository/MapRepository.php b/src/Repository/MapRepository.php
index d2a1f83..680b62c 100644
--- a/src/Repository/MapRepository.php
+++ b/src/Repository/MapRepository.php
@@ -4,20 +4,12 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\Map;
use MapGuesser\PersistentData\Model\Place;
-use SokoWeb\PersistentData\PersistentDataManager;
class MapRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $mapId): ?Map
{
- return $this->pdm->selectFromDbById($mapId, Map::class);
+ return \Container::$persistentDataManager->selectFromDbById($mapId, Map::class);
}
public function getByPlace(Place $place): ?Map
@@ -33,6 +25,6 @@ class MapRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->limit(1);
- return $this->pdm->selectFromDb($select, Map::class);
+ return \Container::$persistentDataManager->selectFromDb($select, Map::class);
}
}
diff --git a/src/Repository/MultiRoomRepository.php b/src/Repository/MultiRoomRepository.php
index dd4a089..109938f 100644
--- a/src/Repository/MultiRoomRepository.php
+++ b/src/Repository/MultiRoomRepository.php
@@ -4,20 +4,12 @@ use DateTime;
use Generator;
use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\MultiRoom;
-use SokoWeb\PersistentData\PersistentDataManager;
class MultiRoomRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $id): ?MultiRoom
{
- return $this->pdm->selectFromDbById($id, MultiRoom::class);
+ return \Container::$persistentDataManager->selectFromDbById($id, MultiRoom::class);
}
public function getByRoomId(string $roomId): ?MultiRoom
@@ -25,7 +17,7 @@ class MultiRoomRepository
$select = new Select(\Container::$dbConnection);
$select->where('room_id', '=', $roomId);
- return $this->pdm->selectFromDb($select, MultiRoom::class);
+ return \Container::$persistentDataManager->selectFromDb($select, MultiRoom::class);
}
public function getAllExpired(): Generator
@@ -33,6 +25,6 @@ class MultiRoomRepository
$select = new Select(\Container::$dbConnection);
$select->where('updated', '<', (new DateTime('-7 day'))->format('Y-m-d H:i:s'));
- yield from $this->pdm->selectMultipleFromDb($select, MultiRoom::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, MultiRoom::class);
}
}
diff --git a/src/Repository/PlaceInChallengeRepository.php b/src/Repository/PlaceInChallengeRepository.php
index 14b16c6..0da00cb 100644
--- a/src/Repository/PlaceInChallengeRepository.php
+++ b/src/Repository/PlaceInChallengeRepository.php
@@ -5,23 +5,15 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\Place;
use MapGuesser\PersistentData\Model\PlaceInChallenge;
-use SokoWeb\PersistentData\PersistentDataManager;
class PlaceInChallengeRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getAllByPlace(Place $place, array $withRelations = []) : Generator
{
$select = new Select(\Container::$dbConnection);
$select->where('place_id', '=', $place->getId());
- yield from $this->pdm->selectMultipleFromDb($select, PlaceInChallenge::class, true, $withRelations);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, PlaceInChallenge::class, true, $withRelations);
}
public function getAllByChallenge(Challenge $challenge) : Generator
@@ -29,7 +21,7 @@ class PlaceInChallengeRepository
$select = new Select(\Container::$dbConnection);
$select->where('challenge_id', '=', $challenge->getId());
- yield from $this->pdm->selectMultipleFromDb($select, PlaceInChallenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, PlaceInChallenge::class);
}
public function getByPlaceAndChallenge(Place $place, Challenge $challenge) : ?PlaceInChallenge
@@ -38,7 +30,7 @@ class PlaceInChallengeRepository
$select->where('place_id', '=', $place->getId());
$select->where('challenge_id', '=', $challenge->getId());
- return $this->pdm->selectFromDb($select, PlaceInChallenge::class);
+ return \Container::$persistentDataManager->selectFromDb($select, PlaceInChallenge::class);
}
public function getByRoundInChallenge(int $round, Challenge $challenge, array $withRelations = []): ?PlaceInChallenge
@@ -48,6 +40,6 @@ class PlaceInChallengeRepository
$select->orderBy('round');
$select->limit(1, $round);
- return $this->pdm->selectFromDb($select, PlaceInChallenge::class, true, $withRelations);
+ return \Container::$persistentDataManager->selectFromDb($select, PlaceInChallenge::class, true, $withRelations);
}
}
diff --git a/src/Repository/PlaceRepository.php b/src/Repository/PlaceRepository.php
index fb32eb5..45319e5 100644
--- a/src/Repository/PlaceRepository.php
+++ b/src/Repository/PlaceRepository.php
@@ -5,20 +5,12 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\Map;
use MapGuesser\PersistentData\Model\Place;
-use SokoWeb\PersistentData\PersistentDataManager;
class PlaceRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $placeId): ?Place
{
- return $this->pdm->selectFromDbById($placeId, Place::class);
+ return \Container::$persistentDataManager->selectFromDbById($placeId, Place::class);
}
public function getAllForMap(Map $map): Generator
@@ -26,7 +18,7 @@ class PlaceRepository
$select = new Select(\Container::$dbConnection);
$select->where('map_id', '=', $map->getId());
- yield from $this->pdm->selectMultipleFromDb($select, Place::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Place::class);
}
//TODO: use Map and User instead of id
@@ -99,7 +91,7 @@ class PlaceRepository
$select->where('id', 'NOT IN', $exclude);
$select->limit(1, $randomOffset);
- return $this->pdm->selectFromDb($select, Place::class);
+ return \Container::$persistentDataManager->selectFromDb($select, Place::class);
}
// Never visited places
@@ -186,7 +178,7 @@ class PlaceRepository
$select->orderBy('round');
$select->limit(1, $round);
- return $this->pdm->selectFromDb($select, Place::class);
+ return \Container::$persistentDataManager->selectFromDb($select, Place::class);
}
public function getAllInChallenge(Challenge $challenge): Generator
@@ -196,7 +188,7 @@ class PlaceRepository
$select->where('challenge_id', '=', $challenge->getId());
$select->orderBy('round');
- yield from $this->pdm->selectMultipleFromDb($select, Place::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, Place::class);
}
}
diff --git a/src/Repository/UserConfirmationRepository.php b/src/Repository/UserConfirmationRepository.php
index 3cd80e0..dd5970d 100644
--- a/src/Repository/UserConfirmationRepository.php
+++ b/src/Repository/UserConfirmationRepository.php
@@ -3,20 +3,12 @@
use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\PersistentData\Model\UserConfirmation;
-use SokoWeb\PersistentData\PersistentDataManager;
class UserConfirmationRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $userConfirmationId): ?UserConfirmation
{
- return $this->pdm->selectFromDbById($userConfirmationId, UserConfirmation::class);
+ return \Container::$persistentDataManager->selectFromDbById($userConfirmationId, UserConfirmation::class);
}
public function getByToken(string $token): ?UserConfirmation
@@ -24,7 +16,7 @@ class UserConfirmationRepository
$select = new Select(\Container::$dbConnection);
$select->where('token', '=', $token);
- return $this->pdm->selectFromDb($select, UserConfirmation::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserConfirmation::class);
}
public function getByUser(User $user): ?UserConfirmation
@@ -32,6 +24,6 @@ class UserConfirmationRepository
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- return $this->pdm->selectFromDb($select, UserConfirmation::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserConfirmation::class);
}
}
diff --git a/src/Repository/UserInChallengeRepository.php b/src/Repository/UserInChallengeRepository.php
index bd6e424..3e7d5ab 100644
--- a/src/Repository/UserInChallengeRepository.php
+++ b/src/Repository/UserInChallengeRepository.php
@@ -5,23 +5,15 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Challenge;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\PersistentData\Model\UserInChallenge;
-use SokoWeb\PersistentData\PersistentDataManager;
class UserInChallengeRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getAllByUser(User $user) : Generator
{
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserInChallenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserInChallenge::class);
}
public function getAllByChallenge(Challenge $challenge) : Generator
@@ -29,7 +21,7 @@ class UserInChallengeRepository
$select = new Select(\Container::$dbConnection);
$select->where('challenge_id', '=', $challenge->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserInChallenge::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserInChallenge::class);
}
public function getAllByChallengeWithUsers(Challenge $challenge) : Generator
@@ -37,7 +29,7 @@ class UserInChallengeRepository
$select = new Select(\Container::$dbConnection);
$select->where('challenge_id', '=', $challenge->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserInChallenge::class, true, [User::class]);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserInChallenge::class, true, [User::class]);
}
public function getByUserIdAndChallenge(int $userId, Challenge $challenge): ?UserInChallenge
@@ -46,7 +38,7 @@ class UserInChallengeRepository
$select->where('user_id', '=', $userId);
$select->where('challenge_id', '=', $challenge->getId());
- return $this->pdm->selectFromDb($select, UserInChallenge::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserInChallenge::class);
}
public function getByUserIdAndToken(int $userId, string $token_str, array $withRelations = []): ?UserInChallenge
@@ -67,7 +59,7 @@ class UserInChallengeRepository
$select->where('user_id', '=', $userId);
$select->where('token', '=', $token);
- return $this->pdm->selectFromDb($select, UserInChallenge::class, true, $withRelations);
+ return \Container::$persistentDataManager->selectFromDb($select, UserInChallenge::class, true, $withRelations);
}
public function isUserParticipatingInChallenge(int $userId, Challenge $challenge): bool
diff --git a/src/Repository/UserPasswordResetterRepository.php b/src/Repository/UserPasswordResetterRepository.php
index 4ed53d5..1a30b6d 100644
--- a/src/Repository/UserPasswordResetterRepository.php
+++ b/src/Repository/UserPasswordResetterRepository.php
@@ -5,20 +5,12 @@ use Generator;
use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\PersistentData\Model\UserPasswordResetter;
-use SokoWeb\PersistentData\PersistentDataManager;
class UserPasswordResetterRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $userConfirmationId): ?UserPasswordResetter
{
- return $this->pdm->selectFromDbById($userConfirmationId, UserPasswordResetter::class);
+ return \Container::$persistentDataManager->selectFromDbById($userConfirmationId, UserPasswordResetter::class);
}
public function getByToken(string $token): ?UserPasswordResetter
@@ -26,7 +18,7 @@ class UserPasswordResetterRepository
$select = new Select(\Container::$dbConnection);
$select->where('token', '=', $token);
- return $this->pdm->selectFromDb($select, UserPasswordResetter::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserPasswordResetter::class);
}
public function getByUser(User $user): ?UserPasswordResetter
@@ -34,7 +26,7 @@ class UserPasswordResetterRepository
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- return $this->pdm->selectFromDb($select, UserPasswordResetter::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserPasswordResetter::class);
}
public function getAllExpired(): Generator
@@ -42,6 +34,6 @@ class UserPasswordResetterRepository
$select = new Select(\Container::$dbConnection);
$select->where('expires', '<', (new DateTime())->format('Y-m-d H:i:s'));
- yield from $this->pdm->selectMultipleFromDb($select, UserPasswordResetter::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserPasswordResetter::class);
}
}
diff --git a/src/Repository/UserPlayedPlaceRepository.php b/src/Repository/UserPlayedPlaceRepository.php
index effb598..ec4230a 100644
--- a/src/Repository/UserPlayedPlaceRepository.php
+++ b/src/Repository/UserPlayedPlaceRepository.php
@@ -5,23 +5,15 @@ use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\User;
use MapGuesser\PersistentData\Model\Place;
use MapGuesser\PersistentData\Model\UserPlayedPlace;
-use SokoWeb\PersistentData\PersistentDataManager;
class UserPlayedPlaceRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getByUser(User $user): Generator
{
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserPlayedPlace::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserPlayedPlace::class);
}
public function getAllByPlace(Place $place): Generator
@@ -29,7 +21,7 @@ class UserPlayedPlaceRepository
$select = new Select(\Container::$dbConnection);
$select->where('place_id', '=', $place->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserPlayedPlace::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserPlayedPlace::class);
}
public function getAllByUser(User $user) : Generator
@@ -37,7 +29,7 @@ class UserPlayedPlaceRepository
$select = new Select(\Container::$dbConnection);
$select->where('user_id', '=', $user->getId());
- yield from $this->pdm->selectMultipleFromDb($select, UserPlayedPlace::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, UserPlayedPlace::class);
}
public function getByUserIdAndPlaceId(int $userId, int $placeId) : ?UserPlayedPlace
@@ -46,6 +38,6 @@ class UserPlayedPlaceRepository
$select->where('user_id', '=', $userId);
$select->where('place_id', '=', $placeId);
- return $this->pdm->selectFromDb($select, UserPlayedPlace::class);
+ return \Container::$persistentDataManager->selectFromDb($select, UserPlayedPlace::class);
}
}
diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php
index b683b94..2062739 100644
--- a/src/Repository/UserRepository.php
+++ b/src/Repository/UserRepository.php
@@ -6,20 +6,12 @@ use SokoWeb\Interfaces\Repository\IUserRepository;
use SokoWeb\Database\Query\Select;
use MapGuesser\PersistentData\Model\Guess;
use MapGuesser\PersistentData\Model\User;
-use SokoWeb\PersistentData\PersistentDataManager;
class UserRepository implements IUserRepository
{
- private PersistentDataManager $pdm;
-
- public function __construct()
- {
- $this->pdm = new PersistentDataManager();
- }
-
public function getById(int $userId): ?User
{
- return $this->pdm->selectFromDbById($userId, User::class);
+ return \Container::$persistentDataManager->selectFromDbById($userId, User::class);
}
public function getByEmail(string $email): ?User
@@ -27,7 +19,7 @@ class UserRepository implements IUserRepository
$select = new Select(\Container::$dbConnection);
$select->where('email', '=', $email);
- return $this->pdm->selectFromDb($select, User::class);
+ return \Container::$persistentDataManager->selectFromDb($select, User::class);
}
public function getByGoogleSub(string $sub): ?User
@@ -35,7 +27,7 @@ class UserRepository implements IUserRepository
$select = new Select(\Container::$dbConnection);
$select->where('google_sub', '=', $sub);
- return $this->pdm->selectFromDb($select, User::class);
+ return \Container::$persistentDataManager->selectFromDb($select, User::class);
}
public function getAllInactiveExpired(): Generator
@@ -44,7 +36,7 @@ class UserRepository implements IUserRepository
$select->where('active', '=', false);
$select->where('created', '<', (new DateTime('-1 day'))->format('Y-m-d H:i:s'));
- yield from $this->pdm->selectMultipleFromDb($select, User::class);
+ yield from \Container::$persistentDataManager->selectMultipleFromDb($select, User::class);
}
public function getByGuess(Guess $guess): ?User
diff --git a/views/error/500.php b/views/error/500.php
new file mode 100644
index 0000000..6732cc3
--- /dev/null
+++ b/views/error/500.php
@@ -0,0 +1,11 @@
+@extends(templates/layout_normal)
+
+@section(main)
+ 500 | Internal server error
+ An error occured during processing your request. Back to start.
+
+
+= $exceptionToPrint ?>
+
+
+@endsection
diff --git a/web.php b/web.php
index 016302d..82776dc 100644
--- a/web.php
+++ b/web.php
@@ -90,7 +90,7 @@ Container::$routeCollection->group('admin', function (RouteCollection $routeColl
});
if (isset($_COOKIE['COOKIES_CONSENT'])) {
- Container::$sessionHandler = new DatabaseSessionHandler();
+ Container::$sessionHandler = new DatabaseSessionHandler(Container::$dbConnection);
session_set_save_handler(Container::$sessionHandler, true);
session_start([
@@ -137,11 +137,13 @@ $appConfig = [
'antiCsrfTokenErrorResponse' => ['error' => 'no_valid_anti_csrf_token'],
'antiCsrfTokenExceptions' => [],
'loginRouteId' => 'login',
- 'error404View' => 'error/404'
+ 'error404View' => 'error/404',
+ 'error500View' => 'error/500'
];
$httpReponse = new HttpResponse(
Container::$request,
+ Container::$dbConnection,
Container::$routeCollection,
$appConfig,
$_SERVER['REQUEST_METHOD'],