+/*
+ * Copyright (C) 2007-2012 Mathieu Baudier
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
package org.argeo.security.jcr;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.Node;
+import javax.jcr.Property;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import org.argeo.jcr.ArgeoNames;
+import org.argeo.jcr.JcrUtils;
import org.springframework.security.BadCredentialsException;
import org.springframework.security.DisabledException;
import org.springframework.security.GrantedAuthority;
private final String homePath;
private final String securityWorkspace;
+ /** Human readable user name */
+ private String displayName;
+
protected JcrUserDetails(String securityWorkspace, String homePath,
String username, String password, boolean enabled,
boolean accountNonExpired, boolean credentialsNonExpired,
userProfile.getProperty(ARGEO_CREDENTIALS_NON_EXPIRED)
.getBoolean(), userProfile.getProperty(
ARGEO_ACCOUNT_NON_LOCKED).getBoolean(), authorities);
+ // human readable name
+ if (userProfile.hasProperty(Property.JCR_TITLE)) {
+ displayName = userProfile.getProperty(Property.JCR_TITLE)
+ .getString();
+ if (displayName.trim().equals(""))
+ displayName = null;
+ }
+ if (displayName == null)
+ displayName = userProfile.getProperty(ARGEO_USER_ID).getString();
// home is defined as the parent of the profile
homePath = userProfile.getParent().getPath();
securityWorkspace = userProfile.getSession().getWorkspace().getName();
}
+ /**
+ * Convenience constructor
+ *
+ * @param session
+ * the security session
+ * @param username
+ * the username
+ * @param password
+ * the password, can be null
+ * @param authorities
+ * the granted authorities
+ */
+ public JcrUserDetails(Session session, String username, String password,
+ GrantedAuthority[] authorities) throws RepositoryException {
+ this(JcrUtils.getUserProfile(session, username),
+ password != null ? password : "", authorities);
+ }
+
/**
* Check the account status in JCR, throwing the exceptions expected by
* Spring security if needed.
public String getSecurityWorkspace() {
return securityWorkspace;
}
+
+ /** The human readable name of this user */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ @Override
+ public String toString() {
+ return getDisplayName();
+ }
+
}