From fe2a107ae42b55a59359152f3e176478c9c56e0e Mon Sep 17 00:00:00 2001 From: Matthew Letter Date: Fri, 20 Nov 2015 10:52:30 -0700 Subject: [PATCH] started adding a logout mechanism #542 --- packages/slycat/web/server/engine.py | 1 + packages/slycat/web/server/handlers.py | 13 +++++++++++++ web-server/js/slycat-navbar.js | 5 +++++ web-server/js/slycat-web-client.js | 19 +++++++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/packages/slycat/web/server/engine.py b/packages/slycat/web/server/engine.py index fcaea75c5..2e69a6cc1 100644 --- a/packages/slycat/web/server/engine.py +++ b/packages/slycat/web/server/engine.py @@ -137,6 +137,7 @@ def abspath(path): dispatcher.connect("put-upload-file-part", "/uploads/:uid/files/:fid/parts/:pid", slycat.web.server.handlers.put_upload_file_part, conditions={"method" : ["PUT"]}) dispatcher.connect("post-upload-finshed", "/uploads/:uid/finished", slycat.web.server.handlers.post_upload_finished, conditions={"method" : ["POST"]}) dispatcher.connect("delete-upload", "/uploads/:uid", slycat.web.server.handlers.delete_upload, conditions={"method" : ["DELETE"]}) + dispatcher.connect("logout", "/logout", slycat.web.server.handlers.logout, conditions={"method" : ["DELETE"]}) def log_configuration(tree, indent=""): for key, value in sorted(tree.items()): diff --git a/packages/slycat/web/server/handlers.py b/packages/slycat/web/server/handlers.py index d557974af..d3a0698bf 100644 --- a/packages/slycat/web/server/handlers.py +++ b/packages/slycat/web/server/handlers.py @@ -662,6 +662,19 @@ def delete_upload(uid): slycat.web.server.upload.delete_session(uid) cherrypy.response.status = "204 Upload session deleted." +def logout(): + # See if the client has a valid session. + if "slycatauth" in cherrypy.request.cookie: + sid = cherrypy.request.cookie["slycatauth"].value + couchdb = slycat.web.server.database.couchdb.connect() + session = couchdb.get("session", sid) + if session is not None: + cherrypy.response.status = "204 session deleted." + json.dumps(session) + str(couchdb.delete(session)) + else: + cherrypy.response.status = "204 session not deleted." + json.dumps(session) + sid + str(session.get("_id") is sid) + ":::::" + session.get("_id") + ":::::" + sid + else: + cherrypy.response.status = "404 no auth found" + @cherrypy.tools.json_in(on = True) def put_model_inputs(mid): database = slycat.web.server.database.couchdb.connect() diff --git a/web-server/js/slycat-navbar.js b/web-server/js/slycat-navbar.js index 85004834e..f8bc05802 100644 --- a/web-server/js/slycat-navbar.js +++ b/web-server/js/slycat-navbar.js @@ -388,6 +388,11 @@ define("slycat-navbar", ["slycat-server-root", "slycat-web-client", "slycat-chan } component.update_references(); + component.sign_out = function() + { + window.alert("hello"); + client.sign_out({success:function(){window.alert("you are logged out");},error: function(){window.alert("something went wrong");}}) + } }, template: { require: "text!" + server_root + "templates/slycat-navbar.html" } diff --git a/web-server/js/slycat-web-client.js b/web-server/js/slycat-web-client.js index 9ab1e8bc1..f48dab29d 100644 --- a/web-server/js/slycat-web-client.js +++ b/web-server/js/slycat-web-client.js @@ -1092,5 +1092,24 @@ define("slycat-web-client", ["slycat-server-root", "jquery", "URI"], function(se }); } + module.sign_out = function(params) + { + $.ajax( + { + type: "DELETE", + url: server_root + "logout", + success: function() + { + if(params.success) + params.success(); + }, + error: function(request, status, reason_phrase) + { + if(params.error) + params.error(request, status, reason_phrase); + }, + }); + } + return module; });