From a6bc36a710c62fad985b3bb7f894b85733e22e68 Mon Sep 17 00:00:00 2001 From: Dane Everitt Date: Sat, 16 Jan 2016 01:20:27 -0500 Subject: [PATCH] add initial api management page --- app/Http/Controllers/Admin/APIController.php | 32 +++++++ app/Http/Routes/AdminRoutes.php | 25 +++++- app/Models/APIKey.php | 14 +++ app/Models/APIPermission.php | 8 ++ resources/views/admin/api/index.blade.php | 90 ++++++++++++++++++++ resources/views/admin/api/new.blade.php | 0 resources/views/layouts/admin.blade.php | 1 + 7 files changed, 169 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Admin/APIController.php create mode 100644 resources/views/admin/api/index.blade.php create mode 100644 resources/views/admin/api/new.blade.php diff --git a/app/Http/Controllers/Admin/APIController.php b/app/Http/Controllers/Admin/APIController.php new file mode 100644 index 000000000..77b60adc0 --- /dev/null +++ b/app/Http/Controllers/Admin/APIController.php @@ -0,0 +1,32 @@ +permissions = Models\APIPermission::where('key_id', $key->id)->get(); + } + + return view('admin.api.index', [ + 'keys' => $keys + ]); + } + +} diff --git a/app/Http/Routes/AdminRoutes.php b/app/Http/Routes/AdminRoutes.php index 2e22b5285..0eecf410c 100644 --- a/app/Http/Routes/AdminRoutes.php +++ b/app/Http/Routes/AdminRoutes.php @@ -203,7 +203,7 @@ class AdminRoutes { }); - // Server Routes + // Location Routes $router->group([ 'prefix' => 'admin/locations', 'middleware' => [ @@ -218,6 +218,29 @@ class AdminRoutes { ]); }); + // API Routes + $router->group([ + 'prefix' => 'admin/api', + 'middleware' => [ + 'auth', + 'admin', + 'csrf' + ] + ], function () use ($router) { + $router->get('/', [ + 'as' => 'admin.api', + 'uses' => 'Admin\APIController@getIndex' + ]); + $router->get('/new', [ + 'as' => 'admin.api.new', + 'uses' => 'Admin\APIController@getNew' + ]); + $router->delete('/revoke/{key?}', [ + 'as' => 'admin.api.revoke', + 'uses' => 'Admin\APIController@deleteKey' + ]); + }); + } } diff --git a/app/Models/APIKey.php b/app/Models/APIKey.php index dc7912f26..74ea8f60c 100644 --- a/app/Models/APIKey.php +++ b/app/Models/APIKey.php @@ -14,4 +14,18 @@ class APIKey extends Model */ protected $table = 'api_keys'; + /** + * The attributes excluded from the model's JSON form. + * + * @var array + */ + protected $hidden = ['secret']; + + /** + * Fields that are not mass assignable. + * + * @var array + */ + protected $guarded = ['id', 'created_at', 'updated_at']; + } diff --git a/app/Models/APIPermission.php b/app/Models/APIPermission.php index 037729716..487951b17 100644 --- a/app/Models/APIPermission.php +++ b/app/Models/APIPermission.php @@ -14,4 +14,12 @@ class APIPermission extends Model */ protected $table = 'api_permissions'; + /** + * Fields that are not mass assignable. + * + * @var array + */ + protected $guarded = ['id']; + + } diff --git a/resources/views/admin/api/index.blade.php b/resources/views/admin/api/index.blade.php new file mode 100644 index 000000000..d6779c46a --- /dev/null +++ b/resources/views/admin/api/index.blade.php @@ -0,0 +1,90 @@ +@extends('layouts.admin') + +@section('title') + API Management +@endsection + +@section('content') +
+ +

API Key Information


+ + + + + + + + + + + + @foreach ($keys as $key) + + + + + + + + @endforeach + +
API Public KeyAllowed IPsPermissionsCreated
{{ $key->public }} + @if (is_null($key->allowed_ips)) + * + @else + @foreach(json_decode($key->allowed_ips) as $ip) + {{ $ip }}
+ @endforeach + @endif +
+ @foreach(json_decode($key->permissions) as &$perm) + {{ $perm->permission }}
+ @endforeach +
{{ $key->created_at }}
+ +
+ +@endsection diff --git a/resources/views/admin/api/new.blade.php b/resources/views/admin/api/new.blade.php new file mode 100644 index 000000000..e69de29bb diff --git a/resources/views/layouts/admin.blade.php b/resources/views/layouts/admin.blade.php index 34af132a1..a27e209c4 100644 --- a/resources/views/layouts/admin.blade.php +++ b/resources/views/layouts/admin.blade.php @@ -61,6 +61,7 @@ Management Admin Index General Settings + API Management
Account Management