mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-05 04:46:07 +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) {
|
$scope.controlUserState = function (userName, state) {
|
||||||
alert(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>
|
<td>
|
||||||
<a ng-show="record.state=='ACTIVE'"
|
<a ng-show="record.state=='ACTIVE'"
|
||||||
class="btn btn-border btn-alt border-red btn-link font-red" href="#"
|
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'"
|
<a ng-show="record.state=='SUSPENDED'"
|
||||||
class="btn btn-border btn-alt border-green btn-link font-green" href="#"
|
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"
|
<a data-toggle="modal" data-target="#settings"
|
||||||
ng-click="editInitial(record.name)"
|
ng-click="editInitial(record.name)"
|
||||||
class="btn btn-border btn-alt border-purple btn-link font-purple" href="#"
|
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'^saveChangesAPIAccess$', views.saveChangesAPIAccess, name="saveChangesAPIAccess"),
|
||||||
url(r'^listUsers$', views.listUsers, name="listUsers"),
|
url(r'^listUsers$', views.listUsers, name="listUsers"),
|
||||||
url(r'^fetchTableUsers$', views.fetchTableUsers, name="fetchTableUsers"),
|
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)
|
json_data = json.dumps(data_ret)
|
||||||
return HttpResponse(json_data)
|
return HttpResponse(json_data)
|
||||||
|
|
||||||
|
|
||||||
def modifyUsers(request):
|
def modifyUsers(request):
|
||||||
try:
|
try:
|
||||||
userID = request.session['userID']
|
userID = request.session['userID']
|
||||||
@@ -1011,3 +1010,59 @@ def fetchTableUsers(request):
|
|||||||
|
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return redirect(loadLoginPage)
|
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