laravel-role-entrust
ENTRUST : Role-based Permissions for Laravel 5
showing all roles inside admin
@forelse($roles as $role)
@empty
@endforelse
adding permission to role
@foreach($permissions as $permission)
<div>
<input type="checkbox" name="permission[]" value="{{$permission->id}}"> {{$permission->name}}
</div>
@endforeach
inserting a row in role table without destructing $request
. and attach permission to it
Role name, Display name, description
$role = Role::create($request->except(['permission', '_token']));
foreach($request->permission as $key => $value) {
$role->attachPermission($value);
}
edit permission
in controller
$role = Role::find($id);
$permissions = Permission::all();
$role_permission = $role->perms->pluck('id', 'id')->toArray();
in blade file
@foreach($permissions as $permisson)
<input
value={{$permission->id}}
type="checkbox" {{ in_array($permission->id, $role_permission) ? 'checked': ''}}>
{{$permission->name}}
@endforeach
method field for update
method_field('PATCH');
update permission
in controller
$role = Role::find($id);
$role->name = $request->input('name');
$role->description = $request->input('description');
$role->display_name = $request->input('display_name');
DB::table('permission_role')->where("role_id", $id)->delete();
foreach($request->permission as $key => $value) {
$role->attachPermission($value);
}
assign roles to user
Inside Register controller create method
$user = User::create([]);
$role = Role::where('name', 'admin')->first();
$user->attachRole($role);
return $user;
Control features according roles
public function __construct () {
$this->middleware('role:admin')->only('create');
}
edit user and assign multiple roles
inside blade
<select name="roles[]" multiple id="">
@foreach($all_roles as $role)
<option value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
<!-- for making unique form and modal we will user id as suffix -->
onclick="$('#role-form-{{$user->id}}').submit()"
Inside controller
$user = User::find($id);
$roles = $request->input('roles');
DB::table('role_user')->where('user_id', $id)->delete();
foreach($roles as $role) {
$user->attachRole($role);
}