2222 get_decline_access_request ,
2323 accept_group_access ,
2424 run_accept_request_task ,
25+ run_ignore_failure_task ,
2526)
2627from Access .models import User , UserAccessMapping , GroupAccessMapping
2728
@@ -611,7 +612,9 @@ def mark_revoked(request):
611612 for mapping_object in requests :
612613 logger .info (
613614 "Marking access revoke - %s by user %s" ,
614- mapping_object .request_id , request .user .user )
615+ mapping_object .request_id ,
616+ request .user .user ,
617+ )
615618 mapping_object .revoke (revoker = request .user .user )
616619 success_list .append (mapping_object .request_id )
617620 json_response ["msg" ] = "Success"
@@ -621,23 +624,114 @@ def mark_revoked(request):
621624 json_response ["error" ] = "Error Revoking User Access"
622625 return JsonResponse (json_response , status = 403 )
623626
627+
624628def individual_resolve (request ):
625- json_response = {"status_list" :[]}
629+ json_response = {"status_list" : []}
626630 try :
627- request_ids = request .GET .getlist (' requestId' )
631+ request_ids = request .GET .getlist (" requestId" )
628632 if not request_ids :
629633 raise Exception ("Request id not found in the request" )
630634
631635 for request_id in request_ids :
632- user_access_mapping = UserAccessMapping .get_by_id (request_id )
636+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
633637 if user_access_mapping .status .lower () in ["grantfailed" , "approved" ]:
634- response = run_accept_request_task (False , user_access_mapping , request .user , user_access_mapping .request_id , user_access_mapping .access .access_label )
638+ response = run_accept_request_task (
639+ False ,
640+ user_access_mapping ,
641+ request .user ,
642+ user_access_mapping .request_id ,
643+ user_access_mapping .access .access_label ,
644+ )
635645 json_response ["status_list" ] += response ["status" ]
636646 else :
637647 json_response ["status_list" ].append ({'title' : 'The Request (' + request_id + ') is already resolved.' , 'msg' : 'The request is already in final state.' })
638648 return render (request ,'EnigmaOps/accessStatus.html' ,json_response )
639649 except Exception as e :
640650 logger .exception (str (e ))
651+ json_response ["error" ] = {
652+ "error_msg" : "Bad request" ,
653+ "msg" : "Error in request not found OR Invalid request type" ,
654+ }
655+ return render (request , "BSOps/accessStatus.html" , json_response )
656+
657+
658+ @login_required
659+ @user_with_permission ([PERMISSION_CONSTANTS ["DEFAULT_APPROVER_PERMISSION" ]])
660+ def ignore_failure (request , selector ):
661+ try :
662+ json_response = {"status_list" : []}
663+ request_ids = request .GET .getlist ("requestId" )
664+ for request_id in request_ids :
665+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
666+ if user_access_mapping .status .lower () in ["grantfailed" , "revokefailed" ]:
667+ run_ignore_failure_task (
668+ request .user ,
669+ user_access_mapping ,
670+ user_access_mapping .request_id ,
671+ selector ,
672+ )
673+ json_response ["status_list" ].append (
674+ {
675+ "title" : "The Request ("
676+ + request_id
677+ + ") is now being ignored. Mark - "
678+ + selector ,
679+ "msg" : "A email will be sent after the requested access is ignored" ,
680+ }
681+ )
682+ else :
683+ logger .debug ("Cannot ignore " + request_id )
684+ json_response ["status_list" ].append (
685+ {
686+ "title" : "The Request ("
687+ + request_id
688+ + ") is already resolved." ,
689+ "msg" : "The request is already in final state." ,
690+ }
691+ )
692+ return render (request , "BSOps/accessStatus.html" , json_response )
693+ except Exception as e :
694+ logger .debug ("Error in request not found OR Invalid request type" )
695+ logger .exception (e )
696+ json_response = {}
697+ json_response ["error" ] = {
698+ "error_msg" : str (e ),
699+ "msg" : "Error in request not found OR Invalid request type" ,
700+ }
701+ return render (request , "BSOps/accessStatus.html" , json_response )
702+
703+
704+ @login_required
705+ @user_with_permission ([PERMISSION_CONSTANTS ["DEFAULT_APPROVER_PERMISSION" ]])
706+ def resolve_bulk (request ):
707+ try :
708+ json_response = {"status_list" : []}
709+ request_ids = request .GET .getlist ("requestId" )
710+ for request_id in request_ids :
711+ user_access_mapping = UserAccessMapping .get_access_request (request_id )
712+ if user_access_mapping .status .lower () in ["grantfailed" ]:
713+ response = run_accept_request_task (
714+ False ,
715+ user_access_mapping ,
716+ request .user ,
717+ user_access_mapping .request_id ,
718+ user_access_mapping .access .access_label ,
719+ )
720+ json_response ["status_list" ] += response ["status" ]
721+ else :
722+ json_response ["status_list" ].append (
723+ {
724+ "title" : "The Request ("
725+ + request_id
726+ + ") is already resolved." ,
727+ "msg" : "The request is already in final state." ,
728+ }
729+ )
730+ return render (request , "BSOps/accessStatus.html" , json_response )
731+ except Exception as e :
732+ logger .debug ("Error in request not found OR Invalid request type" )
733+ logger .exception (e )
734+ json_response = {}
641735 json_response ['error' ] = {'error_msg' : "Bad request" , 'msg' : "Error in request not found OR Invalid request type" }
642736 return render (request ,'EnigmaOps/accessStatus.html' ,json_response )
643737
0 commit comments