@@ -751,6 +751,22 @@ def validate_group_access_create_request(group, auth_user):
751751 return None
752752
753753
754+ def revoke_user_access (user , access , revoker_email ):
755+ user_identity = user .get_active_identity (access .access_tag )
756+ user_identity .decline_non_approved_access_mapping (access )
757+ user_identity .offboarding_approved_access_mapping (access )
758+ background_task (
759+ "run_access_revoke" ,
760+ json .dumps (
761+ {
762+ "request_id" : user_identity .get_granted_access_mapping (access )
763+ .first ()
764+ .request_id ,
765+ "revoker_email" : revoker_email ,
766+ }
767+ ),
768+ )
769+
754770def remove_member (request ):
755771 try :
756772 membership_id = request .POST .get ("membershipId" )
@@ -782,27 +798,26 @@ def remove_member(request):
782798 revoke_accesses = list (set (revoke_group_accesses ) - set (other_group_accesses ))
783799
784800 for access in revoke_accesses :
785- user_identity = user .get_active_identity (access .access_tag )
786- user_identity .decline_non_approved_access_mapping (access )
787- user_identity .offboarding_approved_access_mapping (access )
788- background_task (
789- "run_access_revoke" ,
790- json .dumps (
791- {
792- "request_id" : user_identity .get_granted_access_mapping (access )
793- .first ()
794- .request_id ,
795- "revoker_email" : request .user .user .email ,
796- }
797- ),
798- )
801+ revoke_user_access (user , access , request .user .user .email )
799802
800803 membership .revoke_membership ()
801804
802805 return {"message" : "Successfully removed user from group" }
803806
807+ def access_exist_in_other_groups_of_user (membership , group , access ):
808+ other_memberships_groups = (
809+ membership .user .get_all_approved_memberships ()
810+ .exclude (group = membership .group )
811+ .values_list ("group" , flat = True )
812+ )
813+ for group in other_memberships_groups :
814+ if group .access_exist (access ):
815+ return True
816+
817+ return False
818+
804819
805- def revoke_access (request ):
820+ def revoke_access_from_group (request ):
806821 try :
807822 request_id = request .POST .get ("request_id" )
808823 if not request_id :
@@ -821,36 +836,11 @@ def revoke_access(request):
821836 auth_user = request .user
822837 if not (auth_user .user .has_permission ("ALLOW_USER_OFFBOARD" ) and group .member_is_owner (auth_user .user )):
823838 raise Exception ("User Unauthorized to perfrom the action" )
824-
825- should_continue = False
826- for membership in group .get_all_approved_members ():
827- other_memberships_groups = (
828- membership .user .get_all_approved_memberships ()
829- .exclude (group = membership .group )
830- .values_list ("group" , flat = True )
831- )
832839
833- for group in other_memberships_groups :
834- if group .access_exist (mapping .access ):
835- should_continue = True
836- break
837-
838- if (should_continue ):
839- should_continue = False
840+ for membership in group .get_all_approved_members ():
841+ if access_exist_in_other_groups (membership , group , mapping .access ):
840842 continue
841843
842- user_access_identity = membership .user .get_active_identity (mapping .access .access_tag )
843- user_access_mapping = user_access_identity .get_granted_access_mapping (mapping .access )
844-
845-
846- background_task (
847- "run_access_revoke" ,
848- json .dumps (
849- {
850- "request_id" : user_access_mapping .request_id ,
851- "revoker_email" : auth_user .user .email
852- }
853- ),
854- )
844+ revoke_user_access (membership .user , mapping .access , auth_user .user .email )
855845
856846 return {"message" : "Successfully initiated the revoke" }
0 commit comments