String userName = userDetails.getUsername();
String password = userDetails.getPassword();
boolean enabled = userDetails.isEnabled();
User ud = new User();
ud.setId(null);
ud.setUserName(userName);
boolean storePassword = WebloggerConfig.getBooleanProperty("users.sso.passwords.save");
if(!storePassword) {
password = WebloggerConfig.getProperty("users.sso.passwords.defaultValue","<unknown>");
}
ud.setPassword(password);
ud.setEnabled(enabled ? Boolean.TRUE : Boolean.FALSE);
ud.setLocale(Locale.getDefault().toString());
ud.setTimeZone(TimeZone.getDefault().getID());
ud.setDateCreated(new java.util.Date());
if(userDetails instanceof RollerUserDetails) {
RollerUserDetails rollerDetails = (RollerUserDetails) userDetails;
ud.setScreenName(rollerDetails.getScreenName());
ud.setFullName(rollerDetails.getFullName());
//TODO: Bug here as setting email addy to a full name value?
ud.setEmailAddress(rollerDetails.getFullName());
if(rollerDetails.getTimeZone() != null) {
ud.setTimeZone(rollerDetails.getTimeZone());
}
if(rollerDetails.getLocale() != null) {
ud.setLocale(rollerDetails.getLocale());
}
} else if(userDetails instanceof LdapUserDetails) {
LdapUserDetails ldapDetails = (LdapUserDetails) userDetails;
Attributes attributes = ldapDetails.getAttributes();
String sname = getLdapAttribute(attributes, WebloggerConfig.getProperty(SNAME_LDAP_PROPERTY, DEFAULT_SNAME_LDAP_ATTRIBUTE));
String name = getLdapAttribute(attributes, WebloggerConfig.getProperty(NAME_LDAP_PROPERTY, DEFAULT_NAME_LDAP_ATTRIBUTE));
String email = getLdapAttribute(attributes, WebloggerConfig.getProperty(EMAIL_LDAP_PROPERTY, DEFAULT_EMAIL_LDAP_ATTRIBUTE));
ud.setScreenName(sname);
ud.setFullName(name);
ud.setEmailAddress(email);
String locale = getLdapAttribute(attributes, WebloggerConfig.getProperty(LOCALE_LDAP_PROPERTY, DEFAULT_LOCALE_LDAP_ATTRIBUTE));
String timezone = getLdapAttribute(attributes, WebloggerConfig.getProperty(TIMEZONE_LDAP_PROPERTY, DEFAULT_TIMEZONE_LDAP_ATTRIBUTE));
if(locale != null) {
ud.setLocale(locale);
}
if(timezone != null) {
ud.setTimeZone(timezone);
}
}
return ud;
}