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
.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
;
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 Repository repository
;
26 // private Session adminSession;
30 // adminSession = repository.login();
31 // } catch (RepositoryException e) {
32 // throw new ArgeoException("Cannot initialize", e);
36 public void destroy() {
37 // JcrUtils.logoutQuietly(adminSession);
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 JcrUserDetails userDetails
;
71 Session adminSession
= null;
73 adminSession
= repository
.login();
74 Node userProfile
= UserJcrUtils
.getUserProfile(adminSession
,
76 userDetails
= new JcrUserDetails(userProfile
, "",
77 OsJcrAuthenticationProvider
.getBaseAuthorities());
78 } catch (RepositoryException e
) {
79 throw new ArgeoException("Cannot retrieve user profile for "
82 JcrUtils
.logoutQuietly(adminSession
);
86 throw new UnsupportedOperationException();
90 protected final String
getSPropertyUsername() {
91 return System
.getProperty("user.name");
94 public Set
<String
> listUsers() {
95 Set
<String
> set
= new HashSet
<String
>();
96 set
.add(getSPropertyUsername());
100 public Set
<String
> listUsersInRole(String role
) {
101 Set
<String
> set
= new HashSet
<String
>();
102 set
.add(getSPropertyUsername());
107 public void synchronize() {
110 /** <b>Unsupported</b> */
111 public void newRole(String role
) {
112 throw new UnsupportedOperationException();
115 public Set
<String
> listEditableRoles() {
116 Set
<String
> set
= new HashSet
<String
>();
120 /** <b>Unsupported</b> */
121 public void deleteRole(String role
) {
122 throw new UnsupportedOperationException();
125 public void setRepository(Repository repository
) {
126 this.repository
= repository
;