1 package org
.argeo
.security
.jcr
;
3 import java
.util
.HashSet
;
7 import javax
.jcr
.Repository
;
8 import javax
.jcr
.RepositoryException
;
9 import javax
.jcr
.Session
;
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
;
20 * Dummy user service to be used when running as a single OS user (typically
21 * desktop). TODO integrate with JCR user / groups
23 public class OsJcrUserAdminService
implements UserAdminService
{
24 private String securityWorkspace
= "security";
25 private Repository repository
;
27 private Session securitySession
;
31 securitySession
= repository
.login(securityWorkspace
);
32 } catch (RepositoryException e
) {
33 throw new ArgeoException("Cannot initialize", e
);
37 public void destroy() {
38 JcrUtils
.logoutQuietly(securitySession
);
41 /** <b>Unsupported</b> */
42 public void createUser(UserDetails user
) {
43 throw new UnsupportedOperationException();
47 public void updateUser(UserDetails user
) {
51 /** <b>Unsupported</b> */
52 public void deleteUser(String username
) {
53 throw new UnsupportedOperationException();
56 /** <b>Unsupported</b> */
57 public void changePassword(String oldPassword
, String newPassword
) {
58 throw new UnsupportedOperationException();
61 public boolean userExists(String username
) {
62 if (getSPropertyUsername().equals(username
))
68 public UserDetails
loadUserByUsername(String username
)
69 throws UsernameNotFoundException
, DataAccessException
{
70 if (getSPropertyUsername().equals(username
)) {
71 Node userProfile
= SecurityJcrUtils
.getUserProfile(securitySession
,
73 JcrUserDetails userDetails
;
75 userDetails
= new JcrUserDetails(userProfile
, "",
76 OsJcrAuthenticationProvider
.getBaseAuthorities());
77 } catch (RepositoryException e
) {
78 throw new ArgeoException("Cannot retrieve user profile for "
83 throw new UnsupportedOperationException();
87 protected final String
getSPropertyUsername() {
88 return System
.getProperty("user.name");
91 public Set
<String
> listUsers() {
92 Set
<String
> set
= new HashSet
<String
>();
93 set
.add(getSPropertyUsername());
97 public Set
<String
> listUsersInRole(String role
) {
98 Set
<String
> set
= new HashSet
<String
>();
99 set
.add(getSPropertyUsername());
104 public void synchronize() {
107 /** <b>Unsupported</b> */
108 public void newRole(String role
) {
109 throw new UnsupportedOperationException();
112 public Set
<String
> listEditableRoles() {
113 Set
<String
> set
= new HashSet
<String
>();
117 /** <b>Unsupported</b> */
118 public void deleteRole(String role
) {
119 throw new UnsupportedOperationException();
122 public void setRepository(Repository repository
) {
123 this.repository
= repository
;
126 public void setSecurityWorkspace(String securityWorkspace
) {
127 this.securityWorkspace
= securityWorkspace
;