|
30 | 30 | from django.urls import reverse |
31 | 31 | from django.contrib.sites.models import Site |
32 | 32 | from django.utils.translation import gettext_lazy as _ |
33 | | -from django.contrib.auth.models import AbstractUser, Permission, UserManager |
| 33 | +from django.contrib.auth.models import AbstractUser, UserManager |
34 | 34 | from django.contrib.auth.signals import user_logged_in, user_logged_out |
35 | 35 |
|
36 | 36 | from taggit.managers import TaggableManager |
37 | 37 |
|
38 | 38 | from geonode.base.enumerations import COUNTRIES |
39 | | -from geonode.base.models import Configuration, ResourceBase |
| 39 | +from geonode.base.models import ResourceBase |
40 | 40 | from geonode.groups.models import GroupProfile |
41 | | -from geonode.security.permissions import PERMISSIONS, READ_ONLY_AFFECTED_PERMISSIONS |
42 | 41 |
|
43 | 42 | from allauth.account.signals import user_signed_up |
44 | 43 | from allauth.socialaccount.signals import social_account_added |
45 | 44 |
|
46 | | -from geonode.security.utils import can_approve, can_feature, can_publish |
47 | | - |
| 45 | +from geonode.security.registry import permissions_registry |
48 | 46 | from .utils import format_address |
49 | 47 | from .signals import ( |
50 | 48 | do_login, |
@@ -204,29 +202,7 @@ def location(self): |
204 | 202 |
|
205 | 203 | @property |
206 | 204 | def perms(self): |
207 | | - perms = set() |
208 | | - if self.is_superuser or self.is_staff: |
209 | | - # return all permissions for admins |
210 | | - perms.update(PERMISSIONS.values()) |
211 | | - |
212 | | - user_groups = self.groups.values_list("name", flat=True) |
213 | | - group_perms = ( |
214 | | - Permission.objects.filter(group__name__in=user_groups).distinct().values_list("codename", flat=True) |
215 | | - ) |
216 | | - for p in group_perms: |
217 | | - if p in PERMISSIONS: |
218 | | - # return constant names defined by GeoNode |
219 | | - perms.add(PERMISSIONS[p]) |
220 | | - else: |
221 | | - # add custom permissions |
222 | | - perms.add(p) |
223 | | - |
224 | | - # check READ_ONLY mode |
225 | | - config = Configuration.load() |
226 | | - if config.read_only: |
227 | | - # exclude permissions affected by readonly |
228 | | - perms = [perm for perm in perms if perm not in READ_ONLY_AFFECTED_PERMISSIONS] |
229 | | - return list(perms) |
| 205 | + return permissions_registry.get_db_perms_by_user(self) |
230 | 206 |
|
231 | 207 | def save(self, *args, **kwargs): |
232 | 208 | super().save(*args, **kwargs) |
@@ -284,13 +260,13 @@ def can_change_resource_field(self, resource, field): |
284 | 260 | return self.can_feature(resource) |
285 | 261 |
|
286 | 262 | def can_approve(self, resource): |
287 | | - return can_approve(self, resource) |
| 263 | + return permissions_registry.user_can_approve(self, resource) |
288 | 264 |
|
289 | 265 | def can_publish(self, resource): |
290 | | - return can_publish(self, resource) |
| 266 | + return permissions_registry.user_can_publish(self, resource) |
291 | 267 |
|
292 | 268 | def can_feature(self, resource): |
293 | | - return can_feature(self, resource) |
| 269 | + return permissions_registry.user_can_feature(self, resource) |
294 | 270 |
|
295 | 271 |
|
296 | 272 | def get_anonymous_user_instance(user_model): |
|
0 commit comments