diff --git a/.classpath b/.classpath index 1628860..cf152f5 100644 --- a/.classpath +++ b/.classpath @@ -18,18 +18,18 @@ - + + - + - - + diff --git a/.project b/.project index 35f1980..36112bc 100644 --- a/.project +++ b/.project @@ -21,12 +21,12 @@ - org.eclipse.m2e.core.maven2Builder + org.eclipse.wst.validation.validationbuilder - org.eclipse.wst.validation.validationbuilder + org.eclipse.m2e.core.maven2Builder diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 4a3b5d9..69c31cd 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,3 @@ -#Fri Jul 26 17:34:06 CEST 2013 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 diff --git a/.settings/org.eclipse.wst.validation.prefs b/.settings/org.eclipse.wst.validation.prefs new file mode 100644 index 0000000..04cad8c --- /dev/null +++ b/.settings/org.eclipse.wst.validation.prefs @@ -0,0 +1,2 @@ +disabled=06target +eclipse.preferences.version=1 diff --git a/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java b/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java index 13f26c8..a650d60 100644 --- a/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java +++ b/src/main/java/org/gcube/vomanagement/usermanagement/UserManager.java @@ -55,6 +55,24 @@ public interface UserManager { * @throws UserManagementSystemException */ GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset) throws UserManagementSystemException; + /** + * Create the user and let you choose if you want to send him/her a mail notification and force or not the user to change his/her password. + * You can also pass the avatar to set as bytes. + * @param autoScreenName set true if you want liferay to auto generate a screename for this user, false otherwise + * @param username the username of the user you want + * @param email a valid email address + * @param firstName + * @param middleName + * @param lastName + * @param jobTitle + * @param backgroundSummary + * @param male + * @param portraitBytes the bytes of the avatar to use for the user + * @param openId user's openId + * @return an instance of the yet created user + * @throws UserManagementSystemException + */ + GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset, byte[] portraitBytes) throws UserManagementSystemException; /** * * @param username the username of the user you want to get @@ -259,4 +277,13 @@ public interface UserManager { * @param email */ public void deleteUserByEMail(String email) throws UserManagementSystemException, UserManagementPortalException, PortalException, SystemException; + /** + * Retrieve user's avatar as bytes + */ + public byte[] getUserAvatarBytes(String screenName); + + /** + * Retrieve user's openId field + */ + public String getUserOpenId(String screenName); } diff --git a/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java b/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java index cc95ee3..6a313fa 100644 --- a/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java +++ b/src/main/java/org/gcube/vomanagement/usermanagement/impl/LiferayUserManager.java @@ -37,6 +37,7 @@ import com.liferay.portal.security.permission.PermissionChecker; import com.liferay.portal.security.permission.PermissionCheckerFactoryUtil; import com.liferay.portal.security.permission.PermissionThreadLocal; import com.liferay.portal.service.GroupLocalServiceUtil; +import com.liferay.portal.service.ImageLocalServiceUtil; import com.liferay.portal.service.MembershipRequestLocalServiceUtil; import com.liferay.portal.service.RoleLocalServiceUtil; import com.liferay.portal.service.RoleServiceUtil; @@ -94,7 +95,7 @@ public class LiferayUserManager implements UserManager { for (EmailAddress e : u.getEmailAddresses()) { emails.add(new Email(e.getAddress(), e.getType().toString(), e.isPrimary())); } - + return new GCubeUser( u.getUserId(), u.getScreenName(), @@ -177,7 +178,8 @@ public class LiferayUserManager implements UserManager { reminderQuestion, reminderAnswer, false, - false); + false, + null); } /** @@ -186,7 +188,33 @@ public class LiferayUserManager implements UserManager { @Override public GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset) - throws UserManagementSystemException { + throws UserManagementSystemException { + return createUserBody( + autoScreenName, + username, + email, + firstName, + middleName, + lastName, + jobTitle, + backgroundSummary, + location_industry, + male, + reminderQuestion, + reminderAnswer, + sendEmail, + forcePasswordReset, + null); + } + + /** + * {@inheritDoc} + */ + @Override + public GCubeUser createUser(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, + String jobTitle, String location_industry, String backgroundSummary, boolean male, String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset, + byte[] portraitBytes) + throws UserManagementSystemException { return createUserBody( autoScreenName, username, @@ -201,13 +229,14 @@ public class LiferayUserManager implements UserManager { reminderQuestion, reminderAnswer, sendEmail, - forcePasswordReset); + forcePasswordReset, + portraitBytes); } private GCubeUser createUserBody(boolean autoScreenName, String username, String email, String firstName, String middleName, String lastName, String jobTitle, String location_industry, String backgroundSummary, boolean male, - String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset){ + String reminderQuestion, String reminderAnswer, boolean sendEmail, boolean forcePasswordReset, byte[] portraitBytes){ GCubeUser toReturn = null; try { @@ -264,6 +293,23 @@ public class LiferayUserManager implements UserManager { UserLocalServiceUtil.updateReminderQuery(added.getUserId(), reminderQuestion, reminderAnswer); _log.debug("User " + lastName + " has agreed to ToU"); _log.debug("User " + lastName + " updatePasswordReset & updateReminderQuery"); + + // try to change user's avatar + if(portraitBytes != null){ + + try{ + _log.debug("Updating user's avatar"); + UserLocalServiceUtil.updatePortrait(added.getUserId(), portraitBytes); + _log.debug("User's avatar set OK"); + }catch(PortalException e1){ + _log.debug("Unable to set user's avatar", e1); + } + catch(SystemException e1){ + _log.debug("Unable to set user's avatar", e1); + } + + } + return mapLRUser(added); } catch (SystemException e) { e.printStackTrace(); @@ -734,5 +780,29 @@ public class LiferayUserManager implements UserManager { _log.debug("Delete user with email " + email); } } - + @Override + public byte[] getUserAvatarBytes(String screenName) { + try { + User user = UserLocalServiceUtil.getUserByScreenName(ManagementUtils.getCompany().getCompanyId(), screenName); + return ImageLocalServiceUtil.getImage(user.getPortraitId()).getTextObj(); + } catch (PortalException e) { + _log.debug("Unable to retrieve user's avatar", e); + } catch (SystemException e) { + _log.debug("Unable to retrieve user's avatar", e); + } + return null; + } + @Override + public String getUserOpenId(String screenName) { + try { + User user = UserLocalServiceUtil.getUserByScreenName(ManagementUtils.getCompany().getCompanyId(), screenName); + return user.getOpenId(); + } catch (PortalException e) { + _log.debug("Unable to retrieve user's openId", e); + } catch (SystemException e) { + _log.debug("Unable to retrieve user's openId", e); + } + return null; + } + }