|
1 | | -from Access.models import User, GroupV2, MembershipV2, AccessV2 |
| 1 | +from Access.models import GroupAccessMapping, User, GroupV2, MembershipV2, AccessV2 |
2 | 2 | from Access import helpers, views_helper, notifications, accessrequest_helper |
3 | 3 | from django.db import transaction |
4 | 4 | import datetime |
@@ -201,6 +201,7 @@ def get_group_access_list(request, group_name): |
201 | 201 | context["genericAccesses"] = [ |
202 | 202 | get_generic_access(group_mapping) for group_mapping in group_mappings |
203 | 203 | ] |
| 204 | + print(group_mappings) |
204 | 205 | if context["genericAccesses"] == [{}]: |
205 | 206 | context["genericAccesses"] = [] |
206 | 207 |
|
@@ -769,7 +770,7 @@ def remove_member(request): |
769 | 770 | ] |
770 | 771 |
|
771 | 772 | other_memberships_groups = ( |
772 | | - user.get_all_memberships() |
| 773 | + user.get_all_approved_memberships() |
773 | 774 | .exclude(group=membership.group) |
774 | 775 | .values_list("group", flat=True) |
775 | 776 | ) |
@@ -800,3 +801,57 @@ def remove_member(request): |
800 | 801 | membership.revoke_membership() |
801 | 802 |
|
802 | 803 | return {"message": "Successfully removed user from group"} |
| 804 | + |
| 805 | + |
| 806 | +def mark_revoked(request): |
| 807 | + try: |
| 808 | + request_id = request.POST.get("request_id") |
| 809 | + if not request_id: |
| 810 | + logger.debug("Cannot find request_id in the http request.") |
| 811 | + raise Exception("Request id not found in the request.") |
| 812 | + |
| 813 | + mapping = GroupAccessMapping.get_by_id(request_id) |
| 814 | + if not mapping: |
| 815 | + logger.debug("Group Access Mapping not found in the database") |
| 816 | + raise Exception("Group Access Mapping not found in the database") |
| 817 | + except Exception as e: |
| 818 | + logger.exception(str(e)) |
| 819 | + return {"error": ERROR_MESSAGE} |
| 820 | + |
| 821 | + group = mapping.group |
| 822 | + auth_user = request.user |
| 823 | + if auth_user.user.has_permission("ALLOW_USER_OFFBOARD") and group.member_is_owner(auth_user.user): |
| 824 | + raise Exception("User Unauthorized to perfrom the action") |
| 825 | + |
| 826 | + should_continue = False |
| 827 | + for membership in group.get_all_approved_members(): |
| 828 | + other_memberships_groups = ( |
| 829 | + membership.user.get_all_approved_memberships() |
| 830 | + .exclude(group=membership.group) |
| 831 | + .values_list("group", flat=True) |
| 832 | + ) |
| 833 | + |
| 834 | + for group in other_memberships_groups: |
| 835 | + if group.access_exist(mapping.access): |
| 836 | + should_continue = True |
| 837 | + break |
| 838 | + |
| 839 | + if(should_continue): |
| 840 | + should_continue = False |
| 841 | + continue |
| 842 | + |
| 843 | + user_access_identity = membership.user.get_active_identity(mapping.access.access_tag) |
| 844 | + user_access_mapping = user_access_identity.get_granted_access_mapping(mapping.access) |
| 845 | + |
| 846 | + |
| 847 | + background_task( |
| 848 | + "run_access_revoke", |
| 849 | + json.dumps( |
| 850 | + { |
| 851 | + "request_id": user_access_mapping.request_id, |
| 852 | + "revoker_email": auth_user.user.email |
| 853 | + } |
| 854 | + ), |
| 855 | + ) |
| 856 | + |
| 857 | + return {"message": "Successfully initiated the revoke"} |
0 commit comments