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.io.ByteArrayOutputStream;
23 import java.io.PrintWriter;
24 import java.util.Date;
25 import java.util.HashMap;
26 import java.util.Map;
27 import java.util.Set;
28
29 import javax.servlet.http.HttpSessionBindingEvent;
30
31 import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
32 import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
33 import org.apache.fulcrum.security.util.DataBackendException;
34 import org.apache.turbine.services.TurbineServices;
35 import org.apache.turbine.services.security.SecurityService;
36 import org.apache.turbine.util.ObjectUtils;
37
38
39
40
41
42
43
44
45
46 public class DefaultUserImpl implements User
47 {
48
49 private static final long serialVersionUID = -1866504873085624111L;
50
51
52 private Date lastAccessDate = null;
53
54
55 private Map<String, Object> permStorage = null;
56
57
58 private Map<String, Object> tempStorage = null;
59
60
61 private TurbineUser userDelegate = null;
62
63
64
65
66
67
68 public DefaultUserImpl(TurbineUser user)
69 {
70 super();
71 setUserDelegate( user );;
72 setCreateDate(new Date());
73 tempStorage = new HashMap<String, Object>(10);
74 setHasLoggedIn(Boolean.FALSE);
75 }
76
77
78
79
80
81
82
83 @Override
84 public void valueBound(HttpSessionBindingEvent hsbe)
85 {
86
87 }
88
89
90
91
92
93
94
95 @Override
96 public void valueUnbound(HttpSessionBindingEvent hsbe)
97 {
98 try
99 {
100 if (hasLoggedIn())
101 {
102 SecurityService securityService = (SecurityService)TurbineServices.getInstance().getService(SecurityService.SERVICE_NAME);
103 securityService.saveOnSessionUnbind(this);
104 }
105 }
106 catch (Exception e)
107 {
108
109
110
111
112
113 ByteArrayOutputStream ostr = new ByteArrayOutputStream();
114 e.printStackTrace(new PrintWriter(ostr, true));
115 String stackTrace = ostr.toString();
116 System.out.println(stackTrace);
117 }
118 }
119
120
121
122
123
124
125 @Override
126 public String getName()
127 {
128 return userDelegate.getName();
129 }
130
131
132
133
134
135
136
137 @Override
138 public void setName(String name)
139 {
140 userDelegate.setName(name);
141 }
142
143
144
145
146
147
148 @Override
149 public Object getId()
150 {
151 return userDelegate.getId();
152 }
153
154
155
156
157
158
159
160 @Override
161 public void setId(Object id)
162 {
163 userDelegate.setId(id);
164 }
165
166
167
168
169
170
171
172
173
174
175
176
177
178 @Override
179 public String getPassword()
180 {
181 return userDelegate.getPassword();
182 }
183
184
185
186
187
188
189
190
191 @Override
192 public void setPassword(String password)
193 {
194 userDelegate.setPassword(password);
195 }
196
197
198
199
200
201
202 @Override
203 public String getFirstName()
204 {
205 return userDelegate.getFirstName();
206 }
207
208
209
210
211
212
213 @Override
214 public void setFirstName(String firstName)
215 {
216 userDelegate.setFirstName(firstName);
217 }
218
219
220
221
222
223
224 @Override
225 public String getLastName()
226 {
227 return userDelegate.getLastName();
228 }
229
230
231
232
233
234
235 @Override
236 public void setLastName(String lastName)
237 {
238 userDelegate.setLastName(lastName);
239 }
240
241
242
243
244
245
246 @Override
247 public String getEmail()
248 {
249 return userDelegate.getEmail();
250 }
251
252
253
254
255
256
257 @Override
258 public void setEmail(String address)
259 {
260 userDelegate.setEmail(address);
261 }
262
263
264
265
266
267
268
269
270
271 @Override
272 public byte[] getObjectdata()
273 {
274 return userDelegate.getObjectdata();
275 }
276
277
278
279
280
281
282 @Override
283 public void setObjectdata(byte[] objectdata)
284 {
285 userDelegate.setObjectdata(objectdata);
286 }
287
288
289
290
291
292
293
294 @Override
295 public <T extends TurbineUserGroupRole> Set<T> getUserGroupRoleSet() throws DataBackendException
296 {
297 return userDelegate.getUserGroupRoleSet();
298 }
299
300
301
302
303
304
305
306 @Override
307 public <T extends TurbineUserGroupRole> void setUserGroupRoleSet(Set<T> userGroupRoleSet)
308 {
309 userDelegate.setUserGroupRoleSet(userGroupRoleSet);
310 }
311
312
313
314
315
316
317
318
319 @Override
320 public void addUserGroupRole(TurbineUserGroupRole userGroupRole) throws DataBackendException
321 {
322 userDelegate.addUserGroupRole(userGroupRole);
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 java.util.Date getLastAccessDate()
424 {
425 if (lastAccessDate == null)
426 {
427 setLastAccessDate();
428 }
429 return lastAccessDate;
430 }
431
432
433
434
435
436 @Override
437 public void setLastAccessDate()
438 {
439 lastAccessDate = new java.util.Date();
440 }
441
442
443
444
445
446
447
448 @Override
449 public 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<String, Object>();
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<String, Object>();
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 java.util.Date getCreateDate()
653 {
654 return (java.util.Date)getPerm(CREATE_DATE, new java.util.Date());
655 }
656
657
658
659
660
661
662 @Override
663 public void setCreateDate(java.util.Date createDate)
664 {
665 setPerm(CREATE_DATE, createDate);
666 }
667
668
669
670
671
672
673 @Override
674 public java.util.Date getLastLogin()
675 {
676 return (java.util.Date) getPerm(User.LAST_LOGIN);
677 }
678
679
680
681
682
683
684 @Override
685 public void setLastLogin(java.util.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 java.util.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 }