'Invalid Password', 'errors' => new stdClass, ]; if($request->header('X-API-OAUTH-PASSWORD')){ //user is attempting to reauth with OAuth - check the token value //todo expand this to include all OAuth providers $user = false; $google = new Google(); $user = $google->getTokenResponse(request()->header('X-API-OAUTH-PASSWORD')); if (is_array($user)) { $query = [ 'oauth_user_id' => $google->harvestSubField($user), 'oauth_provider_id'=> 'google', ]; /* Cannot allow duplicates! */ if ($existing_user = MultiDB::hasUser($query)) { return $next($request); } } $error = [ 'message' => 'Access denied', 'errors' => new stdClass, ]; return response()->json($error, 412); }elseif ($request->header('X-API-PASSWORD')) { //user is attempting to reauth with regular password // if (! Hash::check($request->header('X-API-PASSWORD'), auth()->user()->password)) { return response()->json($error, 403); } } elseif (Cache::get(auth()->user()->email.'_logged_in')) { Cache::pull(auth()->user()->email.'_logged_in'); Cache::add(auth()->user()->email.'_logged_in', Str::random(64), now()->addMinutes(30)); return $next($request); } else { $error = [ 'message' => 'Access denied', 'errors' => new stdClass, ]; return response()->json($error, 412); } Cache::add(auth()->user()->email.'_logged_in', Str::random(64), now()->addMinutes(30)); return $next($request); } }