Skip to content

Commit 8abc425

Browse files
authored
Merge pull request #71 from browserstack/feat-regrant-access
Feat: regrant access
2 parents 7f78120 + 5fb8641 commit 8abc425

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

Access/helpers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ def get_available_access_module_from_tag(tag):
2626
def get_available_access_modules():
2727
global available_accesses
2828
if len(available_accesses) > 0:
29-
return available_accesses
29+
return available_accesses.copy()
30+
3031
available_accesses = {
3132
access.tag(): access for access in _get_modules_on_disk() if access.available
3233
}
33-
return available_accesses
34+
return available_accesses.copy()
3435

3536

3637
def _get_modules_on_disk():

Access/models.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ def get_user_access_mappings(self):
231231
access_request_mappings = []
232232
for each_identity in all_user_identities:
233233
access_request_mappings.extend(
234-
each_identity.useraccessmapping_set.prefetch_related(
234+
each_identity.user_access_mapping.prefetch_related(
235235
"access", "approver_1", "approver_2"
236236
)
237237
)
@@ -242,7 +242,7 @@ def get_access_history(self, all_access_modules):
242242
access_history = []
243243

244244
for request_mapping in access_request_mappings:
245-
access_module = all_access_modules[request_mapping.accessType]
245+
access_module = all_access_modules[request_mapping.access.access_tag]
246246
access_history.append(
247247
request_mapping.getAccessRequestDetails(access_module)
248248
)
@@ -863,6 +863,10 @@ def decline_access(self, decline_reason=None):
863863
def approve_access(self):
864864
self.status = "Approved"
865865
self.save()
866+
867+
@staticmethod
868+
def get_by_id(request_id):
869+
return UserAccessMapping.objects.get(request_id=request_id)
866870

867871
def revoking(self, revoker):
868872
self.revoker = revoker

Access/views.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
accept_user_access_requests,
2222
get_decline_access_request,
2323
accept_group_access,
24+
run_accept_request_task,
2425
)
2526
from Access.models import User, UserAccessMapping, GroupAccessMapping
2627

@@ -616,3 +617,24 @@ def mark_revoked(request):
616617
logger.exception("Error Revoking User Access, Error: %s", str(ex))
617618
json_response["error"] = "Error Revoking User Access"
618619
return JsonResponse(json_response, status=403)
620+
621+
def individual_resolve(request):
622+
json_response = {"status_list":[]}
623+
try:
624+
request_ids = request.GET.getlist('requestId')
625+
if not request_ids:
626+
raise Exception("Request id not found in the request")
627+
628+
for request_id in request_ids:
629+
user_access_mapping = UserAccessMapping.get_by_id(request_id)
630+
if user_access_mapping.status.lower() in ["grantfailed", "approved"]:
631+
response = run_accept_request_task(False, user_access_mapping, request.user, user_access_mapping.request_id, user_access_mapping.access.access_label)
632+
json_response["status_list"] += response["status"]
633+
else:
634+
json_response["status_list"].append({'title': 'The Request ('+request_id+') is already resolved.', 'msg': 'The request is already in final state.'})
635+
return render(request,'BSOps/accessStatus.html',json_response)
636+
except Exception as e:
637+
logger.exception(str(e))
638+
json_response['error'] = {'error_msg': "Bad request", 'msg': "Error in request not found OR Invalid request type"}
639+
return render(request,'BSOps/accessStatus.html',json_response)
640+

BrowserStackAutomation/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
decline_access,
4040
update_group_owners,
4141
remove_group_member,
42+
individual_resolve
4243
)
4344
from Access.helpers import get_available_access_modules
4445

@@ -90,6 +91,7 @@
9091
re_path(
9192
r"^group/removeGroupMember$", remove_group_member, name="remove_group_member"
9293
),
94+
re_path(r"^individual_resolve$", individual_resolve, name="individual_resolve")
9395
]
9496

9597
for tag, each_module in get_available_access_modules().items():

0 commit comments

Comments
 (0)