Installed laravel-permission and laravel-modules

This commit is contained in:
Gregorio Chiko Putra
2018-07-30 09:26:17 +07:00
parent 70fe3a814c
commit eee570125d
86 changed files with 23539 additions and 253 deletions

8
app/Admin.php Normal file
View File

@@ -0,0 +1,8 @@
<?php
namespace App;
class Admin extends User
{
protected $guard_name = 'api';
}

View File

@@ -0,0 +1,89 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Permission;
use App\Http\Requests\StorePermission;
use App\Http\Requests\UpdatePermission;
class PermissionController extends Controller
{
/**
* Display a listing of the resource
* @return Response
*/
public function index()
{
$response = Permission::all();
return response()->json([
'data' => $response
]);
}
/**
* Store a newly created resource in storage
* @param StorePermission $request
* @return Response
*/
public function store(StorePermission $request)
{
$validated = $request->validated();
$response = Permission::create($validated);
return response()->json([
'data' => $response
]);
}
/**
* Show the specified resource
* @param int $id
* @return Response
*/
public function show($id)
{
$response = Permission::findOrFail($id);
return response()->json([
'data' => $response
]);
}
/**
* Update the specified resource in storage
* @param UpdatePermission $request
* @return Response
*/
public function update(UpdatePermission $request, $id)
{
$validated = $request->validated();
$permission = Permission::findOrFail($id);
$permission->update($validated);
return response()->json([
'data' => $permission
]);
}
/**
* Remove the specified resource from storage
* @param int $id
* @return Response
*/
public function destroy($id)
{
$permission = Permission::findOrFail($id);
$permission->delete();
return response()->json([
'message' => 'The data has been deleted'
]);
}
}

View File

@@ -0,0 +1,88 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Role;
use App\Http\Requests\StoreRole;
use App\Http\Requests\UpdateRole;
class RoleController extends Controller
{
/**
* Display a listing of the resource
* @return Response
*/
public function index()
{
$response = Role::all();
return response()->json([
'data' => $response
]);
}
/**
* Store a newly created resource in storage
* @param StoreRole $request
* @return Response
*/
public function store(StoreRole $request)
{
$validated = $request->validated();
$response = Role::create($validated);
return response()->json([
'data' => $response
]);
}
/**
* Show the specified resource
* @param int $id
* @return Response
*/
public function show($id)
{
$response = Role::findOrFail($id);
return response()->json([
'data' => $response
]);
}
/**
* Update the specified resource in storage
* @param UpdateRole $request
* @return Response
*/
public function update(UpdateRole $request, $id)
{
$validated = $request->validated();
$role = Role::findOrFail($id);
$role->update($validated);
return response()->json([
'data' => $role
]);
}
/**
* Remove the specified resource from storage
* @param int $id
* @return Response
*/
public function destroy($id)
{
$role = Role::findOrFail($id);
$role->delete();
return response()->json([
'message' => 'The data has been deleted'
]);
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Permission;
use App\Role;
use App\Http\Resources\PermissionResource;
use App\Http\Resources\RoleResource;
class UserRolePermissionController extends Controller
{
public function permissionAttachRole($permission, $role)
{
$permission = Permission::findOrFail($permission);
$role = Role::findOrFail($role);
$permission->assignRole($role);
return new PermissionResource($permission);
}
public function permissionAttachMultiRoles(Request $roles, $permission)
{
$permission = Permission::findOrFail($permission);
$roles = Role::whereIn('id', $roles)->get();
$permission->syncRoles($roles);
return new PermissionResource($permission);
}
public function permissionRemoveRole($permission, $role)
{
$permission = Permission::findOrFail($permission);
$role = Role::findOrFail($role);
$permission->removeRole($role);
return new PermissionResource($permission);
}
public function roleAttachPermission($role, $permission)
{
$role = Role::findOrFail($role);
$permission = Permission::findOrFail($permission);
$role->givePermissionTo($permission);
return new RoleResource($role);
}
public function roleAttachMultiPermissions(Request $permissions, $role)
{
$role = Role::findOrFail($role);
$permissions = Permission::whereIn('id', $permissions)->get();
$role->syncPermissions($permissions);
return new RoleResource($role);
}
public function roleRemovePermission($role, $permission)
{
$role = Role::findOrFail($role);
$permission = Permission::findOrFail($permission);
$role->revokePermissionTo($permission);
return new RoleResource($role);
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Permission;
use Illuminate\Support\Facades\Auth;
class StorePermission extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user()->can('create-permission');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Permission::getCreateRules();
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use App\Role;
class StoreRole extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user()->can('create-role');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Role::getCreateRules();
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use App\Permission;
use Illuminate\Support\Facades\Auth;
class UpdatePermission extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user()->can('update-permission');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$id = $this->permission;
return Permission::getUpdateRulesForId($id);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Auth;
use App\Role;
class UpdateRole extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return Auth::user()->can('update-role');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$id = $this->role;
return Role::getUpdateRulesForId($id);
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class PermissionResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => [
'id' => $this->id,
'name' => $this->name,
'guard_name' => $this->guard_name,
'created_at' => $this->created_at->toIso8601String(),
'updated_at' => $this->updated_at->toIso8601String(),
'deleted_at' => $this->deleted_at
? $this->deleted_at->toIso8601String()
: $this->deleted_at,
'roles' => $this->roles,
'users' => $this->users,
]
];
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\Resource;
class RoleResource extends Resource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'data' => [
'id' => $this->id,
'name' => $this->name,
'guard_name' => $this->guard_name,
'created_at' => $this->created_at->toIso8601String(),
'updated_at' => $this->updated_at->toIso8601String(),
'deleted_at' => $this->deleted_at
? $this->deleted_at->toIso8601String()
: $this->deleted_at,
'permissions' => $this->permissions,
'users' => $this->users
]
];
}
}

