<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <title>have a problem with adding new user when authenticate with liferay 4.0</title>
  <link rel="self" href="https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=76806" />
  <subtitle>have a problem with adding new user when authenticate with liferay 4.0</subtitle>
  <id>https://liferay.dev/c/message_boards/find_thread?p_l_id=119785294&amp;threadId=76806</id>
  <updated>2026-05-28T18:31:22Z</updated>
  <dc:date>2026-05-28T18:31:22Z</dc:date>
  <entry>
    <title>have a problem with adding new user when authenticate with liferay 4.0</title>
    <link rel="alternate" href="https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=76805" />
    <author>
      <name>To Nha</name>
    </author>
    <id>https://liferay.dev/c/message_boards/find_message?p_l_id=119785294&amp;messageId=76805</id>
    <updated>2006-06-09T09:55:14Z</updated>
    <published>2006-06-09T09:55:14Z</published>
    <summary type="html">Im using liferay 4.0. I made a class to control authenticate by UserId is MyLogin.class. &amp;lt;br /&amp;gt;The purpose of this class is authenticate the userid. If this userId existed in the portal, the authentication will return success. If this userId is new, i use the funtion UserLocalServiceUtil.addUser(paramater1,paramater1,...paramatern) to add new user to liferay portal and then the liferay system will auto redirect to a page with portal&amp;amp;#39;s rules an request user accept to become o new user of the system. But this funtion throws an exceptions. I performed the authenticate throungt this way with liferay 3.6.1 and it was success. &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;The content of MyLogin.java as followinig (This class is modifed from LDAPAuth.java, only modify the function authenticateByUserId()):&amp;lt;br /&amp;gt;import com.liferay.counter.service.spring.CounterServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.mail.service.spring.MailServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.NoSuchGroupException;&amp;lt;br /&amp;gt;import com.liferay.portal.NoSuchRoleException;&amp;lt;br /&amp;gt;import com.liferay.portal.NoSuchUserException;&amp;lt;br /&amp;gt;import com.liferay.portal.PortalException;&amp;lt;br /&amp;gt;import com.liferay.portal.SystemException;&amp;lt;br /&amp;gt;import com.liferay.portal.language.LanguageException;&amp;lt;br /&amp;gt;import com.liferay.portal.language.LanguageUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.model.Contact;&amp;lt;br /&amp;gt;import com.liferay.portal.model.Group;&amp;lt;br /&amp;gt;import com.liferay.portal.model.Role;&amp;lt;br /&amp;gt;import com.liferay.portal.model.User;&amp;lt;br /&amp;gt;import com.liferay.portal.pwd.PwdToolkitUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.security.auth.AuthException;&amp;lt;br /&amp;gt;import com.liferay.portal.security.auth.Authenticator;&amp;lt;br /&amp;gt;import com.liferay.portal.service.persistence.ContactUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.service.persistence.GroupFinder;&amp;lt;br /&amp;gt;import com.liferay.portal.service.persistence.RoleFinder;&amp;lt;br /&amp;gt;import com.liferay.portal.service.persistence.UserUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.service.spring.GroupLocalServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.service.spring.ResourceLocalServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.service.spring.UserLocalServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.service.spring.UserServiceUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.util.PortalUtil;&amp;lt;br /&amp;gt;import com.liferay.portal.util.PropsUtil;&amp;lt;br /&amp;gt;import com.liferay.portlet.admin.util.AdminUtil;&amp;lt;br /&amp;gt;import com.liferay.util.GetterUtil;&amp;lt;br /&amp;gt;import com.liferay.util.StringPool;&amp;lt;br /&amp;gt;import com.liferay.util.Time;&amp;lt;br /&amp;gt;import com.liferay.util.Validator;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;import java.io.FileOutputStream;&amp;lt;br /&amp;gt;import java.io.IOException;&amp;lt;br /&amp;gt;import java.io.PrintStream;&amp;lt;br /&amp;gt;import java.util.ArrayList;&amp;lt;br /&amp;gt;import java.util.Date;&amp;lt;br /&amp;gt;import java.util.List;&amp;lt;br /&amp;gt;import java.util.Locale;&amp;lt;br /&amp;gt;public class MyLogin implements Authenticator {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;	public int authenticateByEmailAddress(&amp;lt;br /&amp;gt;			String companyId, String emailAddress, String password)&amp;lt;br /&amp;gt;		throws AuthException {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;		try {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			// Check the LDAP server to ensure the company id, email address,&amp;lt;br /&amp;gt;			// and password is valid&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			boolean success = true;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			if (success) {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				// Make sure the user has a portal account&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				User user = null;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				try {&amp;lt;br /&amp;gt;					user = UserLocalServiceUtil.getUserByEmailAddress(&amp;lt;br /&amp;gt;						companyId, emailAddress);&amp;lt;br /&amp;gt;				}&amp;lt;br /&amp;gt;				catch (NoSuchUserException nsue) {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;					// Grab attributes from LDAP&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;					boolean autoUserId = true;&amp;lt;br /&amp;gt;					String userId = &amp;amp;quot;&amp;amp;quot;;&amp;lt;br /&amp;gt;					boolean autoPassword = false;&amp;lt;br /&amp;gt;					String password1 = password;&amp;lt;br /&amp;gt;					String password2 = password;&amp;lt;br /&amp;gt;					boolean passwordReset = false;&amp;lt;br /&amp;gt;					String firstName = &amp;amp;quot;&amp;amp;quot;;&amp;lt;br /&amp;gt;					String middleName = &amp;amp;quot;&amp;amp;quot;;&amp;lt;br /&amp;gt;					String lastName = &amp;amp;quot;&amp;amp;quot;;&amp;lt;br /&amp;gt;					String nickName = &amp;amp;quot;&amp;amp;quot;;&amp;lt;br /&amp;gt;					boolean male = true;&amp;lt;br /&amp;gt;					Date birthday = new Date();&amp;lt;br /&amp;gt;					Locale locale = Locale.US;					&amp;lt;br /&amp;gt;					/*&amp;lt;br /&amp;gt;					user = UserLocalServiceUtil.addUser(&amp;lt;br /&amp;gt;						companyId, autoUserId, userId, autoPassword, password1,&amp;lt;br /&amp;gt;						password2, passwordReset, firstName, middleName,&amp;lt;br /&amp;gt;						lastName, nickName, male, birthday, emailAddress,&amp;lt;br /&amp;gt;						locale);&amp;lt;br /&amp;gt;					*/&amp;lt;br /&amp;gt;				}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				return SUCCESS;&amp;lt;br /&amp;gt;			}&amp;lt;br /&amp;gt;			else {&amp;lt;br /&amp;gt;				return FAILURE;&amp;lt;br /&amp;gt;			}&amp;lt;br /&amp;gt;		}&amp;lt;br /&amp;gt;		catch (Exception e) {&amp;lt;br /&amp;gt;			throw new AuthException(e);&amp;lt;br /&amp;gt;		}&amp;lt;br /&amp;gt;	}&amp;lt;br /&amp;gt;	&amp;lt;br /&amp;gt;	public int authenticateByUserId(&amp;lt;br /&amp;gt;			String companyId, String userId, String password)&amp;lt;br /&amp;gt;		throws AuthException {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;		try {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			// Check the LDAP server to ensure the company id, user id, and&amp;lt;br /&amp;gt;			// password is valid&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			boolean success = true;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;			if (success) {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				// Make sure the user has a portal account&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;				User user = null;&amp;lt;br /&amp;gt;				try {					&amp;lt;br /&amp;gt;					user = UserLocalServiceUtil.getUserById(companyId, userId);&amp;lt;br /&amp;gt;				}&amp;lt;br /&amp;gt;				catch (NoSuchUserException nsue) {&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;					// Grab attributes from LDAP&amp;lt;br /&amp;gt;					boolean autoUserId = false;&amp;lt;br /&amp;gt;					boolean autoPassword = false;&amp;lt;br /&amp;gt;					String password1 = password;&amp;lt;br /&amp;gt;					String password2 = password;&amp;lt;br /&amp;gt;					boolean passwordReset = false;&amp;lt;br /&amp;gt;					Locale locale = Locale.US;					&amp;lt;br /&amp;gt;					String nickName = &amp;amp;quot;tonha&amp;amp;quot;;//StringPool.BLANK;&amp;lt;br /&amp;gt;					String prefixId = &amp;amp;quot;Mr.&amp;amp;quot;;&amp;lt;br /&amp;gt;					String suffixId = &amp;amp;quot;II&amp;amp;quot;;//StringPool.BLANK;					&amp;lt;br /&amp;gt;					String firstName = &amp;amp;quot;nha&amp;amp;quot;;&amp;lt;br /&amp;gt;					String middleName = &amp;amp;quot;van&amp;amp;quot;;&amp;lt;br /&amp;gt;					String lastName = &amp;amp;quot;to&amp;amp;quot;;&amp;lt;br /&amp;gt;					String emailAddress = &amp;amp;quot;tnha@lacviet.com.vn&amp;amp;quot;;&amp;lt;br /&amp;gt;					boolean male = true;					&amp;lt;br /&amp;gt;					Date birthday = null;&amp;lt;br /&amp;gt;					int birthdayMonth=7;&amp;lt;br /&amp;gt;					int birthdayDay=10;&amp;lt;br /&amp;gt;					int birthdayYear=1981;				&amp;lt;br /&amp;gt;					&amp;lt;br /&amp;gt;					String jobTitle = StringPool.BLANK;&amp;lt;br /&amp;gt;					String organizationId = &amp;amp;quot;Liferay Asia&amp;amp;quot;;//null;&amp;lt;br /&amp;gt;					String locationId = &amp;amp;quot;Liferay Shanghai&amp;amp;quot;;//null;&amp;lt;br /&amp;gt;					&amp;lt;br /&amp;gt;										try {&amp;lt;br /&amp;gt;						&amp;lt;br /&amp;gt;										/*&amp;lt;br /&amp;gt;						user = UserServiceUtil.addUser(&amp;lt;br /&amp;gt;								companyId, autoUserId, userId, autoPassword,&amp;lt;br /&amp;gt;								password1, password2, passwordReset, emailAddress,&amp;lt;br /&amp;gt;								locale, firstName, middleName, lastName,&amp;lt;br /&amp;gt;								nickName, prefixId, suffixId, male, birthdayMonth, birthdayDay,&amp;lt;br /&amp;gt;								birthdayYear, jobTitle, organizationId, locationId);&amp;lt;br /&amp;gt;						&amp;lt;br /&amp;gt;						&amp;lt;br /&amp;gt;						user = UserServiceUtil.addUser(&amp;lt;br /&amp;gt;								companyId, autoUserId, userId, autoPassword,&amp;lt;br /&amp;gt;								password1, password2, passwordReset, emailAddress,&amp;lt;br /&amp;gt;								locale, firstName, middleName, lastName,&amp;lt;br /&amp;gt;								nickName, prefixId, suffixId, male, birthdayMonth, birthdayDay,&amp;lt;br /&amp;gt;								birthdayYear, jobTitle, organizationId, locationId);&amp;lt;br /&amp;gt;						*/&amp;lt;br /&amp;gt;						/*&amp;lt;br /&amp;gt;				        user = UserLocalServiceUtil.addUser(&amp;lt;br /&amp;gt;				    			userId, companyId, autoUserId, userId, autoPassword,&amp;lt;br /&amp;gt;								password1, password2, passwordReset, emailAddress, locale,&amp;lt;br /&amp;gt;								firstName, middleName, lastName, nickName, prefixId, suffixId, male,&amp;lt;br /&amp;gt;								birthdayMonth, birthdayDay, birthdayYear, jobTitle, organizationId,&amp;lt;br /&amp;gt;								locationId);&amp;lt;br /&amp;gt;				        */				        				    } catch (PortalException e1) {&amp;lt;br /&amp;gt;				    					        e1.printStackTrace();&amp;lt;br /&amp;gt;				    } catch (SystemException e1) {&amp;lt;br /&amp;gt;				    					        e1.printStackTrace();&amp;lt;br /&amp;gt;				    }								&amp;lt;br /&amp;gt;				}&amp;lt;br /&amp;gt;					&amp;lt;br /&amp;gt;			return SUCCESS;&amp;lt;br /&amp;gt;			}&amp;lt;br /&amp;gt;			else {&amp;lt;br /&amp;gt;				return FAILURE;&amp;lt;br /&amp;gt;			}&amp;lt;br /&amp;gt;		}&amp;lt;br /&amp;gt;		catch (Exception e) {&amp;lt;br /&amp;gt;			throw new AuthException(e);&amp;lt;br /&amp;gt;		}&amp;lt;br /&amp;gt;	}&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Please tell me another way to deal with the problem above. Thanks alot.</summary>
    <dc:creator>To Nha</dc:creator>
    <dc:date>2006-06-09T09:55:14Z</dc:date>
  </entry>
</feed>
