Skip to content

Commit 4cb09ab

Browse files
committed
Cant delete use roles or default roles
1 parent 84ef4d7 commit 4cb09ab

File tree

2 files changed

+41
-1
lines changed

2 files changed

+41
-1
lines changed

src/Api/Controllers/RolesController.php

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
namespace Canvas\Api\Controllers;
66

7-
use Canvas\Models\Roles;
7+
use Baka\Http\Exception\ForbiddenException;
88
use Canvas\Models\Apps;
9+
use Canvas\Models\Roles;
10+
use Phalcon\Http\Response;
911

1012
class RolesController extends BaseController
1113
{
@@ -39,4 +41,32 @@ public function onConstruct()
3941
['companies_id', ':', '1|' . $this->userData->currentCompanyId()],
4042
];
4143
}
44+
45+
/**
46+
* Delete a Record.
47+
*
48+
* @throws Exception
49+
*
50+
* @return Response
51+
*/
52+
public function delete($id) : Response
53+
{
54+
$role = $this->getRecordById($id);
55+
56+
if ($role->companies_id === Apps::CANVAS_DEFAULT_APP_ID) {
57+
throw new ForbiddenException('Cant delete a Global App Role');
58+
}
59+
60+
if ($role->getUsers()->count() > 0) {
61+
throw new ForbiddenException('Cant delete a Role in use');
62+
}
63+
64+
if ($this->softDelete) {
65+
$role->softDelete();
66+
} else {
67+
$role->delete();
68+
}
69+
70+
return $this->response(['Delete Successfully']);
71+
}
4272
}

src/Models/Roles.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,16 @@ public function initialize()
5151
'roles_id',
5252
['alias' => 'accessList']
5353
);
54+
55+
$this->hasMany(
56+
'id',
57+
UserRoles::class,
58+
'roles_id',
59+
[
60+
'alias' => 'users',
61+
'conditions' => 'is_delete = 0'
62+
]
63+
);
5464
}
5565

5666
/**

0 commit comments

Comments
 (0)