28
app/Permission.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Permission\Models\Permission as PermissionParent;
use Sofa\Eloquence\Eloquence;
use Sofa\Eloquence\Validable;
use Sofa\Eloquence\Contracts\CleansAttributes;
use Sofa\Eloquence\Contracts\Validable as ValidableContract;
class Permission extends PermissionParent implements ValidableContract, CleansAttributes
{
use SoftDeletes, Eloquence, Validable;
protected $fillable = [
'name', 'guard_name',
];
protected $dates = [
'created_at', 'updated_at', 'deleted_at',
];
protected static $businessRules = [
'name' => 'required|string|min:3',
'guard_name' => 'string|min:3'
];
}

View File

@@ -2,6 +2,7 @@
namespace App\Providers;
use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
@@ -25,6 +26,6 @@ class AuthServiceProvider extends ServiceProvider
{
$this->registerPolicies();
//
Passport::routes();
}
}

28
app/Role.php Normal file
View File

@@ -0,0 +1,28 @@
<?php
namespace App;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Permission\Models\Role as RoleParent;
use Sofa\Eloquence\Eloquence;
use Sofa\Eloquence\Validable;
use Sofa\Eloquence\Contracts\CleansAttributes;
use Sofa\Eloquence\Contracts\Validable as ValidableContract;
class Role extends RoleParent implements ValidableContract, CleansAttributes
{
use SoftDeletes, Eloquence, Validable;
protected $fillable = [
'name', 'guard_name',
];
protected $dates = [
'created_at', 'updated_at', 'deleted_at',
];
protected static $businessRules = [
'name' => 'required|string|min:3',
'guard_name' => 'string|min:3'
];
}

View File

@@ -2,12 +2,21 @@
namespace App;
use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable;
use Notifiable, HasApiTokens, HasRoles;
/**
* Define the base table name
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
@@ -26,4 +35,9 @@ class User extends Authenticatable
protected $hidden = [
'password', 'remember_token',
];
public function karyawans()
{
return $this->hasMany(\Modules\Karyawaf\Entities\Karyawan::class, 'created_by');
}
}