11<?php namespace BookStack \Auth \Permissions ;
22
3- use BookStack \Auth \Permissions ;
43use BookStack \Auth \Role ;
54use BookStack \Exceptions \PermissionsException ;
5+ use Exception ;
6+ use Illuminate \Database \Eloquent \Collection ;
67use Illuminate \Support \Str ;
78
89class PermissionsRepo
@@ -16,11 +17,8 @@ class PermissionsRepo
1617
1718 /**
1819 * PermissionsRepo constructor.
19- * @param RolePermission $permission
20- * @param Role $role
21- * @param \BookStack\Auth\Permissions\PermissionService $permissionService
2220 */
23- public function __construct (RolePermission $ permission , Role $ role , Permissions \ PermissionService $ permissionService )
21+ public function __construct (RolePermission $ permission , Role $ role , PermissionService $ permissionService )
2422 {
2523 $ this ->permission = $ permission ;
2624 $ this ->role = $ role ;
@@ -29,46 +27,34 @@ public function __construct(RolePermission $permission, Role $role, Permissions\
2927
3028 /**
3129 * Get all the user roles from the system.
32- * @return \Illuminate\Database\Eloquent\Collection|static[]
3330 */
34- public function getAllRoles ()
31+ public function getAllRoles (): Collection
3532 {
3633 return $ this ->role ->all ();
3734 }
3835
3936 /**
4037 * Get all the roles except for the provided one.
41- * @param Role $role
42- * @return mixed
4338 */
44- public function getAllRolesExcept (Role $ role )
39+ public function getAllRolesExcept (Role $ role ): Collection
4540 {
4641 return $ this ->role ->where ('id ' , '!= ' , $ role ->id )->get ();
4742 }
4843
4944 /**
5045 * Get a role via its ID.
51- * @param $id
52- * @return mixed
5346 */
54- public function getRoleById ($ id )
47+ public function getRoleById ($ id ): Role
5548 {
56- return $ this ->role ->findOrFail ($ id );
49+ return $ this ->role ->newQuery ()-> findOrFail ($ id );
5750 }
5851
5952 /**
6053 * Save a new role into the system.
61- * @param array $roleData
62- * @return Role
6354 */
64- public function saveNewRole ($ roleData )
55+ public function saveNewRole (array $ roleData ): Role
6556 {
6657 $ role = $ this ->role ->newInstance ($ roleData );
67- $ role ->name = str_replace (' ' , '- ' , strtolower ($ roleData ['display_name ' ]));
68- // Prevent duplicate names
69- while ($ this ->role ->where ('name ' , '= ' , $ role ->name )->count () > 0 ) {
70- $ role ->name .= strtolower (Str::random (2 ));
71- }
7258 $ role ->save ();
7359
7460 $ permissions = isset ($ roleData ['permissions ' ]) ? array_keys ($ roleData ['permissions ' ]) : [];
@@ -80,13 +66,11 @@ public function saveNewRole($roleData)
8066 /**
8167 * Updates an existing role.
8268 * Ensure Admin role always have core permissions.
83- * @param $roleId
84- * @param $roleData
85- * @throws PermissionsException
8669 */
87- public function updateRole ($ roleId , $ roleData )
70+ public function updateRole ($ roleId , array $ roleData )
8871 {
89- $ role = $ this ->role ->findOrFail ($ roleId );
72+ /** @var Role $role */
73+ $ role = $ this ->role ->newQuery ()->findOrFail ($ roleId );
9074
9175 $ permissions = isset ($ roleData ['permissions ' ]) ? array_keys ($ roleData ['permissions ' ]) : [];
9276 if ($ role ->system_name === 'admin ' ) {
@@ -108,16 +92,19 @@ public function updateRole($roleId, $roleData)
10892
10993 /**
11094 * Assign an list of permission names to an role.
111- * @param Role $role
112- * @param array $permissionNameArray
11395 */
114- public function assignRolePermissions (Role $ role , $ permissionNameArray = [])
96+ public function assignRolePermissions (Role $ role , array $ permissionNameArray = [])
11597 {
11698 $ permissions = [];
11799 $ permissionNameArray = array_values ($ permissionNameArray );
118- if ($ permissionNameArray && count ($ permissionNameArray ) > 0 ) {
119- $ permissions = $ this ->permission ->whereIn ('name ' , $ permissionNameArray )->pluck ('id ' )->toArray ();
100+
101+ if ($ permissionNameArray ) {
102+ $ permissions = $ this ->permission ->newQuery ()
103+ ->whereIn ('name ' , $ permissionNameArray )
104+ ->pluck ('id ' )
105+ ->toArray ();
120106 }
107+
121108 $ role ->permissions ()->sync ($ permissions );
122109 }
123110
@@ -126,13 +113,13 @@ public function assignRolePermissions(Role $role, $permissionNameArray = [])
126113 * Check it's not an admin role or set as default before deleting.
127114 * If an migration Role ID is specified the users assign to the current role
128115 * will be added to the role of the specified id.
129- * @param $roleId
130- * @param $migrateRoleId
131116 * @throws PermissionsException
117+ * @throws Exception
132118 */
133119 public function deleteRole ($ roleId , $ migrateRoleId )
134120 {
135- $ role = $ this ->role ->findOrFail ($ roleId );
121+ /** @var Role $role */
122+ $ role = $ this ->role ->newQuery ()->findOrFail ($ roleId );
136123
137124 // Prevent deleting admin role or default registration role.
138125 if ($ role ->system_name && in_array ($ role ->system_name , $ this ->systemRoles )) {
@@ -142,9 +129,9 @@ public function deleteRole($roleId, $migrateRoleId)
142129 }
143130
144131 if ($ migrateRoleId ) {
145- $ newRole = $ this ->role ->find ($ migrateRoleId );
132+ $ newRole = $ this ->role ->newQuery ()-> find ($ migrateRoleId );
146133 if ($ newRole ) {
147- $ users = $ role ->users ->pluck ('id ' )->toArray ();
134+ $ users = $ role ->users () ->pluck ('id ' )->toArray ();
148135 $ newRole ->users ()->sync ($ users );
149136 }
150137 }
0 commit comments