This commit is contained in:
Claude Brisson
2023-12-27 10:51:43 +01:00
parent 1f406c4459
commit 515767355d
5 changed files with 52 additions and 3 deletions

View File

@@ -46,7 +46,8 @@ class AuthFilter: Filter {
private val whitelist = setOf(
"/index-ffg",
"/login",
"/api/login"
"/api/login",
"api/logout"
)
fun whitelisted(uri: String): Boolean {

View File

@@ -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())
}
}

View File

@@ -54,6 +54,12 @@
max-height: 100%;
}
}
#header-right {
display: flex;
flex-flow: row nowrap;
gap: 0.5em;
padding-right: 0.5em;
}
}
#center {

View File

@@ -43,9 +43,16 @@
<h1 id="title">
#if($tour)$esc.html($tour.name)#end
</h1>
<div id="header-right">
<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 id="center">
<div id="inner">
@@ -108,6 +115,14 @@
$('body').removeClass('dimmed');
}
});
$('#logout').on('click', e => {
api.postJson('logout', {})
.then(ret => {
if (ret !== 'error') {
document.location.href = '/index';
}
});
});
});
// syntaxic sugar for IMask

View File

@@ -94,6 +94,12 @@
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</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-mapping>
@@ -120,6 +126,10 @@
<servlet-name>login</servlet-name>
<url-pattern>/api/login</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>logout</servlet-name>
<url-pattern>/api/logout</url-pattern>
</servlet-mapping>
<!-- context params -->
<context-param>