standard response rest based on https://developers.getbase.com
Requirement :
- "laravel/framework": "5.6.*"
Dependencies :
- "tymon/jwt-auth": "dev-develop"
- "lcobucci/jwt": "^3.2"
- "ramsey/uuid": "^3.8"
"repositories": [
{
"type": "vcs",
"url": "https://github.com/zafex/apilaracms"
}
]
composer require zafex/apiexlara
php artisan vendor:publish --provider="Apiex\ApiexServiceProvider"
php artisan jwt:secret
note: Apiex\ApiexServiceProvider is extended from Tymon\JWTAuth\Providers\LaravelServiceProvider for create config/jwt.php
add 'api.token' => \Apiex\Middleware\TokenAuthorization::class
to routeMiddleware on Kernel.php
Migrating Schema
php artisan migrate
make sure your migrations folder is not contains :
- audit
- audit_detail
- privilege
- privilege_user
- privilege_assignment
- user
- user_info
- user_permission
- setting
- menu
- menu_item
Generate permissions base on route's name
php artisan apiex:generate-permissions
Generate role for admin (all permissions)
php artisan apiex:generate-admin
Create user
php artisan apiex:create-user
Apiex\Actions\Auth\Authentication
create Controller
<?php
namespace App\Http\Controllers;
use Apiex\Actions\Auth;
class AuthController extends Controller
{
// trait Auth\Authentication has one method authenticate(for create jwt token)
use Auth\Authentication;
}
create Route
// route name is required
Route::post('/login', 'UserController@authenticate')->name('auth.user.login');
Route::post('/register', 'UserController@register')->name('auth.user.register');
Apiex\Actions\User\Information
trait User\Information has two method:
- detail (for get detail information from current user login)
- update (for update detail information on current user login)
create Controller
<?php
namespace App\Http\Controllers;
use Apiex\Actions\User;
class MeController extends Controller
{
use User\Information;
}
create Route
// route name is required
// use middleware api.token for verify jwt token and user permission
Route::get('/me', 'MeController@detail')->middleware('api.token')->name('me.detail');
Route::post('/me/update', [
'as' => 'me.update',
'uses' => 'MeController@update',
'middleware' => [
'api.token'
]
]);
More Actions..
Apiex\Actions\Audit\LogList
- index (for listing logs)
Apiex\Actions\Audit\LogDetail
- detail (for individual detail logs)
Apiex\Actions\User\MemberList
- index (for user list)
Apiex\Actions\User\MemberCreate
- create (for create user)
Apiex\Actions\User\MemberDetail
- detail (for individual detail user)
Apiex\Actions\User\MemberUpdate
- update (for update individual user)
Apiex\Actions\User\MemberDelete
- delete (for change status user to inactive or 0)
ResponseSingular
for send response as singular or like detail page.
public function detail(Request $request)
{
return app('ResponseSingular')->setItem(['name' => 'dor'])->send(200);
}
ResponseCollection
for send response as collection or like index page
public function index(Request $request)
{
return app('ResponseCollection')
->addCollection(['name' => 'dor-1'])
->addCollection(['name' => 'dor-1'])
->send();
}
ResponseError
for send response error as collection.
public function exception()
{
$e = new Exception('this is error exception');
return app('ResponseError')->withException($e)->send();
}
public function message()
{
return app('ResponseError')->withMessage('this is error message')->send();
}
public function validation()
{
if ($validator->fails()) {
return app('ResponseError')->withValidation($validator)->send();
}
}