1 package org.apache.turbine.om.security;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Date;
23 import java.util.HashMap;
24 import java.util.Map;
25 import java.util.Set;
26
27 import javax.servlet.http.HttpSessionBindingEvent;
28
29 import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
30 import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
31 import org.apache.fulcrum.security.util.DataBackendException;
32 import org.apache.turbine.services.TurbineServices;
33 import org.apache.turbine.services.security.SecurityService;
34 import org.apache.turbine.util.ObjectUtils;
35
36
37
38
39
40
41
42
43
44 public class DefaultUserImpl implements User
45 {
46
47 private static final long serialVersionUID = -1866504873085624111L;
48
49
50 private Date lastAccessDate = null;
51
52
53 private Map<String, Object> permStorage = null;
54
55
56 private Map<String, Object> tempStorage = null;
57
58
59 private TurbineUser userDelegate = null;
60
61
62
63
64
65
66 public DefaultUserImpl(TurbineUser user)
67 {
68 super();
69 setUserDelegate( user );
70 setCreateDate(new Date());
71 tempStorage = new HashMap<>(10);
72 setHasLoggedIn(Boolean.FALSE);
73 }
74
75
76
77
78
79
80
81 @Override
82 public void valueBound(HttpSessionBindingEvent hsbe)
83 {
84
85 }
86
87
88
89
90
91
92
93 @Override
94 public void valueUnbound(HttpSessionBindingEvent hsbe)
95 {
96 try
97 {
98 if (hasLoggedIn())
99 {
100 SecurityService securityService =
101 (SecurityService)TurbineServices.getInstance()
102 .getService(SecurityService.SERVICE_NAME);
103 securityService.saveOnSessionUnbind(this);
104 }
105 }
106 catch (Exception e)
107 {
108
109
110
111
112
113 e.printStackTrace(System.out);
114 }
115 }
116
117
118
119
120
121
122 @Override
123 public String getName()
124 {
125 return userDelegate.getName();
126 }
127
128
129
130
131
132
133
134 @Override
135 public void setName(String name)
136 {
137 userDelegate.setName(name);
138 }
139
140
141
142
143
144
145 @Override
146 public Object getId()
147 {
148 return userDelegate.getId();
149 }
150
151
152
153
154
155
156
157 @Override
158 public void setId(Object id)
159 {
160 userDelegate.setId(id);
161 }
162
163
164
165
166
167
168
169
170
171
172
173
174
175 @Override
176 public String getPassword()
177 {
178 return userDelegate.getPassword();
179 }
180
181
182
183
184
185
186
187
188 @Override
189 public void setPassword(String password)
190 {
191 userDelegate.setPassword(password);
192 }
193
194
195
196
197
198
199 @Override
200 public String getFirstName()
201 {
202 return userDelegate.getFirstName();
203 }
204
205
206
207
208
209
210 @Override
211 public void setFirstName(String firstName)
212 {
213 userDelegate.setFirstName(firstName);
214 }
215
216
217
218
219
220
221 @Override
222 public String getLastName()
223 {
224 return userDelegate.getLastName();
225 }
226
227
228
229
230
231
232 @Override
233 public void setLastName(String lastName)
234 {
235 userDelegate.setLastName(lastName);
236 }
237
238
239
240
241
242
243 @Override
244 public String getEmail()
245 {
246 return userDelegate.getEmail();
247 }
248
249
250
251
252
253
254 @Override
255 public void setEmail(String address)
256 {
257 userDelegate.setEmail(address);
258 }
259
260
261
262
263
264
265
266
267
268 @Override
269 public byte[] getObjectdata()
270 {
271 return userDelegate.getObjectdata();
272 }
273
274
275
276
277
278
279 @Override
280 public void setObjectdata(byte[] objectdata)
281 {
282 userDelegate.setObjectdata(objectdata);
283 }
284
285
286
287
288
289
290
291
292 @Override
293 public <T extends TurbineUserGroupRole> Set<T> getUserGroupRoleSet() throws DataBackendException
294 {
295 return userDelegate.getUserGroupRoleSet();
296 }
297
298
299
300
301
302
303
304 @Override
305 public <T extends TurbineUserGroupRole> void setUserGroupRoleSet(Set<T> userGroupRoleSet)
306 {
307 userDelegate.setUserGroupRoleSet(userGroupRoleSet);
308 }
309
310
311
312
313
314
315
316
317
318 @Override
319 public void addUserGroupRole(TurbineUserGroupRole userGroupRole) throws DataBackendException
320 {
321 userDelegate.addUserGroupRole(userGroupRole);
322 }
323
324
325
326
327
328
329
330
331
332 @Override
333 public void removeUserGroupRole(TurbineUserGroupRole userGroupRole) throws DataBackendException
334 {
335 userDelegate.removeUserGroupRole(userGroupRole);
336 }
337
338
339
340
341
342
343 @Override
344 public int getAccessCounter()
345 {
346 try
347 {
348 return ((Integer) getPerm(User.ACCESS_COUNTER)).intValue();
349 }
350 catch (Exception e)
351 {
352 return 0;
353 }
354 }
355
356
357
358
359
360
361 @Override
362 public int getAccessCounterForSession()
363 {
364 try
365 {
366 return ((Integer) getTemp(User.SESSION_ACCESS_COUNTER)).intValue();
367 }
368 catch (Exception e)
369 {
370 return 0;
371 }
372 }
373
374
375
376
377 @Override
378 public void incrementAccessCounter()
379 {
380
381 setAccessCounter(getAccessCounter() + 1);
382 }
383
384
385
386
387 @Override
388 public void incrementAccessCounterForSession()
389 {
390 setAccessCounterForSession(getAccessCounterForSession() + 1);
391 }
392
393
394
395
396
397
398 @Override
399 public void setAccessCounter(int cnt)
400 {
401 setPerm(User.ACCESS_COUNTER, Integer.valueOf(cnt));
402 }
403
404
405
406
407
408
409
410 @Override
411 public void setAccessCounterForSession(int cnt)
412 {
413 setTemp(User.SESSION_ACCESS_COUNTER, Integer.valueOf(cnt));
414 }
415
416
417
418
419
420
421
422 @Override
423 public Date getLastAccessDate()
424 {
425 if (lastAccessDate == null)
426 {
427 setLastAccessDate();
428 }
429 return Date.from( lastAccessDate.toInstant());
430 }
431
432
433
434
435
436 @Override
437 public void setLastAccessDate()
438 {
439 lastAccessDate = new Date();
440 }
441
442
443
444
445
446
447
448 @Override
449 public synchronized Map<String, Object> getPermStorage()
450 {
451 if (permStorage == null)
452 {
453 byte [] objectdata = getObjectdata();
454
455 if (objectdata != null)
456 {
457 permStorage = ObjectUtils.deserialize(objectdata);
458 }
459
460 if (permStorage == null)
461 {
462 permStorage = new HashMap<>();
463 }
464 }
465
466 return permStorage;
467 }
468
469
470
471
472
473
474
475 @Override
476 public void setPermStorage(Map<String, Object> permStorage)
477 {
478 if (permStorage != null)
479 {
480 this.permStorage = permStorage;
481 }
482 }
483
484
485
486
487
488
489
490 @Override
491 public Map<String, Object> getTempStorage()
492 {
493 if (tempStorage == null)
494 {
495 tempStorage = new HashMap<>();
496 }
497 return tempStorage;
498 }
499
500
501
502
503
504
505
506 @Override
507 public void setTempStorage(Map<String, Object> tempStorage)
508 {
509 if (tempStorage != null)
510 {
511 this.tempStorage = tempStorage;
512 }
513 }
514
515
516
517
518
519
520
521 @Override
522 public Object getPerm(String name)
523 {
524 return getPermStorage().get(name);
525 }
526
527
528
529
530
531
532
533
534
535 @Override
536 public Object getPerm(String name, Object def)
537 {
538 try
539 {
540 Object val = getPermStorage().get(name);
541 return (val == null ? def : val);
542 }
543 catch (Exception e)
544 {
545 return def;
546 }
547 }
548
549
550
551
552
553
554
555 @Override
556 public void setPerm(String name, Object value)
557 {
558 getPermStorage().put(name, value);
559 }
560
561
562
563
564
565
566
567 @Override
568 public Object getTemp(String name)
569 {
570 return getTempStorage().get(name);
571 }
572
573
574
575
576
577
578
579
580
581 @Override
582 public Object getTemp(String name, Object def)
583 {
584 Object val;
585 try
586 {
587 val = getTempStorage().get(name);
588 if (val == null)
589 {
590 val = def;
591 }
592 }
593 catch (Exception e)
594 {
595 val = def;
596 }
597 return val;
598 }
599
600
601
602
603
604
605
606 @Override
607 public void setTemp(String name, Object value)
608 {
609 getTempStorage().put(name, value);
610 }
611
612
613
614
615
616
617
618 @Override
619 public Object removeTemp(String name)
620 {
621 return getTempStorage().remove(name);
622 }
623
624
625
626
627
628
629 @Override
630 public String getConfirmed()
631 {
632 return (String) getPerm(User.CONFIRM_VALUE);
633 }
634
635
636
637
638
639
640 @Override
641 public void setConfirmed(String confirm)
642 {
643 setPerm(User.CONFIRM_VALUE, confirm);
644 }
645
646
647
648
649
650
651 @Override
652 public Date getCreateDate()
653 {
654 return (Date)getPerm(CREATE_DATE, new Date());
655 }
656
657
658
659
660
661
662 @Override
663 public void setCreateDate(Date createDate)
664 {
665 setPerm(CREATE_DATE, createDate);
666 }
667
668
669
670
671
672
673 @Override
674 public Date getLastLogin()
675 {
676 return (Date) getPerm(User.LAST_LOGIN);
677 }
678
679
680
681
682
683
684 @Override
685 public void setLastLogin(Date lastLogin)
686 {
687 setPerm(User.LAST_LOGIN, lastLogin);
688 }
689
690
691
692
693
694
695 @Override
696 public boolean hasLoggedIn()
697 {
698 Boolean loggedIn = (Boolean) getTemp(User.HAS_LOGGED_IN);
699 return loggedIn != null && loggedIn.booleanValue();
700 }
701
702
703
704
705
706
707
708 @Override
709 public void setHasLoggedIn(Boolean value)
710 {
711 setTemp(User.HAS_LOGGED_IN, value);
712 }
713
714
715
716
717
718
719
720
721
722 @Override
723 public boolean isConfirmed()
724 {
725 String value = getConfirmed();
726 return value != null && value.equals(User.CONFIRM_DATA);
727 }
728
729
730
731
732
733
734 @Override
735 public void updateLastLogin()
736 throws Exception
737 {
738 setLastLogin(new Date());
739 }
740
741
742
743
744 @Override
745 public TurbineUser getUserDelegate()
746 {
747 return userDelegate;
748 }
749
750
751
752
753 @Override
754 public void setUserDelegate(TurbineUser userDelegate)
755 {
756 this.userDelegate = userDelegate;
757 }
758 }