route('slug')) { return $next($request); } $form = Form::where('slug',$request->route('slug'))->firstOrFail(); $request->merge([ 'form' => $form, ]); $userIsFormOwner = Auth::check() && Auth::user()->ownsForm($form); if (!$userIsFormOwner && $this->isProtected($request, $form)) { return response([ 'status' => 'Unauthorized', 'message' => 'Form is protected.', ], 403); } return $next($request); } public static function isProtected(Request $request, Form $form) { if (!$form->has_password) { return false; } return !self::hasCorrectPassword($request, $form); } public static function hasCorrectPassword(Request $request, Form $form) { return $request->headers->has(self::PASSWORD_HEADER_NAME) && $request->headers->get(self::PASSWORD_HEADER_NAME) == hash('sha256', $form->password); } }