Skip to content

Commit e6cd742

Browse files
Refactored and Updated Query
1 parent c99f653 commit e6cd742

File tree

4 files changed

+26
-22
lines changed

4 files changed

+26
-22
lines changed

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
# Versions should comply with PEP440. For a discussion on single-sourcing
99
# the version across setup.py and the project code, see
1010
# https://packaging.python.org/en/latest/single_source_version.html
11-
version="0.1.7",
11+
version="0.1.8",
1212
packages=[
1313
"masonite_permission",
1414
"masonite_permission.config",

src/masonite_permission/mixins/has_permissions.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
from masoniteorm.query import QueryBuilder
2-
from masoniteorm.collection.Collection import Collection
32
from ..exceptions import PermissionException
43

54

65
class HasPermissions:
7-
86
def _permission_query(self):
97
"""Return a query builder for permissions"""
108
from ..models.permission import Permission
11-
12-
role_id_query = f"select role_user.role_id from role_user where role_user.user_id = {self.id}"
9+
10+
role_id_query = (
11+
f"select role_user.role_id from role_user where role_user.user_id = {self.id}"
12+
)
1313

1414
return Permission.where_in(
1515
"id",
@@ -35,6 +35,7 @@ def _permission_query(self):
3535
)
3636
),
3737
)
38+
3839
def permissions(self):
3940
return self._permission_query().get()
4041

@@ -145,8 +146,7 @@ def revoke_permission_to(self, *args):
145146
"permission_id", permissions.pluck("id")
146147
).where("permissionable_type", self.get_table_name()).delete()
147148

148-
def sync_permissions(self, *args):
149-
"""Sync permissions from related model"""
149+
def _get_permission_ids(self, args):
150150
from ..models.permission import Permission
151151

152152
permission_ids = []
@@ -182,6 +182,12 @@ def sync_permissions(self, *args):
182182
elif len(permission_slugs) > 0:
183183
ids = list(Permission.where_in("slug", permission_slugs).get().pluck("id"))
184184

185+
return ids
186+
187+
def sync_permissions(self, *args):
188+
"""Sync permissions from related model"""
189+
190+
ids = self._get_permission_ids(args)
185191
data = []
186192
for permission in ids:
187193
data.append(
@@ -208,7 +214,7 @@ def has_permission_to(self, permission):
208214

209215
def has_any_permission(self, *args):
210216
"""Check if user has any of the permissions"""
211-
217+
212218
slugs = []
213219
if type(args[0]) == list:
214220
slugs = args[0]
@@ -219,7 +225,6 @@ def has_any_permission(self, *args):
219225

220226
def has_all_permissions(self, *args):
221227
"""Check if user has all of the permissions"""
222-
from ..models.permission import Permission
223228

224229
slugs = []
225230
if type(args[0]) == list:

src/masonite_permission/mixins/has_roles.py

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@
44

55

66
class HasRoles:
7-
87
def _role_query(self):
98
from ..models.role import Role
109

11-
return (
12-
Role.join("role_user as ru", "ru.role_id", "=", "roles.id")
13-
.where("ru.user_id", self.id)
10+
return Role.join("role_user as ru", "ru.role_id", "=", "roles.id").where(
11+
"ru.user_id", self.id
1412
)
1513

1614
def roles(self):
@@ -44,8 +42,7 @@ def has_all_roles(self, *args):
4442

4543
return self._role_query().where_in("slug", slugs).count() == len(slugs)
4644

47-
def sync_roles(self, *args):
48-
"""Assign a role to a user"""
45+
def _get_role_ids(self, args):
4946
from ..models.role import Role
5047

5148
role_ids = []
@@ -69,16 +66,18 @@ def sync_roles(self, *args):
6966
ids = []
7067

7168
if len(role_ids) > 0 and len(role_slugs) > 0:
72-
ids = (
73-
Role.where_raw(f"(id in {role_ids}) or slug in {role_slugs}")
74-
.get()
75-
.pluck("id")
76-
)
69+
ids = Role.where_raw(f"(id in {role_ids}) or slug in {role_slugs}").get().pluck("id")
7770
elif len(role_ids) > 0:
7871
ids = list(Role.where_in("id", role_ids).get().pluck("id"))
7972
elif len(role_slugs) > 0:
8073
ids = list(Role.where_in("slug", role_slugs).get().pluck("id"))
8174

75+
return ids
76+
77+
def sync_roles(self, *args):
78+
"""Assign a role to a user"""
79+
80+
ids = self._get_role_ids(args)
8281
data = []
8382
for role in ids:
8483
data.append({"user_id": self.id, "role_id": role})

tests/integrations/app/controllers/WelcomeController.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def show(self, view: View):
1919
def test(self):
2020
user = User.first()
2121
# user.sync_permissions("create-user", "edit-user", "edit-post")
22-
22+
2323
return {
2424
"has_permission": user.has_all_permissions("create-user", "edit-user"),
25-
}
25+
}

0 commit comments

Comments
 (0)