Compare commits

..
Author SHA1 Message Date
bence c056e0bdfc Merge pull request 'fix redirect again - hopefully last time' (!9) from bugfix/fix-redirects-again into master
rvr-nextgen/pipeline/head This commit looks good
Reviewed-on: #9
2023-04-08 21:11:31 +02:00
bence 12890293e0 fix redirect again - hopefully last time
rvr-nextgen/pipeline/pr-master This commit looks good
2023-04-08 20:54:18 +02:00
bence 845f1fe262 Merge pull request 'RVRNEXT-2 disable anti csrf check in case of oauth token' (!8) from feature/RVRNEXT-2-disable-anti-csrf-check-for-oauth-token into master
rvr-nextgen/pipeline/head This commit looks good
Reviewed-on: #8
2023-04-08 20:03:20 +02:00
bence bc9f1a1d1f RVRNEXT-2 disable anti csrf check in case of oauth token
rvr-nextgen/pipeline/pr-master This commit looks good
2023-04-08 20:02:02 +02:00
3 changed files with 9 additions and 6 deletions

No files matched your search

+2 -2
View File
@@ -29,13 +29,13 @@ if ($match !== null) {
} }
if (!$authorized) { if (!$authorized) {
Container::$request->session()->set('redirect_after_login', '/' . $url); Container::$request->session()->set('redirect_after_login', $url);
$response = new Redirect(Container::$routeCollection->getRoute('login')->generateLink(), IRedirect::TEMPORARY); $response = new Redirect(Container::$routeCollection->getRoute('login')->generateLink(), IRedirect::TEMPORARY);
header('Location: ' . $response->getUrl(), true, $response->getHttpCode()); header('Location: ' . $response->getUrl(), true, $response->getHttpCode());
return; return;
} }
if ($method === 'post' && Container::$request->post('anti_csrf_token') !== Container::$request->session()->get('anti_csrf_token')) { if ($method === 'post' && !in_array($url, $antiCsrfTokenExceptions) && Container::$request->post('anti_csrf_token') !== Container::$request->session()->get('anti_csrf_token')) {
$content = new SokoWeb\Response\JsonContent(['error' => 'no_valid_anti_csrf_token']); $content = new SokoWeb\Response\JsonContent(['error' => 'no_valid_anti_csrf_token']);
header('Content-Type: text/html; charset=UTF-8', true, 403); header('Content-Type: text/html; charset=UTF-8', true, 403);
$content->render(); $content->render();
+4 -4
View File
@@ -47,7 +47,7 @@ class LoginController
return new Redirect($this->redirectUrl, IRedirect::TEMPORARY); return new Redirect($this->redirectUrl, IRedirect::TEMPORARY);
} }
return new HtmlContent('login/login', ['redirectUrl' => $this->redirectUrl]); return new HtmlContent('login/login', ['redirectUrl' => '/' . $this->redirectUrl]);
} }
public function getGoogleLoginRedirect(): IRedirect public function getGoogleLoginRedirect(): IRedirect
@@ -99,7 +99,7 @@ class LoginController
$user = $this->userRepository->getById($resetter->getUserId()); $user = $this->userRepository->getById($resetter->getUserId());
return new HtmlContent('login/reset_password', ['success' => true, 'token' => $token, 'email' => $user->getEmail(), 'redirectUrl' => $this->redirectUrl]); return new HtmlContent('login/reset_password', ['success' => true, 'token' => $token, 'email' => $user->getEmail(), 'redirectUrl' => '/' . $this->redirectUrl]);
} }
public function login(): IContent public function login(): IContent
@@ -183,7 +183,7 @@ class LoginController
$this->deleteRedirectUrl(); $this->deleteRedirectUrl();
return new JsonContent([ return new JsonContent([
'redirect' => [ 'redirect' => [
'target' => $this->redirectUrl 'target' => '/' . $this->redirectUrl
] ]
]); ]);
} }
@@ -247,7 +247,7 @@ class LoginController
$this->deleteRedirectUrl(); $this->deleteRedirectUrl();
return new JsonContent([ return new JsonContent([
'redirect' => [ 'redirect' => [
'target' => $this->redirectUrl 'target' => '/' . $this->redirectUrl
] ]
]); ]);
} }
+3
View File
@@ -78,3 +78,6 @@ Container::$request = new SokoWeb\Request\Request(
if (!Container::$request->session()->has('anti_csrf_token')) { if (!Container::$request->session()->has('anti_csrf_token')) {
Container::$request->session()->set('anti_csrf_token', bin2hex(random_bytes(16))); Container::$request->session()->set('anti_csrf_token', bin2hex(random_bytes(16)));
} }
//TODO: make a nicer logic
$antiCsrfTokenExceptions = ['oauth/token'];