-
Notifications
You must be signed in to change notification settings - Fork 2
/
session-timer.xhtml
56 lines (53 loc) · 2.63 KB
/
session-timer.xhtml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:rich="http://richfaces.org/rich"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:a4j="http://richfaces.org/a4j">
<rich:modalPanel id="sessionExpiringModal" height="125" width="250">
<f:facet name="header">
<h:outputText value="Inactivity Timer" />
</f:facet>
<div class="section">
<div id="countdown-timer">Your session will expire in
<span id="dialog-countdown" style="font-weight:bold; text-decoration: underline;"> </span>
seconds due to inactivity.
</div>
<div class="button-holder" style="margin-top: 10px;">
<a4j:form prependId="false">
<s:link id="logout" action="#{identity.logout}" styleClass="button" />
<span class="inner-button">Logout</span>
</s:link>
</a4j:form>
<a id="#session-continue-button" class="button" href="#" onclick="window.location.reload();">
<span class="inner-button">Continue</span>
</a>
</div>
</div>
</rich:modalPanel>
<script type="text/javascript">
var sessionChecker = Seam.Component.getInstance("sessionChecker");
var inactivity = #{sessionChecker.sessionTimeoutSeconds} - 63; //kill the server session three seconds before the configured time
var $countdown = jQuery("#dialog-countdown");
jQuery.idleTimeout(document,'#session-continue-button',
{
// idleAfter: inactivity - 123,
idleAfter: 10, //dev
// warningLength: 60,
warningLength: 6, //dev
onIdle: function(){Richfaces.showModalPanel('sessionExpiringModal')},
onResume: function(){Richfaces.hideModalPanel('sessionExpiringModal')},
onCountdown: function(counter){
$countdown.html(counter); // update the counter
},
onTimeout: function(){
Richfaces.hideModalPanel('sessionExpiringModal');
logoutCallBackToServer();
}
});
</script>
<a4j:form ajaxSubmit="true">
<a4j:jsFunction name="logoutCallBackToServer" action="#{sessionChecker.logout(null)}" />
</a4j:form>
</ui:composition>