/** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $key = $request->input('key'); if (empty($key) || ApiKey::where('api_key', $key)->count() !== 1) { return response()->json(array('error' => 'Requires a valid key.'), 401); // unauthroized } return $next($request); }
public function getToken($token) { return ApiKey::where('key', $token)->first(); }
Route::get('/home', 'HomeController@index'); Route::controllers(['auth' => 'Auth\\AuthController', 'password' => 'Auth\\PasswordController']); //api routes Route::group(['prefix' => 'v1', 'before' => 'auth.api_key'], function () { Route::get('/data', 'ApiController@data'); Route::get('/variables', 'ApiController@variables'); Route::get('/entities', 'ApiController@entities'); }); Route::get('api', 'ApiController@index'); Route::filter('auth.api_key', function ($route, $request) { $apiKey = Input::has('api_key') ? Input::get('api_key') : ''; $errorMessage = ''; if (empty($apiKey)) { $errorMessage = 'All API calls have to be made with an api_key paramater.'; } else { $validKeys = ApiKey::where('value', $apiKey)->get(); if ($validKeys->isEmpty()) { $errorMessage = 'Invalid API key.'; } } if (!empty($errorMessage)) { $response = Response::json(['error' => true, 'message' => $errorMessage, 'code' => 401], 401); $response->header('Content-Type', 'application/json'); return $response; } }); Route::get('/logout', ['as' => 'logout', 'uses' => 'Auth\\AuthController@getLogout']); Route::group(['middleware' => 'auth'], function () { Route::resource('entities', 'EntitiesController'); Route::resource('datasources', 'DatasourcesController'); Route::resource('datasets', 'DatasetsController');
/** * Used to delete the api key. * * @return json Empty response on successful or error on failure */ public function delete() { //must be ajax if (Request::ajax()) { $user = Auth::user(); $userId = $user->id; //users should only have one api key $apiKeyModel = ApiKey::where('user_id', $userId)->first(); $deleted = $apiKeyModel->delete(); if ($deleted) { return response()->json(); } else { return response()->json(array('error' => 'Unable to delete key'), 500); } } }
/** Удаление ключа **/ public static function deleteKey($id) { ApiKey::where('id', $id)->delete(); }