Skip to content
Snippets Groups Projects
Commit 0f6f40d8 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

logout button added in admin panel

parent 68878a5a
No related branches found
No related tags found
1 merge request!159Resolve "Exception for different `VIEW_PROJECT` settings of default map"
......@@ -93,6 +93,18 @@ Admin.prototype._createGui = function () {
for (var i = 0; i < panels.length; i++) {
self.addTab(panels[i], tabMenuDiv, tabContentDiv);
}
self.addLogoutButton(tabMenuDiv);
};
Admin.prototype.addLogoutButton = function (navElement) {
var self = this;
var logoutLink = self.getGuiUtils().createLogoutLink();
var navLi = document.createElement("li");
navLi.appendChild(logoutLink);
navLi.style.cssFloat = "right";
navElement.appendChild(navLi);
};
Admin.prototype.addTab = function (params, navElement, contentElement) {
......
......@@ -1355,9 +1355,11 @@ ServerConnector.login = function (login, password) {
ServerConnector.logout = function () {
var self = this;
self.getSessionData().setToken(undefined);
self.getSessionData().setLogin(undefined);
return self.sendGetRequest(self.logoutUrl());
return self.sendGetRequest(self.logoutUrl()).then(function(){
self.getSessionData().setToken(undefined);
self.getSessionData().setLogin(undefined);
window.location.reload(false);
});
};
ServerConnector.getElementsByQuery = function (params) {
......
......@@ -428,6 +428,17 @@ GuiUtils.prototype.createModifiersLine = function (label, value) {
return result;
};
GuiUtils.prototype.createLogoutLink = function () {
var logoutLink = document.createElement("a");
logoutLink.href = "#";
logoutLink.innerHTML = "LOGOUT";
logoutLink.id = "logoutLink";
logoutLink.onclick = function () {
return ServerConnector.logout();
};
return logoutLink;
};
GuiUtils.prototype.createTabMenuObject = function (params) {
var name = params.name;
var id = params.id;
......
"use strict";
require("./mocha-config");
var Admin = require('../../main/js/Admin');
var ServerConnector = require('./ServerConnector-mock');
var logger = require('./logger');
var assert = require('assert');
describe('Admin', function () {
describe('constructor', function () {
it('default', function () {
var admin = new Admin(helper.createCustomMapOptions());
assert.ok(admin);
admin.destroy();
});
});
describe('logout', function () {
it('default', function () {
var admin = new Admin(helper.createCustomMapOptions());
var token = ServerConnector.getSessionData().getToken();
return admin.init().then(function () {
assert.ok(token === ServerConnector.getSessionData().getToken());
var link = $("#logoutLink", testDiv)[0];
return link.onclick();
}).then(function () {
assert.ok(token !== ServerConnector.getSessionData().getToken());
admin.destroy();
})
});
});
});
{"status":"ok"}
\ No newline at end of file
......@@ -7,11 +7,15 @@ import java.util.List;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
......@@ -27,7 +31,6 @@ import com.fasterxml.jackson.databind.JsonMappingException;
import lcsb.mapviewer.api.BaseController;
import lcsb.mapviewer.api.ObjectNotFoundException;
import lcsb.mapviewer.api.QueryException;
import lcsb.mapviewer.api.projects.ProjectMetaData;
import lcsb.mapviewer.common.Configuration;
import lcsb.mapviewer.services.SecurityException;
import lcsb.mapviewer.services.interfaces.IUserService;
......@@ -123,9 +126,18 @@ public class UserController extends BaseController {
@RequestMapping(value = "/doLogout", method = { RequestMethod.GET, RequestMethod.POST }, produces = {
MediaType.APPLICATION_JSON_VALUE })
public Map<String, String> logout(@CookieValue(value = Configuration.AUTH_TOKEN) String token,
HttpServletResponse response //
HttpServletRequest request, HttpServletResponse response //
) throws SecurityException, IOException {
//spring logout
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
logger.debug("LOGOUT");
logger.debug(auth);
if (auth != null){
new SecurityContextLogoutHandler().logout(request, response, auth);
}
//our session manager logout
userService.logout(token);
Map<String, String> result = new HashMap<>();
result.put("status", "OK");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment