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