1
1
# -*- coding: utf-8 -*-
2
2
#
3
- # Copyright (C) 2022 KTH Royal Institute of Technology
3
+ # Copyright (C) 2022-2024 KTH Royal Institute of Technology.
4
4
# Copyright (C) 2022 TU Wien.
5
5
# Copyright (C) 2022 European Union.
6
6
# Copyright (C) 2022 CERN.
@@ -129,15 +129,21 @@ def rebuild_index(self, identity, uow=None):
129
129
self .indexer .bulk_index ([u .id for u in users ])
130
130
return True
131
131
132
+ def _check_permission (self , identity , permission_type , user ):
133
+ """Checks if given identity has the specified permission type on the user."""
134
+ identity_id = str (identity .id )
135
+ self .require_permission (
136
+ identity , permission_type , record = user , identity_id = identity_id
137
+ )
138
+
132
139
@unit_of_work ()
133
140
def block (self , identity , id_ , uow = None ):
134
141
"""Blocks a user."""
135
142
user = UserAggregate .get_record (id_ )
136
143
if user is None :
137
144
# return 403 even on empty resource due to security implications
138
145
raise PermissionDeniedError ()
139
-
140
- self .require_permission (identity , "manage" , record = user )
146
+ self ._check_permission (identity , "manage" , user )
141
147
142
148
if user .blocked :
143
149
raise ValidationError ("User is already blocked." )
@@ -160,8 +166,7 @@ def restore(self, identity, id_, uow=None):
160
166
if user is None :
161
167
# return 403 even on empty resource due to security implications
162
168
raise PermissionDeniedError ()
163
-
164
- self .require_permission (identity , "manage" , record = user )
169
+ self ._check_permission (identity , "manage" , user )
165
170
166
171
if not user .blocked :
167
172
raise ValidationError ("User is not blocked." )
@@ -185,8 +190,7 @@ def approve(self, identity, id_, uow=None):
185
190
if user is None :
186
191
# return 403 even on empty resource due to security implications
187
192
raise PermissionDeniedError ()
188
-
189
- self .require_permission (identity , "manage" , record = user )
193
+ self ._check_permission (identity , "manage" , user )
190
194
191
195
if user .verified :
192
196
raise ValidationError ("User is already verified." )
@@ -209,7 +213,7 @@ def deactivate(self, identity, id_, uow=None):
209
213
if user is None :
210
214
# return 403 even on empty resource due to security implications
211
215
raise PermissionDeniedError ()
212
- self .require_permission (identity , "manage" , record = user )
216
+ self ._check_permission (identity , "manage" , user )
213
217
214
218
if not user .active :
215
219
raise ValidationError ("User is already inactive." )
@@ -225,7 +229,8 @@ def activate(self, identity, id_, uow=None):
225
229
if user is None :
226
230
# return 403 even on empty resource due to security implications
227
231
raise PermissionDeniedError ()
228
- self .require_permission (identity , "manage" , record = user )
232
+ self ._check_permission (identity , "manage" , user )
233
+
229
234
if user .active and user .confirmed :
230
235
raise ValidationError ("User is already active." )
231
236
user .activate ()
@@ -238,5 +243,6 @@ def can_impersonate(self, identity, id_):
238
243
if user is None :
239
244
# return 403 even on empty resource due to security implications
240
245
raise PermissionDeniedError ()
241
- self .require_permission (identity , "impersonate" , record = user )
246
+ self ._check_permission (identity , "impersonate" , user )
247
+
242
248
return user .model .model_obj
0 commit comments