]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/OsJcrUserAdminService.java
80ef1e55963d99544c3194896d9584f2419fb39c
[lgpl/argeo-commons.git] / security / runtime / org.argeo.security.core / src / main / java / org / argeo / security / jcr / OsJcrUserAdminService.java
1 package org.argeo.security.jcr;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import javax.jcr.Node;
7 import javax.jcr.Repository;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10
11 import org.argeo.ArgeoException;
12 import org.argeo.jcr.JcrUtils;
13 import org.argeo.jcr.security.SecurityJcrUtils;
14 import org.argeo.security.UserAdminService;
15 import org.springframework.dao.DataAccessException;
16 import org.springframework.security.userdetails.UserDetails;
17 import org.springframework.security.userdetails.UsernameNotFoundException;
18
19 /**
20 * Dummy user service to be used when running as a single OS user (typically
21 * desktop). TODO integrate with JCR user / groups
22 */
23 public class OsJcrUserAdminService implements UserAdminService {
24 private String securityWorkspace = "security";
25 private Repository repository;
26
27 private Session securitySession;
28
29 public void init() {
30 try {
31 securitySession = repository.login(securityWorkspace);
32 } catch (RepositoryException e) {
33 throw new ArgeoException("Cannot initialize", e);
34 }
35 }
36
37 public void destroy() {
38 JcrUtils.logoutQuietly(securitySession);
39 }
40
41 /** <b>Unsupported</b> */
42 public void createUser(UserDetails user) {
43 throw new UnsupportedOperationException();
44 }
45
46 /** Does nothing */
47 public void updateUser(UserDetails user) {
48
49 }
50
51 /** <b>Unsupported</b> */
52 public void deleteUser(String username) {
53 throw new UnsupportedOperationException();
54 }
55
56 /** <b>Unsupported</b> */
57 public void changePassword(String oldPassword, String newPassword) {
58 throw new UnsupportedOperationException();
59 }
60
61 public boolean userExists(String username) {
62 if (getSPropertyUsername().equals(username))
63 return true;
64 else
65 return false;
66 }
67
68 public UserDetails loadUserByUsername(String username)
69 throws UsernameNotFoundException, DataAccessException {
70 if (getSPropertyUsername().equals(username)) {
71 Node userProfile = SecurityJcrUtils.getUserProfile(securitySession,
72 username);
73 JcrUserDetails userDetails;
74 try {
75 userDetails = new JcrUserDetails(userProfile, "",
76 OsJcrAuthenticationProvider.getBaseAuthorities());
77 } catch (RepositoryException e) {
78 throw new ArgeoException("Cannot retrieve user profile for "
79 + username, e);
80 }
81 return userDetails;
82 } else {
83 throw new UnsupportedOperationException();
84 }
85 }
86
87 protected final String getSPropertyUsername() {
88 return System.getProperty("user.name");
89 }
90
91 public Set<String> listUsers() {
92 Set<String> set = new HashSet<String>();
93 set.add(getSPropertyUsername());
94 return set;
95 }
96
97 public Set<String> listUsersInRole(String role) {
98 Set<String> set = new HashSet<String>();
99 set.add(getSPropertyUsername());
100 return set;
101 }
102
103 /** Does nothing */
104 public void synchronize() {
105 }
106
107 /** <b>Unsupported</b> */
108 public void newRole(String role) {
109 throw new UnsupportedOperationException();
110 }
111
112 public Set<String> listEditableRoles() {
113 Set<String> set = new HashSet<String>();
114 return set;
115 }
116
117 /** <b>Unsupported</b> */
118 public void deleteRole(String role) {
119 throw new UnsupportedOperationException();
120 }
121
122 public void setRepository(Repository repository) {
123 this.repository = repository;
124 }
125
126 public void setSecurityWorkspace(String securityWorkspace) {
127 this.securityWorkspace = securityWorkspace;
128 }
129
130 }