diff --git a/cli/cliParser.py b/cli/cliParser.py index b4db61a48..a6e6752b0 100755 --- a/cli/cliParser.py +++ b/cli/cliParser.py @@ -61,5 +61,6 @@ class cliParser: parser.add_argument('--websitesLimit', help='Website limit while creating user.') parser.add_argument('--selectedACL', help='Select ACL while creating user.') parser.add_argument('--securityLevel', help='Set security level while creating user.') + parser.add_argument('--state', help='State value used in user suspension.') return parser.parse_args() \ No newline at end of file diff --git a/cli/cyberPanel.py b/cli/cyberPanel.py index 349ecb015..f4ca95b53 100755 --- a/cli/cyberPanel.py +++ b/cli/cyberPanel.py @@ -1399,14 +1399,36 @@ def main(): elif args.function == "listUsers": from userManagment.views import fetchTableUsers - data = {} data['userID'] = 1 - response = fetchTableUsers(data) print(response.content.decode()) + elif args.function == "suspendUser": + + completeCommandExample = 'cyberpanel suspendUser --userName cyberpanel --state SUSPEND' + + if not args.userName: + print("\n\nPlease enter User Name. For example:\n\n" + completeCommandExample + "\n\n") + return + + if not args.state: + print("\n\nPlease enter state value i.e SUSPEND/UnSuspend. For example:\n\n" + completeCommandExample + "\n\n") + return + + from userManagment.views import controlUserState + + data = {} + data['accountUsername'] = args.userName + data['state'] = args.state + data['userID'] = 1 + + response = controlUserState(data) + + print(response.content.decode()) + + if __name__ == "__main__": diff --git a/userManagment/views.py b/userManagment/views.py index 52215ae22..8105734d1 100755 --- a/userManagment/views.py +++ b/userManagment/views.py @@ -1029,50 +1029,57 @@ def fetchTableUsers(request): def controlUserState(request): try: - val = request.session['userID'] try: - if request.method == 'POST': + val = request.session['userID'] + except: + val = request['userID'] + try: + try: data = json.loads(request.body) - accountUsername = data['accountUsername'] - state = data['state'] + except: + data = request - user = Administrator.objects.get(userName=accountUsername) + accountUsername = data['accountUsername'] + state = data['state'] - currentACL = ACLManager.loadedACL(val) - loggedUser = Administrator.objects.get(pk=val) + user = Administrator.objects.get(userName=accountUsername) - if currentACL['admin'] == 1: - pass - elif user.owner == loggedUser.pk: - pass - elif user.pk == loggedUser.pk: - pass - else: - data_ret = {'fetchStatus': 0, 'error_message': 'Un-authorized access.'} - json_data = json.dumps(data_ret) - return HttpResponse(json_data) + currentACL = ACLManager.loadedACL(val) + loggedUser = Administrator.objects.get(pk=val) - if state == 'SUSPEND': - user.state = 'SUSPENDED' - else: - user.state = 'ACTIVE' - - user.save() - - extraArgs = {} - extraArgs['user'] = user - extraArgs['currentACL'] = ACLManager.loadedACL(user.pk) - extraArgs['state'] = state - - from userManagment.userManager import UserManager - - um = UserManager('controlUserState', extraArgs) - um.start() - - data_ret = {'status': 1} + if currentACL['admin'] == 1: + pass + elif user.owner == loggedUser.pk: + pass + elif user.pk == loggedUser.pk: + pass + else: + data_ret = {'fetchStatus': 0, 'error_message': 'Un-authorized access.'} json_data = json.dumps(data_ret) return HttpResponse(json_data) + if state == 'SUSPEND': + user.state = 'SUSPENDED' + else: + user.state = 'ACTIVE' + + user.save() + + extraArgs = {} + extraArgs['user'] = user + extraArgs['currentACL'] = ACLManager.loadedACL(user.pk) + extraArgs['state'] = state + + from userManagment.userManager import UserManager + + um = UserManager('controlUserState', extraArgs) + um.start() + + data_ret = {'status': 1} + json_data = json.dumps(data_ret) + return HttpResponse(json_data) + + except BaseException as msg: data_ret = {'status': 0, 'saveStatus': 0, 'error_message': str(msg)} json_data = json.dumps(data_ret)