Skip to content

Commit d206512

Browse files
committed
Merge pull request silverbux#14 from silverbux/role-permissions
Ability to set role permissions
2 parents 7d8f916 + d532673 commit d206512

File tree

3 files changed

+53
-4
lines changed

3 files changed

+53
-4
lines changed

angular/app/components/user-roles-edit/user-roles-edit.component.html

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,16 @@ <h4>{{alert.title}}</h4>
3939
<textarea class="form-control" rows="3" ng-model="vm.role.data.description" name="description" placeholder="Description"></textarea>
4040
</div>
4141
</div>
42+
<div class="form-group">
43+
<label for="inputEmail3" class="col-sm-2 control-label">Permission</label>
44+
<div class="col-sm-10">
45+
<div class="checkbox" ng-repeat="permission in vm.systemPermissions">
46+
<label>
47+
<input type="checkbox" checklist-model="vm.role.data.permissions" checklist-value="permission.id"> {{permission.name}}
48+
</label>
49+
</div>
50+
</div>
51+
</div>
4252
</div>
4353
<div class="box-footer">
4454
<a ui-sref="app.userroles" class="btn btn-default"><i class="fa fa-angle-double-left"></i> Back</a>

angular/app/components/user-roles-edit/user-roles-edit.component.js

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,33 @@ class UserRolesEditController{
1010
this.alerts.push($stateParams.alerts);
1111
}
1212

13+
let Permissions = API.service('permissions', API.all('users'));
14+
15+
Permissions.getList()
16+
.then((response) => {
17+
let permissionList = []
18+
let permissionResponse = response.plain()
19+
20+
angular.forEach(permissionResponse, function(value, key) {
21+
permissionList.push({id: value.id, name: value.name})
22+
})
23+
24+
this.systemPermissions = permissionList
25+
}, (response) => {
26+
console.log(response);
27+
});
28+
1329
let roleId = $stateParams.roleId;
1430
let Role = API.service('roles-show', API.all('users'));
1531
Role.one(roleId).get()
1632
.then((response) => {
17-
let res = response.plain()
18-
let data = res.data.role
33+
let rolePermissions = []
34+
35+
angular.forEach(response.data.permissions, function(value, key) {
36+
rolePermissions.push(value.id)
37+
})
38+
39+
response.data.permissions = rolePermissions;
1940

2041
this.role = API.copy(response)
2142
}, (response) => {

app/Http/Controllers/UserController.php

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,34 @@ public function getRolesShow($id)
9090
{
9191
$role = Role::find($id);
9292

93+
$role['permissions'] = $role
94+
->permissions()
95+
->select(array('permissions.name','permissions.id'))
96+
->get();
97+
9398
return response()->success($role);
9499
}
95100

96101
public function putRolesShow()
97102
{
98103
$roleForm = Input::get('data');
104+
$roleData = array(
105+
'name' => $roleForm['name'],
106+
'slug' => $roleForm['slug'],
107+
'description' => $roleForm['description']
108+
);
109+
99110
$roleForm['slug'] = str_slug($roleForm['slug'], ".");
100-
$affectedRows = Role::where('id', '=', intval($roleForm['id']))->update($roleForm);
111+
$affectedRows = Role::where('id', '=', intval($roleForm['id']))->update($roleData);
101112

102-
return response()->success($roleForm);
113+
$role = Role::find($roleForm['id']);
114+
$role->detachAllPermissions();
115+
116+
foreach (Input::get('data.permissions') as $setPermission) {
117+
$role->attachPermission($setPermission);
118+
}
119+
120+
return response()->success('success');
103121
}
104122

105123
public function postRoles() {

0 commit comments

Comments
 (0)