]> git.argeo.org Git - lgpl/argeo-commons.git/blob - security/runtime/org.argeo.security.core/src/main/java/org/argeo/security/jcr/OsJcrUserAdminService.java
Change system username from 'system' to 'admin'
[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.UserJcrUtils;
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 Repository repository;
25
26 // private Session adminSession;
27
28 public void init() {
29 // try {
30 // adminSession = repository.login();
31 // } catch (RepositoryException e) {
32 // throw new ArgeoException("Cannot initialize", e);
33 // }
34 }
35
36 public void destroy() {
37 // JcrUtils.logoutQuietly(adminSession);
38 }
39
40 /** <b>Unsupported</b> */
41 public void createUser(UserDetails user) {
42 throw new UnsupportedOperationException();
43 }
44
45 /** Does nothing */
46 public void updateUser(UserDetails user) {
47
48 }
49
50 /** <b>Unsupported</b> */
51 public void deleteUser(String username) {
52 throw new UnsupportedOperationException();
53 }
54
55 /** <b>Unsupported</b> */
56 public void changePassword(String oldPassword, String newPassword) {
57 throw new UnsupportedOperationException();
58 }
59
60 public boolean userExists(String username) {
61 if (getSPropertyUsername().equals(username))
62 return true;
63 else
64 return false;
65 }
66
67 public UserDetails loadUserByUsername(String username)
68 throws UsernameNotFoundException, DataAccessException {
69 if (getSPropertyUsername().equals(username)) {
70 JcrUserDetails userDetails;
71 Session adminSession = null;
72 try {
73 adminSession = repository.login();
74 Node userProfile = UserJcrUtils.getUserProfile(adminSession,
75 username);
76 userDetails = new JcrUserDetails(userProfile, "",
77 OsJcrAuthenticationProvider.getBaseAuthorities());
78 } catch (RepositoryException e) {
79 throw new ArgeoException("Cannot retrieve user profile for "
80 + username, e);
81 } finally {
82 JcrUtils.logoutQuietly(adminSession);
83 }
84 return userDetails;
85 } else {
86 throw new UnsupportedOperationException();
87 }
88 }
89
90 protected final String getSPropertyUsername() {
91 return System.getProperty("user.name");
92 }
93
94 public Set<String> listUsers() {
95 Set<String> set = new HashSet<String>();
96 set.add(getSPropertyUsername());
97 return set;
98 }
99
100 public Set<String> listUsersInRole(String role) {
101 Set<String> set = new HashSet<String>();
102 set.add(getSPropertyUsername());
103 return set;
104 }
105
106 /** Does nothing */
107 public void synchronize() {
108 }
109
110 /** <b>Unsupported</b> */
111 public void newRole(String role) {
112 throw new UnsupportedOperationException();
113 }
114
115 public Set<String> listEditableRoles() {
116 Set<String> set = new HashSet<String>();
117 return set;
118 }
119
120 /** <b>Unsupported</b> */
121 public void deleteRole(String role) {
122 throw new UnsupportedOperationException();
123 }
124
125 public void setRepository(Repository repository) {
126 this.repository = repository;
127 }
128 }