mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-03 11:55:57 +01:00
feature: suspend/unsuspend users
This commit is contained in:
@@ -1686,8 +1686,59 @@ app.controller('listTableUsers', function ($scope, $http) {
|
||||
|
||||
};
|
||||
|
||||
$scope.controlUserState = function (state) {
|
||||
alert(state);
|
||||
$scope.controlUserState = function (userName, state) {
|
||||
$scope.cyberpanelLoading = false;
|
||||
|
||||
var url = "/users/controlUserState";
|
||||
|
||||
var data = {
|
||||
accountUsername: userName,
|
||||
state : state
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers: {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
$scope.cyberpanelLoading = true;
|
||||
if (response.data.status === 1) {
|
||||
$scope.populateCurrentRecords();
|
||||
new PNotify({
|
||||
title: 'Success!',
|
||||
text: 'Action successfully started.',
|
||||
type: 'success'
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
new PNotify({
|
||||
title: 'Error!',
|
||||
text: response.data.error_message,
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function cantLoadInitialDatas(response) {
|
||||
|
||||
$scope.cyberpanelLoading = false;
|
||||
new PNotify({
|
||||
title: 'Error!',
|
||||
text: 'Could not connect to server, please refresh this page.',
|
||||
type: 'error'
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@@ -49,10 +49,10 @@
|
||||
<td>
|
||||
<a ng-show="record.state=='ACTIVE'"
|
||||
class="btn btn-border btn-alt border-red btn-link font-red" href="#"
|
||||
ng-click="controlUserState('SUSPEND')" title=""><span>{% trans 'Suspend' %}</span></a>
|
||||
ng-click="controlUserState(record.name, 'SUSPEND')" title=""><span>{% trans 'Suspend' %}</span></a>
|
||||
<a ng-show="record.state=='SUSPENDED'"
|
||||
class="btn btn-border btn-alt border-green btn-link font-green" href="#"
|
||||
ng-click="controlUserState('ACTIVATE')" title=""><span>{% trans 'Activate' %}</span></a>
|
||||
ng-click="controlUserState(record.name, 'ACTIVATE')" title=""><span>{% trans 'Activate' %}</span></a>
|
||||
<a data-toggle="modal" data-target="#settings"
|
||||
ng-click="editInitial(record.name)"
|
||||
class="btn btn-border btn-alt border-purple btn-link font-purple" href="#"
|
||||
|
||||
@@ -32,4 +32,5 @@ urlpatterns = [
|
||||
url(r'^saveChangesAPIAccess$', views.saveChangesAPIAccess, name="saveChangesAPIAccess"),
|
||||
url(r'^listUsers$', views.listUsers, name="listUsers"),
|
||||
url(r'^fetchTableUsers$', views.fetchTableUsers, name="fetchTableUsers"),
|
||||
url(r'^controlUserState$', views.controlUserState, name="controlUserState"),
|
||||
]
|
||||
47
userManagment/userManager.py
Normal file
47
userManagment/userManager.py
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/usr/local/CyberCP/bin/python
|
||||
import os, sys
|
||||
|
||||
sys.path.append('/usr/local/CyberCP')
|
||||
import django
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
|
||||
django.setup()
|
||||
import threading as multi
|
||||
from plogical.acl import ACLManager
|
||||
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
|
||||
|
||||
|
||||
|
||||
class UserManager(multi.Thread):
|
||||
|
||||
def __init__(self, function, extraArgs):
|
||||
multi.Thread.__init__(self)
|
||||
self.function = function
|
||||
self.extraArgs = extraArgs
|
||||
|
||||
|
||||
def run(self):
|
||||
try:
|
||||
if self.function == 'controlUserState':
|
||||
self.controlUserState()
|
||||
except:
|
||||
pass
|
||||
|
||||
def controlUserState(self):
|
||||
try:
|
||||
websites = ACLManager.findAllSites(self.extraArgs['currentACL'],self.extraArgs['user'])
|
||||
from websiteFunctions.website import WebsiteManager
|
||||
|
||||
wm = WebsiteManager()
|
||||
|
||||
if self.extraArgs['state'] == 'SUSPEND':
|
||||
for items in websites:
|
||||
data = {'websiteName': items, 'state': 'Suspend'}
|
||||
wm.submitWebsiteStatus(self.extraArgs['user'].pk, data)
|
||||
else:
|
||||
for items in websites:
|
||||
data = {'websiteName': items, 'state': 'UN-Suspend'}
|
||||
wm.submitWebsiteStatus(self.extraArgs['user'].pk, data)
|
||||
|
||||
|
||||
except BaseException as msg:
|
||||
logging.writeToFile(str(msg) + '[Error:UserManager:32]')
|
||||
@@ -240,7 +240,6 @@ def submitUserCreation(request):
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
def modifyUsers(request):
|
||||
try:
|
||||
userID = request.session['userID']
|
||||
@@ -1011,3 +1010,59 @@ def fetchTableUsers(request):
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
def controlUserState(request):
|
||||
try:
|
||||
val = request.session['userID']
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
data = json.loads(request.body)
|
||||
accountUsername = data['accountUsername']
|
||||
state = data['state']
|
||||
|
||||
user = Administrator.objects.get(userName=accountUsername)
|
||||
|
||||
currentACL = ACLManager.loadedACL(val)
|
||||
loggedUser = Administrator.objects.get(pk=val)
|
||||
|
||||
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'] = currentACL
|
||||
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)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except KeyError:
|
||||
data_ret = {'status': 0, 'saveStatus': 0, 'error_message': "Not logged in as admin", }
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
Reference in New Issue
Block a user