diff --git a/README.md b/README.md index c52ae42..d9117e6 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ update pull > - Package ini masih dalam tahap pengembangan. > - package ini di gunakan untuk mengelola API KEY Provinsi Banten. > - Package ini untuk laravel 4.2 keatas. +> - Package ini membutuhkan package Workflow. Anda bisa download di https://github.com/bantenprov/workflow ## Workflow API Key Management ini dilengkapi dengan workflow management yang digunakan untuk melakukan proses permintaan API Key @@ -32,12 +33,14 @@ API Key Management ini dilengkapi dengan workflow management yang digunakan untu #### Install package ```sh -composer require bantenprov/laravel-api-manager :dev-master +composer require bantenprov/laravel-api-manager:dev-master ``` #### edit file config/app.php tambahan class ini pada file config/app.php -```sh +```php +Collective\Html\HtmlServiceProvider::class, +'That0n3guy\Transliteration\TransliterationServiceProvider', Bantenprov\LaravelApiManager\LaravelApiManagerServiceProvider::class, ``` @@ -58,7 +61,7 @@ Copied Directory [/vendor/bantenprov/laravel-api-manager/src/migrations] To [/da Copied Directory [/vendor/laravel/framework/src/Illuminate/Mail/resources/views] To [/resources/views/vendor/mail] Publishing complete. ``` -#### tambahkan route +#### tambahkan route running script ```sh @@ -67,23 +70,75 @@ php artisan laravel-api-manager:add-route hasilnya akan menambahkan route resource di routes/web.php ```sh -Route::resource('api_manager', 'ApiManagerController'); +Route::resource('api-manager', 'ApiManagerController'); ``` -#### Migrasi database +#### Migrasi database running script ```sh php artisan migrate +php artisan make:middleware ApiKey +``` + +tambahkan ini pada file app/Http/Kernel.php +```php +.... +'ApiKey' => \App\Http\Middleware\ApiKey::class, +``` + +dalam middleware ApiKey di app/Http/Middleware/ApiKey.php tambahkan ini. +```php +.... +use Redirect; +use Validator; +use App\ApiKeys; + +class ApiKey +{ + public function handle($request, Closure $next) + { + .... + if($request->get('apikey') == '') + { + return response()->json([ + 'error' => true, + 'message' => 'apikey not found', + 'data' => [] + ]); + } + $check = ApiKeys::where('api_key', $request->get('apikey'))->first(); + if(count($check) == 0) + { + return response()->json([ + 'error' => true, + 'message' => 'invalid apikey', + 'data' => [] + ]); + } + return $next($request); + } +} +``` + +dalam route web di routes/web.php tambahkan ini di route yang ingin menggunakan authentication apikey. +```php +->middleware('ApiKey'); + +//Atau + +Route::group('middleware' => 'ApiKey'], function(){ + //Your Route +}); ``` -#### Running Modul +#### Running Modul browse dari browser anda ```sh -http://your_domain.dev/api_manager +http://your_domain.dev/api-manager ``` -#### Running Modul +#### Running Modul tambahkan pada .env anda parameter berikut ```sh diff --git a/src/controller/ApiManagerController.php b/src/controller/ApiManagerController.php index 992ae19..6ea9951 100644 --- a/src/controller/ApiManagerController.php +++ b/src/controller/ApiManagerController.php @@ -10,7 +10,12 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; -use App\ApiManager; +use App\ApiKeys; +use Bantenprov\Workflow\Models\WorkflowModel; +use Bantenprov\Workflow\Models\WorkflowState; +use Bantenprov\Workflow\Models\WorkflowTransition; +use Bantenprov\Workflow\Models\History; +use That0n3guy\Transliteration; use Validator, Session, Redirect; class ApiManagerController extends Controller @@ -19,15 +24,13 @@ public function index(Request $request) { if($request->get('search') != '') { - $data['data'] = ApiManager::where('client', 'like', '%'.$request->get('search').'%') + $data['data'] = ApiKeys::where('client', 'like', '%'.$request->get('search').'%') ->orderBy('id', 'desc') ->paginate(env('PAGINATE', 10)); - } else { - $data['data'] = ApiManager::orderBy('id', 'desc')->paginate(env('PAGINATE', 10)); - + $data['data'] = ApiKeys::orderBy('id', 'desc')->paginate(env('PAGINATE', 10)); } return view('api_manager.index', $data); } @@ -40,7 +43,7 @@ public function create() public function store(Request $request) { $validator = Validator::make($request->all(), [ - 'client' => 'required|unique:api_manager,client', + 'client' => 'required|unique:api_keys,client', 'description' => 'required', ]); if($validator->fails()) @@ -52,28 +55,36 @@ public function store(Request $request) } $token = $this->token(); - $api = New ApiManager; + $api = New ApiKeys; $api->client = str_replace(array('https://', 'http://'), array('',''),$request->input('client')); - $api->api_keys = $token; - $api->api_token = $token; - // $api->api_keys = $this->token(); + $api->api_key = $token; $api->description = $request->input('description'); - $api->user_id = 1; + $api->user_id = 1; $api->save(); + + //create history default + $model = "ApiKeys"; + $fromState = "propose"; + $toState = "propose"; + $workflow = $this->getWorkflow($model); + $statesFrom = $this->getState($fromState); + $statesTo = $this->getState($toState); + $this->saveHistory($api, $workflow, $statesFrom, $statesTo); + Session::flash('message', 'Api Keys Data Saved Successfuly'); - return Redirect::to('api_manager'); + return Redirect::to('api-manager'); } public function edit(Request $request, $id) { - $data['data'] = ApiManager::findOrFail($id); + $data['data'] = ApiKeys::findOrFail($id); return view('api_manager.edit', $data); } public function update(Request $request, $id) { $validator = Validator::make($request->all(), [ - 'client' => 'required|unique:api_manager,client,'.$id, + 'client' => 'required|unique:api_keys,client,'.$id, 'description' => 'required', ]); if($validator->fails()) @@ -84,17 +95,17 @@ public function update(Request $request, $id) ->withInput(); } - $api = ApiManager::findOrFail($id); - $api->client = str_replace(array('https://', 'http://'),array('',''),$request->input('client')); + $api = ApiKeys::findOrFail($id); + $api->client = str_replace(array('https://', 'http://'),array('',''),$request->input('client')); $api->description = $request->input('description'); $api->save(); Session::flash('message', 'Api Keys Data Update Successfuly'); - return Redirect::to('api_manager'); + return Redirect::to('api-manager'); } public function token() { - $length = 100; + $length = 70; $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; @@ -103,4 +114,26 @@ public function token() } return $randomString; } + + private function getWorkflow($model){ + $data = WorkflowModel::where('content_type', 'like', '%' . $model . '%')->get(); + return $data; + } + + private function getState($state){ + $name = \Transliteration::clean_filename(strtolower($state)); + $data = WorkflowState::where('status', 1)->where('name', 'like', '%' . $name . '%')->get(); + return $data; + } + + private function saveHistory($api, $workflow, $statesFrom, $statesTo){ + $history = New History; + $history->content_id = $api->id; + $history->Workflow_id = $workflow[0]->id; + $history->from_state = $statesFrom[0]->id; + $history->to_state = $statesTo[0]->id; + $history->user_id = 1; + $history->save(); + return $history; + } } diff --git a/src/migrations/2017_11_27_175255_create_api_manager_table.php b/src/migrations/2017_11_27_175255_create_api_manager_table.php index f29da20..de2a528 100644 --- a/src/migrations/2017_11_27_175255_create_api_manager_table.php +++ b/src/migrations/2017_11_27_175255_create_api_manager_table.php @@ -14,13 +14,12 @@ class CreateApiManagerTable extends Migration { public function up() { - Schema::create('api_manager', function(Blueprint $table) { + Schema::create('api_keys', function(Blueprint $table) { $table->increments('id'); $table->timestamps(); $table->string('user_id', 100); $table->string('client', 225); - $table->string('api_keys', 255); - $table->string('api_token', 255); + $table->string('api_key', 255); $table->text('description'); $table->integer('is_published')->default('1'); }); @@ -28,6 +27,6 @@ public function up() public function down() { - Schema::drop('api_manager'); + Schema::drop('api_keys'); } } diff --git a/src/models/ApiManager.php b/src/models/ApiKeys.php similarity index 79% rename from src/models/ApiManager.php rename to src/models/ApiKeys.php index 974533f..d4bc4c9 100644 --- a/src/models/ApiManager.php +++ b/src/models/ApiKeys.php @@ -11,10 +11,12 @@ use Illuminate\Database\Eloquent\Model; -class ApiManager extends Model +class ApiKeys extends Model { - protected $table = "api_manager"; + protected $table = "api_keys"; public $hidden = ['created_at', 'updated_at']; + + } diff --git a/src/stubs/route.stub b/src/stubs/route.stub index afe9ce5..20052a8 100644 --- a/src/stubs/route.stub +++ b/src/stubs/route.stub @@ -1 +1 @@ -Route::resource('api_manager', 'ApiManagerController'); \ No newline at end of file +Route::resource('api-manager', 'ApiManagerController'); diff --git a/src/views/create.blade.php b/src/views/create.blade.php index 1174b24..e302bef 100644 --- a/src/views/create.blade.php +++ b/src/views/create.blade.php @@ -13,7 +13,7 @@ -
+
@@ -34,7 +34,7 @@ {!! method_field('POST') !!} @@ -46,4 +46,4 @@
- \ No newline at end of file + diff --git a/src/views/edit.blade.php b/src/views/edit.blade.php index 8c85d13..df2423f 100644 --- a/src/views/edit.blade.php +++ b/src/views/edit.blade.php @@ -13,11 +13,11 @@ - +
- +
@@ -38,7 +38,7 @@ {!! method_field('PUT') !!} @@ -50,4 +50,4 @@
- \ No newline at end of file + diff --git a/src/views/index.blade.php b/src/views/index.blade.php index 618b9bf..73de50f 100644 --- a/src/views/index.blade.php +++ b/src/views/index.blade.php @@ -6,7 +6,7 @@
- +
@@ -45,8 +45,8 @@ {{ $i++ }} {{$row->created_at->format('M d, Y')}} {{ $row->client }} - {{$row->api_keys}} - + {{$row->api_key}} + action @@ -56,7 +56,7 @@ {!! csrf_field() !!} @@ -66,4 +66,4 @@
-
\ No newline at end of file +