1

I am planning to implement permissions of sentinel in laravel 5.3. I have created permissions.php inside config folder.

config/permissions.php file

<?php

return array(

    'User Management -> Role Management' => array(
        array(
            'permission' => 'role-management.view',
            'label'      => 'View',
        ),
        array(
            'permission' => 'role-management.create',
            'label'      => 'Create',
        ),
        array(
            'permission' => 'role-management.edit',
            'label'      => 'Edit',
        ),
        array(
            'permission' => 'role-management.delete',
            'label'      => 'Delete',
        ),
    ),

    'User Management -> User Management' => array(
        array(
            'permission' => 'user-management.view',
            'label'      => 'View',
        ),
        array(
            'permission' => 'user-management.create',
            'label'      => 'Create',
        ),
        array(
            'permission' => 'user-management.edit',
            'label'      => 'Edit',
        ),
        array(
            'permission' => 'user-management.delete',
            'label'      => 'Delete',
        ),
    ),

);

Then, in my controller I have created a get route for view.

Route

Route::get('/manage-role/edit/{slug}', ['as' => 'edit', 'uses' => 'RoleController@edit']);

My controller method looks like this

public function edit($slug)
{
    //get selected role ex: admin, manager or user
    $role = Sentinel::findRoleBySlug($slug);

    $permissions = Config::get('permissions');

    foreach ($permissions as $permission) {

        foreach ($permission as $eachPermission) {

            $encodedPermission = base64_encode($eachPermission['permission']);

            $eachPermission['encodedPermission'] = $encodedPermission;

        }
    }

    //return view
    return view('backend.admin.user-management.edit-role', [
        'role'        => $role,
        'permissions' => $permissions
    ]);
}

And my view looks like this, I have removed bootstrap and other just to focus on the logic.

edit-role.blade.php

<form action="" method="post"> 
    @foreach ($permissions as $permissionHeader => $permissions)

        <h3 class="box-title">{{ $permissionHeader }}</h3>


        @foreach ($permissions as $key => $permission)
            <label class="control-group">{{{ $permission['label'] }}}</label>

                <input type="radio" name="{{ $permission['label'] }}" class="flat-red" checked> Enable

                <input type="radio" name="{{ $permission['label'] }}" class="flat-red"> Disable
            </label>
        @endforeach

    @endforeach
    <button type="submit" class="btnRoleForm btn btn-success">Save Roles</button>
    </div>
</form>

This is an image for setting permission for manager from Admin Dashboard

enter image description here

I want to check the radio button for each permission create, view, update, delete for each type(user management, role management, etc). I am currently stucked.

when I use name="{{ $permission['encodedPermission'] }}" in blade, I get error. This key is not set in array.

I want to set all permissions on save button. Am I doing correctly or is there other effective way for doing this. Help Wanted.

VijayRana
  • 953
  • 1
  • 13
  • 38

0 Answers0