Update & Delete users, adds username to control requests
This commit is contained in:
83
.idea/workspace.xml
generated
83
.idea/workspace.xml
generated
@@ -2,12 +2,10 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="28cc251f-c94f-44ee-a66d-77aaab6e3483" name="Default" comment="">
|
<list default="true" id="28cc251f-c94f-44ee-a66d-77aaab6e3483" name="Default" comment="">
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" afterPath="$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/__init__.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/__init__.py" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/__init__.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/__init__.py" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/json.py" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/templates/layout.jinja2" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/templates/layout.jinja2" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/templates/register.jinja2" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/templates/register.jinja2" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/view_helpers.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/view_helpers.py" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/pocwww/views.py" afterPath="$PROJECT_DIR$/www/pocwww/pocwww/views.py" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/www/pocwww/setup.py" afterPath="$PROJECT_DIR$/www/pocwww/setup.py" />
|
|
||||||
</list>
|
</list>
|
||||||
<ignored path="$PROJECT_DIR$/target/" />
|
<ignored path="$PROJECT_DIR$/target/" />
|
||||||
<ignored path="$PROJECT_DIR$/.gradle/" />
|
<ignored path="$PROJECT_DIR$/.gradle/" />
|
||||||
@@ -176,8 +174,8 @@
|
|||||||
<file leaf-file-name="WebServer.java" pinned="false" current-in-tab="true">
|
<file leaf-file-name="WebServer.java" pinned="false" current-in-tab="true">
|
||||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
|
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="523">
|
<state relative-caret-position="757">
|
||||||
<caret line="182" column="23" lean-forward="false" selection-start-line="182" selection-start-column="23" selection-end-line="182" selection-end-column="23" />
|
<caret line="92" column="23" lean-forward="true" selection-start-line="92" selection-start-column="23" selection-end-line="92" selection-end-column="23" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="imports" expanded="true" />
|
<element signature="imports" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -776,9 +774,10 @@
|
|||||||
<treeState />
|
<treeState />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectFrameBounds">
|
<component name="ProjectFrameBounds">
|
||||||
|
<option name="x" value="-3681" />
|
||||||
<option name="y" value="23" />
|
<option name="y" value="23" />
|
||||||
<option name="width" value="1680" />
|
<option name="width" value="1680" />
|
||||||
<option name="height" value="1027" />
|
<option name="height" value="961" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||||
<component name="ProjectView">
|
<component name="ProjectView">
|
||||||
@@ -849,6 +848,70 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</PATH>
|
||||||
|
<PATH>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="poc-java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="POC-Java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="src" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="main" />
|
||||||
|
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="poc" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="WebServer" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
</PATH>
|
||||||
|
<PATH>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="poc-java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="POC-Java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="src" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="main" />
|
||||||
|
<option name="myItemType" value="org.jetbrains.plugins.gradle.projectView.GradleTreeStructureProvider$GradleSourceSetDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="java" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="poc" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="WebServer" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="CommandHandler" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ClassTreeNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
</PATH>
|
||||||
</subPane>
|
</subPane>
|
||||||
</pane>
|
</pane>
|
||||||
<pane id="PackagesPane" />
|
<pane id="PackagesPane" />
|
||||||
@@ -1136,7 +1199,7 @@
|
|||||||
</todo-panel>
|
</todo-panel>
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="0" y="23" width="1680" height="1027" extended-state="6" />
|
<frame x="-3681" y="23" width="1680" height="961" extended-state="0" />
|
||||||
<editor active="true" />
|
<editor active="true" />
|
||||||
<layout>
|
<layout>
|
||||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||||
@@ -1940,8 +2003,8 @@
|
|||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
|
<entry file="file://$PROJECT_DIR$/src/main/java/com/henrypump/poc/WebServer.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="523">
|
<state relative-caret-position="757">
|
||||||
<caret line="182" column="23" lean-forward="false" selection-start-line="182" selection-start-column="23" selection-end-line="182" selection-end-column="23" />
|
<caret line="92" column="23" lean-forward="true" selection-start-line="92" selection-start-column="23" selection-end-line="92" selection-end-column="23" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="imports" expanded="true" />
|
<element signature="imports" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
|
|||||||
@@ -49,37 +49,42 @@ public class WebServer{
|
|||||||
public void handle(HttpExchange t) throws IOException {
|
public void handle(HttpExchange t) throws IOException {
|
||||||
JSONObject respJSON = new JSONObject();
|
JSONObject respJSON = new JSONObject();
|
||||||
Map<String, String> params = queryToMap(t.getRequestURI().getQuery());
|
Map<String, String> params = queryToMap(t.getRequestURI().getQuery());
|
||||||
|
String action = "";
|
||||||
|
String user = "";
|
||||||
for(Map.Entry<String, String> param_map : params.entrySet()){
|
for(Map.Entry<String, String> param_map : params.entrySet()){
|
||||||
String key = param_map.getKey();
|
String key = param_map.getKey();
|
||||||
String param = param_map.getValue();
|
String param = param_map.getValue();
|
||||||
|
|
||||||
switch (key){
|
switch (key) {
|
||||||
case "start":
|
case "cmd":
|
||||||
if(param.equals("true")) {
|
action = param;
|
||||||
attachedPOC.thisWell.start("web");
|
|
||||||
respJSON.put("startCommand", "true");
|
|
||||||
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
|
|
||||||
} else {
|
|
||||||
respJSON.put("startCommand", "invalid value - " + param);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
case "user":
|
||||||
case "stop":
|
user = param;
|
||||||
if(param.equals("true")) {
|
|
||||||
attachedPOC.thisWell.stop("web");
|
|
||||||
respJSON.put("stopCommand", "true");
|
|
||||||
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
|
|
||||||
} else {
|
|
||||||
respJSON.put("stopCommand", "invalid value - " + param);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
respJSON.put(key, "not implemented");
|
respJSON.put(key, "not implemented");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if ((user.length() > 0) && (action.length() > 0)) {
|
||||||
|
switch (action) {
|
||||||
|
case "start":
|
||||||
|
attachedPOC.thisWell.start(user);
|
||||||
|
respJSON.put("startCommand", "true");
|
||||||
|
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
|
||||||
|
break;
|
||||||
|
case "stop":
|
||||||
|
attachedPOC.thisWell.stop(user);
|
||||||
|
respJSON.put("stopCommand", "true");
|
||||||
|
respJSON.put("status", attachedPOC.thisWell.getRunStatusString());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
respJSON.put(action, "not implemented");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
respJSON.put("bad request", "cmd and user parameters required");
|
||||||
}
|
}
|
||||||
String response = respJSON.toJSONString();
|
String response = respJSON.toJSONString();
|
||||||
t.sendResponseHeaders(200, response.getBytes().length);
|
t.sendResponseHeaders(200, response.getBytes().length);
|
||||||
|
|||||||
@@ -175,9 +175,8 @@ def main(global_config, **settings):
|
|||||||
config.add_route("json_cmd_stop", "/json/cmd/stop", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_cmd_stop", "/json/cmd/stop", factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_cmd_shake", "/json/cmd/shake", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_cmd_shake", "/json/cmd/shake", factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_update_poc_address", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_update_poc_address", "/json/updatepocaddress", factory='pocwww.security.UserLoginFactory')
|
||||||
|
|
||||||
config.add_route("json_newuser", "/json/newuser", factory='pocwww.security.UserLoginFactory')
|
config.add_route("json_users", "/json/users", factory='pocwww.security.UserLoginFactory')
|
||||||
config.add_route("json_getusers", "/json/users", factory='pocwww.security.UserLoginFactory')
|
|
||||||
|
|
||||||
config.scan()
|
config.scan()
|
||||||
return config.make_wsgi_app()
|
return config.make_wsgi_app()
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ def json_updateconfig(request):
|
|||||||
jsb = request.json_body
|
jsb = request.json_body
|
||||||
new_config = {}
|
new_config = {}
|
||||||
new_config['timestamp'] = datetime.utcnow()
|
new_config['timestamp'] = datetime.utcnow()
|
||||||
new_config['storedBy'] = "web"
|
new_config['storedBy'] = request.authenticated_userid
|
||||||
new_config['wellName'] = jsb['wellName']
|
new_config['wellName'] = jsb['wellName']
|
||||||
new_config['tapers'] = []
|
new_config['tapers'] = []
|
||||||
for p in conv_to_float:
|
for p in conv_to_float:
|
||||||
@@ -163,7 +163,7 @@ def json_updateconfig(request):
|
|||||||
@view_config(route_name="json_cmd_start", renderer="prettyjson", permission="control")
|
@view_config(route_name="json_cmd_start", renderer="prettyjson", permission="control")
|
||||||
def json_start(request):
|
def json_start(request):
|
||||||
address = get_poc_address(request) or 'localhost'
|
address = get_poc_address(request) or 'localhost'
|
||||||
start_url = "http://{}:8000/command?start=true".format(address)
|
start_url = "http://{}:8000/command?cmd=start&user={}".format(address, request.authenticated_userid)
|
||||||
r = requests.get(start_url)
|
r = requests.get(start_url)
|
||||||
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
||||||
|
|
||||||
@@ -171,7 +171,7 @@ def json_start(request):
|
|||||||
@view_config(route_name="json_cmd_stop", renderer="prettyjson", permission="control")
|
@view_config(route_name="json_cmd_stop", renderer="prettyjson", permission="control")
|
||||||
def json_stop(request):
|
def json_stop(request):
|
||||||
address = get_poc_address(request) or 'localhost'
|
address = get_poc_address(request) or 'localhost'
|
||||||
stop_url = "http://{}:8000/command?stop=true".format(address)
|
stop_url = "http://{}:8000/command?cmd=stop&user={}".format(address, request.authenticated_userid)
|
||||||
r = requests.get(stop_url)
|
r = requests.get(stop_url)
|
||||||
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
return r.text if r.status_code == 200 else {"status": "failure sending command"}
|
||||||
|
|
||||||
@@ -194,7 +194,7 @@ def json_update_poc_address(request):
|
|||||||
return {"status": "failure"}
|
return {"status": "failure"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_newuser", renderer="prettyjson", request_method='POST', permission="edit")
|
@view_config(route_name="json_users", renderer="prettyjson", request_method='POST', permission="edit")
|
||||||
def json_newuser(request):
|
def json_newuser(request):
|
||||||
jsb = request.json_body
|
jsb = request.json_body
|
||||||
if request.db['users'].count({"username": jsb['username']}) > 0:
|
if request.db['users'].count({"username": jsb['username']}) > 0:
|
||||||
@@ -214,10 +214,35 @@ def json_newuser(request):
|
|||||||
return {'status': "OK"}
|
return {'status': "OK"}
|
||||||
|
|
||||||
|
|
||||||
@view_config(route_name="json_getusers", renderer="prettyjson", permission="edit")
|
@view_config(route_name="json_users", renderer="prettyjson", permission="edit", request_method='GET')
|
||||||
def json_getuser(request):
|
def json_getuser(request):
|
||||||
user_list = []
|
user_list = []
|
||||||
users = list(request.db['users'].find())
|
users = list(request.db['users'].find())
|
||||||
for user in users:
|
for user in users:
|
||||||
user_list.append(user['username'])
|
user_list.append(user['username'])
|
||||||
return {'users': user_list}
|
return {'users': user_list}
|
||||||
|
|
||||||
|
|
||||||
|
@view_config(route_name="json_users", renderer="prettyjson", permission="edit", request_method='DELETE')
|
||||||
|
def json_deleteuser(request):
|
||||||
|
request.db['users'].remove({'username': request.json_body['username']})
|
||||||
|
user_list = []
|
||||||
|
users = list(request.db['users'].find())
|
||||||
|
for user in users:
|
||||||
|
user_list.append(user['username'])
|
||||||
|
return {'users': user_list}
|
||||||
|
|
||||||
|
@view_config(route_name="json_users", renderer="prettyjson", request_method='PUT', permission="edit")
|
||||||
|
def json_newuser(request):
|
||||||
|
jsb = request.json_body
|
||||||
|
if len(jsb['username']) < 5:
|
||||||
|
fail_reason = "The username must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
elif len(jsb['password']) < 5:
|
||||||
|
fail_reason = "The password must be at least 5 characters"
|
||||||
|
return {"status": 'fail', "info": fail_reason}
|
||||||
|
|
||||||
|
else:
|
||||||
|
set_return = set_password(request, jsb['username'], jsb['password'])
|
||||||
|
return {'status': "OK"}
|
||||||
|
|||||||
@@ -15,23 +15,49 @@
|
|||||||
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
|
<input type="password" name="password" class="form-control" id="password" placeholder="Password">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<button id="submit" class="btn btn-default">Create User</button>
|
<button id="submitNewUser" class="btn btn-primary">Create User</button>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<hr />
|
<br />
|
||||||
|
<div class="alert alert-success alert-dismissable hidden" id="add-user-success">
|
||||||
<div class="alert alert-success alert-dismissable hidden" id="update-success">
|
|
||||||
<span>
|
<span>
|
||||||
<p>User successfully added!</p>
|
<p>User successfully added!</p>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="alert alert-danger alert-dismissable hidden" id="update-failed">
|
<div class="alert alert-danger alert-dismissable hidden" id="add-user-failed">
|
||||||
<span>
|
<span>
|
||||||
<p><span id="error-message"></span></p>
|
<p><span id="error-message"></span></p>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
<h2>Change Password</h2>
|
||||||
|
<form class="form-inline">
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="newPassword">New Password</label>
|
||||||
|
<input type="password" name="newPassword" class="form-control" id="newPassword" placeholder="Password">
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<button id="submitNewPassword" class="btn btn-primary">Update Password</button>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<div class="alert alert-success alert-dismissable hidden" id="update-password-success">
|
||||||
|
<span>
|
||||||
|
<p>Password successfully updated!</p>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="alert alert-danger alert-dismissable hidden" id="update-password-failed">
|
||||||
|
<span>
|
||||||
|
<p><span id="error-message"></span></p>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<hr />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<h2>All Users</h2>
|
<h2>All Users</h2>
|
||||||
<div class="table-reponsive">
|
<div class="table-reponsive">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
@@ -50,9 +76,20 @@
|
|||||||
|
|
||||||
function addedUser(data){
|
function addedUser(data){
|
||||||
if (data.status == "OK"){
|
if (data.status == "OK"){
|
||||||
$('#update-success').removeClass('hidden');
|
$('#add-user-success').removeClass('hidden');
|
||||||
} else {
|
} else {
|
||||||
$('#update-failed').removeClass('hidden');
|
$('#add-user-failed').removeClass('hidden');
|
||||||
|
$('#error-message').text(data.info);
|
||||||
|
|
||||||
|
}
|
||||||
|
getAllUsers();
|
||||||
|
};
|
||||||
|
|
||||||
|
function updatedUserPassword(data){
|
||||||
|
if (data.status == "OK"){
|
||||||
|
$('#update-password-success').removeClass('hidden');
|
||||||
|
} else {
|
||||||
|
$('#update-password-failed').removeClass('hidden');
|
||||||
$('#error-message').text(data.info);
|
$('#error-message').text(data.info);
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -69,25 +106,57 @@
|
|||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
data: JSON.stringify(newUser),
|
data: JSON.stringify(newUser),
|
||||||
contentType: "application/json; charset=utf-8",
|
contentType: "application/json; charset=utf-8",
|
||||||
url: "/json/newuser",
|
url: "/json/users",
|
||||||
success: addedUser
|
success: addedUser
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$("#submit").click(function(event){
|
function sendUpdateUser(){
|
||||||
|
var newUser = {
|
||||||
|
username: '{{request.authenticated_userid}}',
|
||||||
|
password: $("#newPassword").val()
|
||||||
|
};
|
||||||
|
$.ajax({
|
||||||
|
type: "PUT",
|
||||||
|
dataType: 'json',
|
||||||
|
data: JSON.stringify(newUser),
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: "/json/users",
|
||||||
|
success: updatedUserPassword
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
$("#submitNewUser").click(function(event){
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
$('#update-success').addClass('hidden');
|
$('#add-user-success').addClass('hidden');
|
||||||
$('#update-failed').addClass('hidden');
|
$('#add-user-failed').addClass('hidden');
|
||||||
sendNewUser();
|
sendNewUser();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#submitNewPassword").click(function(event){
|
||||||
|
event.preventDefault();
|
||||||
|
$('#update-password-success').addClass('hidden');
|
||||||
|
$('#update-password-failed').addClass('hidden');
|
||||||
|
sendUpdateUser();
|
||||||
|
});
|
||||||
|
|
||||||
function showAllUsers(data){
|
function showAllUsers(data){
|
||||||
$('tbody').empty();
|
$('tbody').empty();
|
||||||
for(var i = 0; i < data.users.length; i++){
|
for(var i = 0; i < data.users.length; i++){
|
||||||
$('tbody').append("<tr><td>" + data.users[i] + '</td><td><button class="btn btn-danger">Delete</button></td></tr>');
|
if (data.users[i] == "admin"){
|
||||||
|
$('tbody').append("<tr><td>" + data.users[i] + '</td><td><button type="button" class="btn btn-disabled" title="What are you doing?" data-container="body" data-toggle="popover" data-trigger="focus" data-placement="right" data-content="You cannot delete the admin user">Delete</button></td></tr>');
|
||||||
|
} else if (data.users[i] == '{{request.authenticated_userid}}'){
|
||||||
|
$('tbody').append("<tr><td>" + data.users[i] + '</td><td><button type="button" class="btn btn-disabled" title="What are you doing?" data-container="body" data-toggle="popover" data-trigger="focus" data-placement="right" data-content="You cannot delete yourself. It doesn\'t work like that... ">Delete</button></td></tr>');
|
||||||
|
} else {
|
||||||
|
$('tbody').append("<tr><td>" + data.users[i] + '</td><td><button class="btn btn-danger" onclick="deleteUser(\'' + data.users[i] + '\')">Delete</button></td></tr>');
|
||||||
|
}
|
||||||
|
$(function () {
|
||||||
|
$('[data-toggle="popover"]').popover({html: true})
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
'<button type="button" class="btn btn-default" title="What are you doing?" data-container="body" data-toggle="popover" data-trigger="focus" data-placement="right" data-content="You cannot delete the admin user">Delete</button>'
|
||||||
|
|
||||||
function getAllUsers(){
|
function getAllUsers(){
|
||||||
$.ajax({
|
$.ajax({
|
||||||
@@ -98,6 +167,21 @@
|
|||||||
}
|
}
|
||||||
getAllUsers();
|
getAllUsers();
|
||||||
|
|
||||||
|
function deleteUser(username){
|
||||||
|
$.ajax({
|
||||||
|
type:'DELETE',
|
||||||
|
dataType: 'json',
|
||||||
|
data: JSON.stringify({"username": username}),
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: "/json/users",
|
||||||
|
success: getAllUsers
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
$('[data-toggle="popover"]').popover({html: true})
|
||||||
|
})
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|||||||
Reference in New Issue
Block a user