makes possible right validation for temporary signed routes

This commit is contained in:
Sevan Nerse 2021-07-29 13:19:58 +03:00
parent ad2eb04dc9
commit 22617a9025

View File

@ -38,7 +38,7 @@ class ValidateSignature
public function hasValidSignature(Request $request, $absolute = true) public function hasValidSignature(Request $request, $absolute = true)
{ {
return $this->hasCorrectSignature($request, $absolute) return $this->hasCorrectSignature($request, $absolute)
&& $this->signatureHasNotExpired($request); && $this->signatureHasNotExpired($request);
} }
/** /**
@ -50,10 +50,12 @@ class ValidateSignature
*/ */
public function hasCorrectSignature(Request $request, $absolute = true) public function hasCorrectSignature(Request $request, $absolute = true)
{ {
$url = $absolute ? $request->url() : '/'.$request->path(); $url = $absolute ? $request->url() : '/' . $request->path();
$original = rtrim($url . '?' . Arr::query( $original = rtrim($url . '?' . Arr::query(
Arr::only($request->query(), ['company_id']) Arr::only($request->query(), ['company_id'])
) . Arr::query(
Arr::only($request->query(), ['expires'])
), '?'); ), '?');
$signature = hash_hmac('sha256', $original, call_user_func(function () { $signature = hash_hmac('sha256', $original, call_user_func(function () {
@ -73,6 +75,6 @@ class ValidateSignature
{ {
$expires = $request->query('expires'); $expires = $request->query('expires');
return ! ($expires && Carbon::now()->getTimestamp() > $expires); return !($expires && Carbon::now()->getTimestamp() > $expires);
} }
} }