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 package info.magnolia.cms.security;
35
36 import java.util.Date;
37
38 import javax.servlet.http.HttpServletRequest;
39 import javax.servlet.http.HttpSession;
40
41 import org.slf4j.Logger;
42 import org.slf4j.LoggerFactory;
43 import info.magnolia.context.MgnlContext;
44
45
46
47
48
49
50
51 public final class Lock {
52
53 private static Logger log = LoggerFactory.getLogger(Lock.class);
54
55
56
57
58 private static final String SESSION_LOCK = "mgnlSessionLock";
59
60
61
62
63 private static boolean isSystemLocked;
64
65
66
67
68 private static Date lockSetDate;
69
70
71
72
73 private Lock() {
74
75 }
76
77
78
79
80
81 public static void setSessionLock(HttpServletRequest request) {
82 log.info("Session lock enabled for user ( "
83 + MgnlContext.getUser().getName()
84 + " ) on "
85 + (new Date()).toString());
86
87 HttpSession httpsession = request.getSession(true);
88 httpsession.setAttribute(SESSION_LOCK, (new Date()).toString());
89 }
90
91
92
93
94
95
96 public static boolean isSessionLocked(HttpServletRequest request) {
97
98 if (request.getSession(true).getAttribute(Lock.SESSION_LOCK) != null) {
99 return true;
100 }
101 return false;
102 }
103
104
105
106
107
108 public static void resetSessionLock(HttpServletRequest request) {
109 if (!Lock.isSessionLocked(request)) {
110 if (log.isDebugEnabled()) {
111 log.debug("No Lock found to reset");
112 }
113 }
114 else {
115 if (log.isDebugEnabled()) {
116 log.debug("Resetting session lock");
117 }
118 Lock.isSystemLocked = false;
119 }
120
121 HttpSession httpsession = request.getSession(true);
122 httpsession.removeAttribute(Lock.SESSION_LOCK);
123 }
124
125
126
127
128 public static void setSystemLock() {
129 if (Lock.isSystemLocked()) {
130 if (log.isDebugEnabled()) {
131 log.debug("System lock exist, created on " + Lock.lockSetDate.toString());
132 }
133 }
134 else {
135 Lock.isSystemLocked = true;
136 Lock.lockSetDate = new Date();
137 if (log.isDebugEnabled()) {
138 log.debug("New System lock created on " + Lock.lockSetDate.toString() + " )");
139 }
140 }
141 }
142
143
144
145
146 public static void resetSystemLock() {
147 if (!Lock.isSystemLocked()) {
148 log.debug("No Lock found to reset");
149 }
150 else {
151 if (log.isDebugEnabled()) {
152 log.debug("Resetting system lock created on " + Lock.lockSetDate.toString());
153 }
154 Lock.isSystemLocked = false;
155 }
156 }
157
158
159
160
161
162 public static boolean isSystemLocked() {
163 return Lock.isSystemLocked;
164 }
165 }