Skip to content

Commit b51ef9d

Browse files
committed
feature: suspend/unsuspend users
1 parent a080be2 commit b51ef9d

5 files changed

Lines changed: 159 additions & 5 deletions

File tree

userManagment/static/userManagment/userManagment.js

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1686,8 +1686,59 @@ app.controller('listTableUsers', function ($scope, $http) {
16861686

16871687
};
16881688

1689-
$scope.controlUserState = function (state) {
1690-
alert(state);
1689+
$scope.controlUserState = function (userName, state) {
1690+
$scope.cyberpanelLoading = false;
1691+
1692+
var url = "/users/controlUserState";
1693+
1694+
var data = {
1695+
accountUsername: userName,
1696+
state : state
1697+
};
1698+
1699+
var config = {
1700+
headers: {
1701+
'X-CSRFToken': getCookie('csrftoken')
1702+
}
1703+
};
1704+
1705+
$http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas);
1706+
1707+
1708+
function ListInitialDatas(response) {
1709+
$scope.cyberpanelLoading = true;
1710+
if (response.data.status === 1) {
1711+
$scope.populateCurrentRecords();
1712+
new PNotify({
1713+
title: 'Success!',
1714+
text: 'Action successfully started.',
1715+
type: 'success'
1716+
});
1717+
1718+
} else {
1719+
1720+
new PNotify({
1721+
title: 'Error!',
1722+
text: response.data.error_message,
1723+
type: 'error'
1724+
});
1725+
1726+
1727+
}
1728+
1729+
}
1730+
1731+
function cantLoadInitialDatas(response) {
1732+
1733+
$scope.cyberpanelLoading = false;
1734+
new PNotify({
1735+
title: 'Error!',
1736+
text: 'Could not connect to server, please refresh this page.',
1737+
type: 'error'
1738+
});
1739+
1740+
1741+
}
16911742
}
16921743

16931744
});

userManagment/templates/userManagment/listUsers.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ <h3 class="content-box-header">
4949
<td>
5050
<a ng-show="record.state=='ACTIVE'"
5151
class="btn btn-border btn-alt border-red btn-link font-red" href="#"
52-
ng-click="controlUserState('SUSPEND')" title=""><span>{% trans 'Suspend' %}</span></a>
52+
ng-click="controlUserState(record.name, 'SUSPEND')" title=""><span>{% trans 'Suspend' %}</span></a>
5353
<a ng-show="record.state=='SUSPENDED'"
5454
class="btn btn-border btn-alt border-green btn-link font-green" href="#"
55-
ng-click="controlUserState('ACTIVATE')" title=""><span>{% trans 'Activate' %}</span></a>
55+
ng-click="controlUserState(record.name, 'ACTIVATE')" title=""><span>{% trans 'Activate' %}</span></a>
5656
<a data-toggle="modal" data-target="#settings"
5757
ng-click="editInitial(record.name)"
5858
class="btn btn-border btn-alt border-purple btn-link font-purple" href="#"

userManagment/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@
3232
url(r'^saveChangesAPIAccess$', views.saveChangesAPIAccess, name="saveChangesAPIAccess"),
3333
url(r'^listUsers$', views.listUsers, name="listUsers"),
3434
url(r'^fetchTableUsers$', views.fetchTableUsers, name="fetchTableUsers"),
35+
url(r'^controlUserState$', views.controlUserState, name="controlUserState"),
3536
]

userManagment/userManager.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/usr/local/CyberCP/bin/python
2+
import os, sys
3+
4+
sys.path.append('/usr/local/CyberCP')
5+
import django
6+
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CyberCP.settings")
7+
django.setup()
8+
import threading as multi
9+
from plogical.acl import ACLManager
10+
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as logging
11+
12+
13+
14+
class UserManager(multi.Thread):
15+
16+
def __init__(self, function, extraArgs):
17+
multi.Thread.__init__(self)
18+
self.function = function
19+
self.extraArgs = extraArgs
20+
21+
22+
def run(self):
23+
try:
24+
if self.function == 'controlUserState':
25+
self.controlUserState()
26+
except:
27+
pass
28+
29+
def controlUserState(self):
30+
try:
31+
websites = ACLManager.findAllSites(self.extraArgs['currentACL'],self.extraArgs['user'])
32+
from websiteFunctions.website import WebsiteManager
33+
34+
wm = WebsiteManager()
35+
36+
if self.extraArgs['state'] == 'SUSPEND':
37+
for items in websites:
38+
data = {'websiteName': items, 'state': 'Suspend'}
39+
wm.submitWebsiteStatus(self.extraArgs['user'].pk, data)
40+
else:
41+
for items in websites:
42+
data = {'websiteName': items, 'state': 'UN-Suspend'}
43+
wm.submitWebsiteStatus(self.extraArgs['user'].pk, data)
44+
45+
46+
except BaseException as msg:
47+
logging.writeToFile(str(msg) + '[Error:UserManager:32]')

userManagment/views.py

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,6 @@ def submitUserCreation(request):
240240
json_data = json.dumps(data_ret)
241241
return HttpResponse(json_data)
242242

243-
244243
def modifyUsers(request):
245244
try:
246245
userID = request.session['userID']
@@ -1011,3 +1010,59 @@ def fetchTableUsers(request):
10111010

10121011
except KeyError:
10131012
return redirect(loadLoginPage)
1013+
1014+
def controlUserState(request):
1015+
try:
1016+
val = request.session['userID']
1017+
try:
1018+
if request.method == 'POST':
1019+
data = json.loads(request.body)
1020+
accountUsername = data['accountUsername']
1021+
state = data['state']
1022+
1023+
user = Administrator.objects.get(userName=accountUsername)
1024+
1025+
currentACL = ACLManager.loadedACL(val)
1026+
loggedUser = Administrator.objects.get(pk=val)
1027+
1028+
if currentACL['admin'] == 1:
1029+
pass
1030+
elif user.owner == loggedUser.pk:
1031+
pass
1032+
elif user.pk == loggedUser.pk:
1033+
pass
1034+
else:
1035+
data_ret = {'fetchStatus': 0, 'error_message': 'Un-authorized access.'}
1036+
json_data = json.dumps(data_ret)
1037+
return HttpResponse(json_data)
1038+
1039+
if state == 'SUSPEND':
1040+
user.state = 'SUSPENDED'
1041+
else:
1042+
user.state = 'ACTIVE'
1043+
1044+
user.save()
1045+
1046+
extraArgs = {}
1047+
extraArgs['user'] = user
1048+
extraArgs['currentACL'] = currentACL
1049+
extraArgs['state'] = state
1050+
1051+
from userManagment.userManager import UserManager
1052+
1053+
um = UserManager('controlUserState', extraArgs)
1054+
um.start()
1055+
1056+
data_ret = {'status': 1}
1057+
json_data = json.dumps(data_ret)
1058+
return HttpResponse(json_data)
1059+
1060+
except BaseException as msg:
1061+
data_ret = {'status': 0, 'saveStatus': 0, 'error_message': str(msg)}
1062+
json_data = json.dumps(data_ret)
1063+
return HttpResponse(json_data)
1064+
1065+
except KeyError:
1066+
data_ret = {'status': 0, 'saveStatus': 0, 'error_message': "Not logged in as admin", }
1067+
json_data = json.dumps(data_ret)
1068+
return HttpResponse(json_data)

0 commit comments

Comments
 (0)