adapt Container usage to new soko-web
rvr-nextgen/pipeline/pr-master This commit looks good

This commit is contained in:
bence committed 2023-04-19 23:38:43 +02:00
1 parent 36f767ea9b
commit dccb34971b
20 files changed
+135 -237

No files matched your search

+24 -32
View File
@@ -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 RVR\PersistentData\Model\User;
use SokoWeb\Response\HtmlContent;
use SokoWeb\Response\JsonContent;
@@ -17,16 +15,10 @@ use RVR\Repository\UserRepository;
class UserController implements IAuthenticationRequired
{
private IRequest $request;
private PersistentDataManager $pdm;
private UserRepository $userRepository;
public function __construct(IRequest $request)
public function __construct()
{
$this->request = $request;
$this->pdm = new PersistentDataManager();
$this->userRepository = new UserRepository();
}
@@ -40,7 +32,7 @@ class UserController implements IAuthenticationRequired
/**
* @var User $user
*/
$user = $this->request->user();
$user = \Container::$request->user();
return new HtmlContent('account/account', ['user' => $user->toArray()]);
}
@@ -50,19 +42,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()
);
@@ -75,16 +67,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'])) {
@@ -94,7 +86,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]);
}
@@ -106,7 +98,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,
@@ -119,18 +111,18 @@ 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]]);
}
$newEmail = $this->request->post('email');
$newEmail = \Container::$request->post('email');
if ($newEmail !== $user->getEmail()) {
if (!filter_var($newEmail, FILTER_VALIDATE_EMAIL)) {
return new JsonContent(['error' => ['errorText' => 'Please provide a valid email address.']]);
@@ -143,7 +135,7 @@ class UserController implements IAuthenticationRequired
$user->setEmail($newEmail);
}
$newUsername = $this->request->post('username');
$newUsername = \Container::$request->post('username');
if ($newUsername !== $user->getUsername()) {
if (strlen($newUsername) > 0) {
if (filter_var($newUsername, FILTER_VALIDATE_EMAIL)) {
@@ -160,7 +152,7 @@ class UserController implements IAuthenticationRequired
}
}
$newPassword = $this->request->post('password_new');
$newPassword = \Container::$request->post('password_new');
if (strlen($newPassword) > 0) {
if (strlen($newPassword) < 6) {
return new JsonContent([
@@ -170,7 +162,7 @@ class UserController implements IAuthenticationRequired
]);
}
if ($newPassword !== $this->request->post('password_new_confirm')) {
if ($newPassword !== \Container::$request->post('password_new_confirm')) {
return new JsonContent([
'error' => [
'errorText' => 'The given new passwords do not match.'
@@ -181,13 +173,13 @@ class UserController implements IAuthenticationRequired
$user->setPlainPassword($newPassword);
}
$user->setNickname($this->request->post('nickname'));
$user->setPhone($this->request->post('phone'));
$user->setIdNumber($this->request->post('id_number'));
$user->setNickname(\Container::$request->post('nickname'));
$user->setPhone(\Container::$request->post('phone'));
$user->setIdNumber(\Container::$request->post('id_number'));
$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]);
}