diff --git a/scm-web-api/src/main/java/sonia/scm/web/security/BasicSecurityContext.java b/scm-web-api/src/main/java/sonia/scm/web/security/BasicSecurityContext.java index 1ebe9fd3e6..75ac883bd9 100644 --- a/scm-web-api/src/main/java/sonia/scm/web/security/BasicSecurityContext.java +++ b/scm-web-api/src/main/java/sonia/scm/web/security/BasicSecurityContext.java @@ -48,6 +48,19 @@ public class BasicSecurityContext implements SecurityContext return user; } + /** + * Method description + * + * + * @param request + * @param response + */ + @Override + public void logout(HttpServletRequest request, HttpServletResponse response) + { + user = null; + } + //~--- get methods ---------------------------------------------------------- /** diff --git a/scm-web-api/src/main/java/sonia/scm/web/security/SecurityContext.java b/scm-web-api/src/main/java/sonia/scm/web/security/SecurityContext.java index 0f011bc050..978399668f 100644 --- a/scm-web-api/src/main/java/sonia/scm/web/security/SecurityContext.java +++ b/scm-web-api/src/main/java/sonia/scm/web/security/SecurityContext.java @@ -35,8 +35,17 @@ public interface SecurityContext * @return */ public User authenticate(HttpServletRequest request, - HttpServletResponse response, String username, - String password); + HttpServletResponse response, String username, + String password); + + /** + * Method description + * + * + * @param request + * @param response + */ + public void logout(HttpServletRequest request, HttpServletResponse response); //~--- get methods ---------------------------------------------------------- diff --git a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java index 1327c5947d..cc972ea37d 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/rest/resources/AuthenticationResource.java @@ -43,6 +43,27 @@ import javax.ws.rs.core.Response; public class AuthenticationResource { + /** + * Method description + * + * + * @param request + * @param response + * + * @return + */ + @GET + @Path("logout") + public Response logout(@Context HttpServletRequest request, + @Context HttpServletResponse response) + { + securityContext.logout(request, response); + + return Response.ok().build(); + } + + //~--- get methods ---------------------------------------------------------- + /** * Method description * @@ -55,6 +76,7 @@ public class AuthenticationResource * @return */ @POST + @Path("login") public ScmState getState(@Context HttpServletRequest request, @Context HttpServletResponse response, @FormParam("username") String username, diff --git a/scm-webapp/src/main/webapp/index.html b/scm-webapp/src/main/webapp/index.html index 2d5caab72b..817d40694b 100644 --- a/scm-webapp/src/main/webapp/index.html +++ b/scm-webapp/src/main/webapp/index.html @@ -24,7 +24,9 @@ +