99use Contexts \Authorization \Application \DTOs \Role \GetRoleListDTO ;
1010use Contexts \Authorization \Application \DTOs \Role \UpdateRoleDTO ;
1111use Contexts \Authorization \Domain \Factories \RoleFactory ;
12+ use Contexts \Authorization \Domain \Policies \GlobalPermissionPolicy ;
1213use Contexts \Authorization \Domain \Repositories \RoleRepository ;
1314use Contexts \Authorization \Domain \Role \Models \Role ;
1415use Contexts \Authorization \Domain \Role \Models \RoleId ;
1516use Contexts \Authorization \Domain \Role \Models \RoleStatus ;
1617use Contexts \Shared \Application \BaseCoordinator ;
18+ use Contexts \Shared \Policies \CompositePolicy ;
1719use Illuminate \Contracts \Pagination \LengthAwarePaginator ;
1820
1921class RoleCoordinator extends BaseCoordinator
@@ -25,6 +27,10 @@ public function __construct(
2527
2628 public function create (CreateRoleDTO $ data ): Role
2729 {
30+ CompositePolicy::allOf ([
31+ new GlobalPermissionPolicy ('role.create ' ),
32+ ])->check ();
33+
2834 $ role = $ this ->factory ->create (
2935 RoleId::null (),
3036 $ data ->label ,
@@ -36,16 +42,28 @@ public function create(CreateRoleDTO $data): Role
3642
3743 public function getRole (int $ id ): Role
3844 {
45+ CompositePolicy::allOf ([
46+ new GlobalPermissionPolicy ('role.get ' ),
47+ ])->check ();
48+
3949 return $ this ->repository ->getById (RoleId::fromInt ($ id ));
4050 }
4151
4252 public function getRoleList (GetRoleListDTO $ data ): LengthAwarePaginator
4353 {
54+ CompositePolicy::allOf ([
55+ new GlobalPermissionPolicy ('role.list ' ),
56+ ])->check ();
57+
4458 return $ this ->repository ->paginate ($ data ->currentPage , $ data ->perPage , $ data ->toCriteria (), $ data ->toSorting ());
4559 }
4660
4761 public function updateRole (int $ id , UpdateRoleDTO $ data ): Role
4862 {
63+ CompositePolicy::allOf ([
64+ new GlobalPermissionPolicy ('role.udpate ' ),
65+ ])->check ();
66+
4967 $ role = $ this ->repository ->getById (RoleId::fromInt ($ id ));
5068 $ role ->modify (
5169 $ data ->label ,
@@ -62,6 +80,10 @@ public function updateRole(int $id, UpdateRoleDTO $data): Role
6280
6381 public function subspendRole (int $ id )
6482 {
83+ CompositePolicy::allOf ([
84+ new GlobalPermissionPolicy ('role.suspend ' ),
85+ ])->check ();
86+
6587 $ role = $ this ->repository ->getById (RoleId::fromInt ($ id ));
6688 $ role ->subspend ();
6789
@@ -72,6 +94,10 @@ public function subspendRole(int $id)
7294
7395 public function deleteRole (int $ id )
7496 {
97+ CompositePolicy::allOf ([
98+ new GlobalPermissionPolicy ('role.delete ' ),
99+ ])->check ();
100+
75101 $ role = $ this ->repository ->getById (RoleId::fromInt ($ id ));
76102 $ role ->delete ();
77103
0 commit comments