]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/CurrentUserServiceJcr.java
Allows to initialize Jackrabbit container in tests
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / jcr / CurrentUserServiceJcr.java
1 package org.argeo.security.jcr;
2
3 import java.util.Map;
4
5 import javax.jcr.Session;
6
7 import org.argeo.ArgeoException;
8 import org.argeo.security.ArgeoUser;
9 import org.argeo.security.CurrentUserDao;
10 import org.argeo.security.CurrentUserService;
11 import org.argeo.security.UserNature;
12 import org.springframework.security.Authentication;
13 import org.springframework.security.context.SecurityContextHolder;
14
15 public class CurrentUserServiceJcr implements CurrentUserService {
16 private Session session;
17 private CurrentUserDao currentUserDao;
18
19 public ArgeoUser getCurrentUser() {
20 Authentication authentication = SecurityContextHolder.getContext()
21 .getAuthentication();
22
23 Session userSession;
24 if (authentication instanceof JcrAuthenticationToken) {
25 userSession = ((JcrAuthenticationToken) authentication)
26 .getSession();
27 } else {
28 if (session == null)
29 throw new ArgeoException("No user JCR session available");
30 userSession = session;
31 }
32
33 JcrUserDetails jcrUserDetails = (JcrUserDetails) authentication
34 .getDetails();
35 return JcrUserDetails.jcrUserDetailsToArgeoUser(userSession,
36 jcrUserDetails);
37 }
38
39 public void updateCurrentUserPassword(String oldPassword, String newPassword) {
40 currentUserDao.updateCurrentUserPassword(oldPassword, newPassword);
41
42 }
43
44 public void updateCurrentUserNatures(Map<String, UserNature> userNatures) {
45 // TODO Auto-generated method stub
46
47 }
48
49 public void setSession(Session session) {
50 this.session = session;
51 }
52
53 public void setCurrentUserDao(CurrentUserDao currentUserDao) {
54 this.currentUserDao = currentUserDao;
55 }
56
57 }