Skip to content

Commit 81f1a06

Browse files
committed
feat: added regrant
1 parent 4136c84 commit 81f1a06

File tree

4 files changed

+32
-5
lines changed

4 files changed

+32
-5
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: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ def get_user_access_mappings(self):
219219
access_request_mappings = []
220220
for each_identity in all_user_identities:
221221
access_request_mappings.extend(
222-
each_identity.useraccessmapping_set.prefetch_related(
222+
each_identity.user_access_mapping.prefetch_related(
223223
"access", "approver_1", "approver_2"
224224
)
225225
)
@@ -230,7 +230,7 @@ def get_access_history(self, all_access_modules):
230230
access_history = []
231231

232232
for request_mapping in access_request_mappings:
233-
access_module = all_access_modules[request_mapping.accessType]
233+
access_module = all_access_modules[request_mapping.access.access_tag]
234234
access_history.append(
235235
request_mapping.getAccessRequestDetails(access_module)
236236
)
@@ -743,7 +743,7 @@ def getAccessRequestDetails(self, access_module):
743743
str(self.updated_on)[:19] + "UTC" if self.updated_on else ""
744744
)
745745
access_request_data["status"] = self.status
746-
access_request_data["revoker"] = self.revoker.user.username
746+
access_request_data["revoker"] = self.revoker.user.username if self.revoker else ""
747747
access_request_data["offboarding_date"] = (
748748
str(self.user_identity.user.offbaord_date)[:19] + "UTC"
749749
if self.user_identity.user.offbaord_date
@@ -818,6 +818,10 @@ def decline_access(self, decline_reason=None):
818818
def approve_access(self):
819819
self.status = "Approved"
820820
self.save()
821+
822+
@staticmethod
823+
def get_by_id(request_id):
824+
return UserAccessMapping.objects.get(request_id=request_id)
821825

822826

823827
class GroupAccessMapping(models.Model):

Access/views.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,3 +468,23 @@ def mark_revoked(request):
468468
json_response["error"] = str(e)
469469
status = 403
470470
return JsonResponse(json_response, status=status)
471+
472+
def individual_resolve(request):
473+
json_response = {"status_list":[]}
474+
try:
475+
request_ids = request.GET.getlist('requestId')
476+
if not request_ids:
477+
raise Exception("Request id not found in the request")
478+
479+
for request_id in request_ids:
480+
user_access_mapping = UserAccessMapping.get_by_id(request_id)
481+
if user_access_mapping.status.lower() in ["grantfailed", "approved"]:
482+
json_response["status_list"].append({"title":"Request ("+request_id+") is now now being processed.", "msg": "A email will be sent after the requested access is granted"})
483+
# TODO: need to add celery integration
484+
else:
485+
json_response["status_list"].append({'title': 'The Request ('+request_id+') is already resolved.', 'msg': 'The request is already in final state.'})
486+
return render(request,'BSOps/accessStatus.html',json_response)
487+
except Exception as e:
488+
logger.exception(str(e))
489+
json_response['error'] = {'error_msg': "Bad request", 'msg': "Error in request not found OR Invalid request type"}
490+
return render(request,'BSOps/accessStatus.html',json_response)

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)
9395
]
9496

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

0 commit comments

Comments
 (0)