Skip to content

Commit

Permalink
Merge pull request #10 from etanasia/master
Browse files Browse the repository at this point in the history
pull request
  • Loading branch information
andri-sudarmawijaya committed Dec 16, 2017
2 parents f6d1948 + a26d1de commit 92b4aa7
Show file tree
Hide file tree
Showing 8 changed files with 134 additions and 45 deletions.
71 changes: 63 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -32,12 +33,14 @@ API Key Management ini dilengkapi dengan workflow management yang digunakan untu
#### <i class="icon-file"></i> Install package

```sh
composer require bantenprov/laravel-api-manager :dev-master
composer require bantenprov/laravel-api-manager:dev-master
```
#### <i class="icon-file"></i> 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,
```

Expand All @@ -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.
```
#### <i class="icon-file"></i> tambahkan route
#### <i class="icon-file"></i> tambahkan route

running script
```sh
Expand All @@ -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');
```

#### <i class="icon-file"></i> Migrasi database
#### <i class="icon-file"></i> 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
});
```

#### <i class="icon-file"></i> Running Modul
#### <i class="icon-file"></i> Running Modul

browse dari browser anda
```sh
http://your_domain.dev/api_manager
http://your_domain.dev/api-manager
```
#### <i class="icon-file"></i> Running Modul
#### <i class="icon-file"></i> Running Modul

tambahkan pada .env anda parameter berikut
```sh
Expand Down
69 changes: 51 additions & 18 deletions src/controller/ApiManagerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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);
}
Expand All @@ -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())
Expand All @@ -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())
Expand All @@ -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 = '';
Expand All @@ -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;
}
}
7 changes: 3 additions & 4 deletions src/migrations/2017_11_27_175255_create_api_manager_table.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,19 @@ 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');
});
}

public function down()
{
Schema::drop('api_manager');
Schema::drop('api_keys');
}
}
6 changes: 4 additions & 2 deletions src/models/ApiManager.php → src/models/ApiKeys.php
Original file line number Diff line number Diff line change
Expand Up @@ -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'];



}
2 changes: 1 addition & 1 deletion src/stubs/route.stub
Original file line number Diff line number Diff line change
@@ -1 +1 @@
Route::resource('api_manager', 'ApiManagerController');
Route::resource('api-manager', 'ApiManagerController');
6 changes: 3 additions & 3 deletions src/views/create.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
</div><!-- /.box-header -->

<!-- form start -->
<form action="{{ url('api_manager') }}" method="post">
<form action="{{ url('api-manager') }}" method="post">
<div class="box-body">
<div class="form-group{{ $errors->has('client') ? ' has-error' : '' }}">
<label for="name"> Client</label>
Expand All @@ -34,7 +34,7 @@
<div class="box-footer">
<div class="pull-right">
<button type="submit" class="btn btn-primary">Save</button>
<a href="{{ url('api_manager') }}" class="btn btn-danger">Cancel</a>
<a href="{{ url('api-manager') }}" class="btn btn-danger">Cancel</a>
</div>
</div>
{!! method_field('POST') !!}
Expand All @@ -46,4 +46,4 @@
</div>
</section>
</div>
</div> <!-- /.row -->
</div> <!-- /.row -->
8 changes: 4 additions & 4 deletions src/views/edit.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@
</div><!-- /.box-header -->

<!-- form start -->
<form action="{{ url('api_manager', $data->id) }}" method="post">
<form action="{{ url('api-manager', $data->id) }}" method="post">
<div class="box-body">
<div class="form-group ">
<label for="name"> Api Keys</label>
<input type="text" name="" id="" class="form-control" value="{{ $data->api_keys }}" required>
<input type="text" name="" id="" class="form-control" value="{{ $data->api_key }}" readonly required>
</div>
<div class="form-group{{ $errors->has('client') ? ' has-error' : '' }}">
<label for="name"> Client</label>
Expand All @@ -38,7 +38,7 @@
<div class="box-footer">
<div class="pull-right">
<button type="submit" class="btn btn-primary">Save</button>
<a href="{{ url('api_manager') }}" class="btn btn-danger">Cancel</a>
<a href="{{ url('api-manager') }}" class="btn btn-danger">Cancel</a>
</div>
</div>
{!! method_field('PUT') !!}
Expand All @@ -50,4 +50,4 @@
</div> <!-- /.row -->
</section>
</div>
</div>
</div>
10 changes: 5 additions & 5 deletions src/views/index.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<div class="row">
<div class="col-md-12">
<div class="box">
<form action="{{url('api_manager')}}" method="GET">
<form action="{{url('api-manager')}}" method="GET">
<div class="box-body">
<div class="form-group">
<label for="name">Name</label>
Expand Down Expand Up @@ -45,8 +45,8 @@
<td>{{ $i++ }}</td>
<td>{{$row->created_at->format('M d, Y')}}</td>
<td>{{ $row->client }}</a></td>
<td>{{$row->api_keys}}</td>
<td><a href="{{ url('api_manager', $row->id).'/edit' }}" class="btn btn-warning btn-sm">
<td>{{$row->api_key}}</td>
<td><a href="{{ url('api-manager', $row->id).'/edit' }}" class="btn btn-warning btn-sm">
action
</a></td>
</tr>
Expand All @@ -56,7 +56,7 @@
<div class="box-footer clearfix">
{!! $data->render() !!}
<div class="pull-right">
<a href="{{ url('api_manager/create') }}" class="btn btn-success">Add</a>
<a href="{{ url('api-manager/create') }}" class="btn btn-success">Add</a>
</div>
</div>
{!! csrf_field() !!}
Expand All @@ -66,4 +66,4 @@
</div> <!-- /.row -->
</section>
</div>
</div>
</div>

0 comments on commit 92b4aa7

Please sign in to comment.