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
.security
.UserAdminService
;
14 import org
.springframework
.dao
.DataAccessException
;
15 import org
.springframework
.security
.userdetails
.UserDetails
;
16 import org
.springframework
.security
.userdetails
.UsernameNotFoundException
;
19 * Dummy user service to be used when running as a single OS user (typically
20 * desktop). TODO integrate with JCR user / groups
22 public class OsJcrUserAdminService
implements UserAdminService
{
23 private String securityWorkspace
= "security";
24 private Repository repository
;
26 private Session securitySession
;
30 securitySession
= repository
.login(securityWorkspace
);
31 } catch (RepositoryException e
) {
32 throw new ArgeoException("Cannot initialize", e
);
36 public void destroy() {
37 JcrUtils
.logoutQuietly(securitySession
);
40 /** <b>Unsupported</b> */
41 public void createUser(UserDetails user
) {
42 throw new UnsupportedOperationException();
46 public void updateUser(UserDetails user
) {
50 /** <b>Unsupported</b> */
51 public void deleteUser(String username
) {
52 throw new UnsupportedOperationException();
55 /** <b>Unsupported</b> */
56 public void changePassword(String oldPassword
, String newPassword
) {
57 throw new UnsupportedOperationException();
60 public boolean userExists(String username
) {
61 if (getSPropertyUsername().equals(username
))
67 public UserDetails
loadUserByUsername(String username
)
68 throws UsernameNotFoundException
, DataAccessException
{
69 if (getSPropertyUsername().equals(username
)) {
70 Node userProfile
= JcrUtils
.getUserProfile(securitySession
,
72 JcrUserDetails userDetails
;
74 userDetails
= new JcrUserDetails(userProfile
, "",
75 OsJcrAuthenticationProvider
.getBaseAuthorities());
76 } catch (RepositoryException e
) {
77 throw new ArgeoException("Cannot retrieve user profile for "
82 throw new UnsupportedOperationException();
86 protected final String
getSPropertyUsername() {
87 return System
.getProperty("user.name");
90 public Set
<String
> listUsers() {
91 Set
<String
> set
= new HashSet
<String
>();
92 set
.add(getSPropertyUsername());
96 public Set
<String
> listUsersInRole(String role
) {
97 Set
<String
> set
= new HashSet
<String
>();
98 set
.add(getSPropertyUsername());
103 public void synchronize() {
106 /** <b>Unsupported</b> */
107 public void newRole(String role
) {
108 throw new UnsupportedOperationException();
111 public Set
<String
> listEditableRoles() {
112 Set
<String
> set
= new HashSet
<String
>();
116 /** <b>Unsupported</b> */
117 public void deleteRole(String role
) {
118 throw new UnsupportedOperationException();
121 public void setRepository(Repository repository
) {
122 this.repository
= repository
;
125 public void setSecurityWorkspace(String securityWorkspace
) {
126 this.securityWorkspace
= securityWorkspace
;