Logout
This commit is contained in:
@@ -46,7 +46,8 @@ class AuthFilter: Filter {
|
|||||||
private val whitelist = setOf(
|
private val whitelist = setOf(
|
||||||
"/index-ffg",
|
"/index-ffg",
|
||||||
"/login",
|
"/login",
|
||||||
"/api/login"
|
"/api/login",
|
||||||
|
"api/logout"
|
||||||
)
|
)
|
||||||
|
|
||||||
fun whitelisted(uri: String): Boolean {
|
fun whitelisted(uri: String): Boolean {
|
||||||
|
@@ -0,0 +1,17 @@
|
|||||||
|
package org.jeudego.pairgoth.web
|
||||||
|
|
||||||
|
import com.republicate.kson.Json
|
||||||
|
import org.slf4j.LoggerFactory
|
||||||
|
import javax.servlet.http.HttpServlet
|
||||||
|
import javax.servlet.http.HttpServletRequest
|
||||||
|
import javax.servlet.http.HttpServletResponse
|
||||||
|
|
||||||
|
class LogoutServlet: HttpServlet() {
|
||||||
|
|
||||||
|
override fun doPost(req: HttpServletRequest, resp: HttpServletResponse) {
|
||||||
|
req.session.removeAttribute("logged")
|
||||||
|
val ret = Json.Object("status" to "ok")
|
||||||
|
resp.contentType = "application/json"
|
||||||
|
resp.writer.println(ret.toString())
|
||||||
|
}
|
||||||
|
}
|
@@ -54,6 +54,12 @@
|
|||||||
max-height: 100%;
|
max-height: 100%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#header-right {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
gap: 0.5em;
|
||||||
|
padding-right: 0.5em;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#center {
|
#center {
|
||||||
|
@@ -43,8 +43,15 @@
|
|||||||
<h1 id="title">
|
<h1 id="title">
|
||||||
#if($tour)$esc.html($tour.name)#end
|
#if($tour)$esc.html($tour.name)#end
|
||||||
</h1>
|
</h1>
|
||||||
<div id="lang">
|
<div id="header-right">
|
||||||
<i class="$translate.flags[$request.lang] flag"></i>
|
<div id="lang">
|
||||||
|
<i class="$translate.flags[$request.lang] flag"></i>
|
||||||
|
</div>
|
||||||
|
#if($session.logged)
|
||||||
|
<div id="logout">
|
||||||
|
<i class="fa fa-sign-out"></i>
|
||||||
|
</div>
|
||||||
|
#end
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="center">
|
<div id="center">
|
||||||
@@ -108,6 +115,14 @@
|
|||||||
$('body').removeClass('dimmed');
|
$('body').removeClass('dimmed');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
$('#logout').on('click', e => {
|
||||||
|
api.postJson('logout', {})
|
||||||
|
.then(ret => {
|
||||||
|
if (ret !== 'error') {
|
||||||
|
document.location.href = '/index';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
// syntaxic sugar for IMask
|
// syntaxic sugar for IMask
|
||||||
|
@@ -94,6 +94,12 @@
|
|||||||
<load-on-startup>1</load-on-startup>
|
<load-on-startup>1</load-on-startup>
|
||||||
<async-supported>true</async-supported>
|
<async-supported>true</async-supported>
|
||||||
</servlet>
|
</servlet>
|
||||||
|
<servlet>
|
||||||
|
<servlet-name>logout</servlet-name>
|
||||||
|
<servlet-class>org.jeudego.pairgoth.web.LogoutServlet</servlet-class>
|
||||||
|
<load-on-startup>1</load-on-startup>
|
||||||
|
<async-supported>true</async-supported>
|
||||||
|
</servlet>
|
||||||
|
|
||||||
<!-- servlet mappings -->
|
<!-- servlet mappings -->
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
@@ -120,6 +126,10 @@
|
|||||||
<servlet-name>login</servlet-name>
|
<servlet-name>login</servlet-name>
|
||||||
<url-pattern>/api/login</url-pattern>
|
<url-pattern>/api/login</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>logout</servlet-name>
|
||||||
|
<url-pattern>/api/logout</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- context params -->
|
<!-- context params -->
|
||||||
<context-param>
|
<context-param>
|
||||||
|
Reference in New Issue
Block a user