|
2 | 2 |
|
3 | 3 | namespace Myth\Auth\Authorization;
|
4 | 4 |
|
5 |
| -use CodeIgniter\Model; |
| 5 | +use Myth\Auth\Models\GroupModel as BaseModel; |
6 | 6 |
|
7 |
| -class GroupModel extends Model |
| 7 | +/** |
| 8 | + * @deprecated 1.2.0 Use Myth\Auth\Models\GroupModel instead |
| 9 | + */ |
| 10 | +class GroupModel extends BaseModel |
8 | 11 | {
|
9 |
| - protected $table = 'auth_groups'; |
10 |
| - protected $primaryKey = 'id'; |
11 |
| - protected $returnType = 'object'; |
12 |
| - protected $allowedFields = [ |
13 |
| - 'name', 'description', |
14 |
| - ]; |
15 |
| - protected $useTimestamps = false; |
16 |
| - protected $validationRules = [ |
17 |
| - 'name' => 'required|max_length[255]|is_unique[auth_groups.name,name,{name}]', |
18 |
| - 'description' => 'max_length[255]', |
19 |
| - ]; |
20 |
| - protected $validationMessages = []; |
21 |
| - protected $skipValidation = false; |
22 |
| - |
23 |
| - //-------------------------------------------------------------------- |
24 |
| - // Users |
25 |
| - //-------------------------------------------------------------------- |
26 |
| - |
27 |
| - /** |
28 |
| - * Adds a single user to a single group. |
29 |
| - * |
30 |
| - * @return bool |
31 |
| - */ |
32 |
| - public function addUserToGroup(int $userId, int $groupId) |
33 |
| - { |
34 |
| - cache()->delete("{$groupId}_users"); |
35 |
| - cache()->delete("{$userId}_groups"); |
36 |
| - cache()->delete("{$userId}_permissions"); |
37 |
| - |
38 |
| - $data = [ |
39 |
| - 'user_id' => $userId, |
40 |
| - 'group_id' => $groupId, |
41 |
| - ]; |
42 |
| - |
43 |
| - return (bool) $this->db->table('auth_groups_users')->insert($data); |
44 |
| - } |
45 |
| - |
46 |
| - /** |
47 |
| - * Removes a single user from a single group. |
48 |
| - * |
49 |
| - * @param int|string $groupId |
50 |
| - * |
51 |
| - * @return bool |
52 |
| - */ |
53 |
| - public function removeUserFromGroup(int $userId, $groupId) |
54 |
| - { |
55 |
| - cache()->delete("{$groupId}_users"); |
56 |
| - cache()->delete("{$userId}_groups"); |
57 |
| - cache()->delete("{$userId}_permissions"); |
58 |
| - |
59 |
| - return $this->db->table('auth_groups_users') |
60 |
| - ->where([ |
61 |
| - 'user_id' => $userId, |
62 |
| - 'group_id' => (int) $groupId, |
63 |
| - ])->delete(); |
64 |
| - } |
65 |
| - |
66 |
| - /** |
67 |
| - * Removes a single user from all groups. |
68 |
| - * |
69 |
| - * @return bool |
70 |
| - */ |
71 |
| - public function removeUserFromAllGroups(int $userId) |
72 |
| - { |
73 |
| - cache()->delete("{$userId}_groups"); |
74 |
| - cache()->delete("{$userId}_permissions"); |
75 |
| - |
76 |
| - return $this->db->table('auth_groups_users') |
77 |
| - ->where('user_id', $userId) |
78 |
| - ->delete(); |
79 |
| - } |
80 |
| - |
81 |
| - /** |
82 |
| - * Returns an array of all groups that a user is a member of. |
83 |
| - * |
84 |
| - * @return array |
85 |
| - */ |
86 |
| - public function getGroupsForUser(int $userId) |
87 |
| - { |
88 |
| - if (null === $found = cache("{$userId}_groups")) { |
89 |
| - $found = $this->builder() |
90 |
| - ->select('auth_groups_users.*, auth_groups.name, auth_groups.description') |
91 |
| - ->join('auth_groups_users', 'auth_groups_users.group_id = auth_groups.id', 'left') |
92 |
| - ->where('user_id', $userId) |
93 |
| - ->get()->getResultArray(); |
94 |
| - |
95 |
| - cache()->save("{$userId}_groups", $found, 300); |
96 |
| - } |
97 |
| - |
98 |
| - return $found; |
99 |
| - } |
100 |
| - |
101 |
| - /** |
102 |
| - * Returns an array of all users that are members of a group. |
103 |
| - * |
104 |
| - * @return array |
105 |
| - */ |
106 |
| - public function getUsersForGroup(int $groupId) |
107 |
| - { |
108 |
| - if (null === $found = cache("{$groupId}_users")) { |
109 |
| - $found = $this->builder() |
110 |
| - ->select('auth_groups_users.*, users.*') |
111 |
| - ->join('auth_groups_users', 'auth_groups_users.group_id = auth_groups.id', 'left') |
112 |
| - ->join('users', 'auth_groups_users.user_id = users.id', 'left') |
113 |
| - ->where('auth_groups.id', $groupId) |
114 |
| - ->get()->getResultArray(); |
115 |
| - |
116 |
| - cache()->save("{$groupId}_users", $found, 300); |
117 |
| - } |
118 |
| - |
119 |
| - return $found; |
120 |
| - } |
121 |
| - |
122 |
| - //-------------------------------------------------------------------- |
123 |
| - // Permissions |
124 |
| - //-------------------------------------------------------------------- |
125 |
| - |
126 |
| - /** |
127 |
| - * Gets all permissions for a group in a way that can be |
128 |
| - * easily used to check against: |
129 |
| - * |
130 |
| - * [ |
131 |
| - * id => name, |
132 |
| - * id => name |
133 |
| - * ] |
134 |
| - */ |
135 |
| - public function getPermissionsForGroup(int $groupId): array |
136 |
| - { |
137 |
| - $permissionModel = model(PermissionModel::class); |
138 |
| - $fromGroup = $permissionModel |
139 |
| - ->select('auth_permissions.*') |
140 |
| - ->join('auth_groups_permissions', 'auth_groups_permissions.permission_id = auth_permissions.id', 'inner') |
141 |
| - ->where('group_id', $groupId) |
142 |
| - ->findAll(); |
143 |
| - |
144 |
| - $found = []; |
145 |
| - |
146 |
| - foreach ($fromGroup as $permission) { |
147 |
| - $found[$permission['id']] = $permission; |
148 |
| - } |
149 |
| - |
150 |
| - return $found; |
151 |
| - } |
152 |
| - |
153 |
| - /** |
154 |
| - * Add a single permission to a single group, by IDs. |
155 |
| - * |
156 |
| - * @return mixed |
157 |
| - */ |
158 |
| - public function addPermissionToGroup(int $permissionId, int $groupId) |
159 |
| - { |
160 |
| - $data = [ |
161 |
| - 'permission_id' => $permissionId, |
162 |
| - 'group_id' => $groupId, |
163 |
| - ]; |
164 |
| - |
165 |
| - return $this->db->table('auth_groups_permissions')->insert($data); |
166 |
| - } |
167 |
| - |
168 |
| - //-------------------------------------------------------------------- |
169 |
| - |
170 |
| - /** |
171 |
| - * Removes a single permission from a single group. |
172 |
| - * |
173 |
| - * @return mixed |
174 |
| - */ |
175 |
| - public function removePermissionFromGroup(int $permissionId, int $groupId) |
176 |
| - { |
177 |
| - return $this->db->table('auth_groups_permissions') |
178 |
| - ->where([ |
179 |
| - 'permission_id' => $permissionId, |
180 |
| - 'group_id' => $groupId, |
181 |
| - ])->delete(); |
182 |
| - } |
183 |
| - |
184 |
| - //-------------------------------------------------------------------- |
185 |
| - |
186 |
| - /** |
187 |
| - * Removes a single permission from all groups. |
188 |
| - * |
189 |
| - * @return mixed |
190 |
| - */ |
191 |
| - public function removePermissionFromAllGroups(int $permissionId) |
192 |
| - { |
193 |
| - return $this->db->table('auth_groups_permissions') |
194 |
| - ->where('permission_id', $permissionId) |
195 |
| - ->delete(); |
196 |
| - } |
| 12 | + protected $returnType = 'object'; |
| 13 | + protected string $permissionModel = PermissionModel::class; |
197 | 14 | }
|
0 commit comments