Fóruns

Início » Liferay Portal » English » 3. Development

Visualização combinada Visão plana Exibição em árvore
Tópicos [ Anterior | Próximo ]
Darren Smith
How to Programmatically Add Liferay Users in Java
11 de Agosto de 2011 06:13
Resposta

Darren Smith

Ranking: New Member

Mensagens: 14

Data de entrada: 16 de Julho de 2011

Mensagens recentes

Hi all,

does anyone have any sample Java code (or links to) to programmatically add users to Liferay 6? Does anyone know what database table users are saved to? I can't seem to find this information, APIs etc on the Liferay docs.

Thanks
Darren
David H Nebinger
RE: How to Programmatically Add Liferay Users in Java
11 de Agosto de 2011 07:40
Resposta

David H Nebinger

Ranking: Liferay Legend

Mensagens: 7512

Data de entrada: 1 de Setembro de 2006

Mensagens recentes

User creation results in multiple tables getting updated, the first of which is the User_ table, but there are many others. I would not attempt manual user creation by updating the tables directly.

Your best bet is probably to look at the various import process code (i.e. the LDAP user import, etc.). This path will probably identify any services or methods that you would want to leverage when creating users programmatically.
Pranay R Patadiya
RE: How to Programmatically Add Liferay Users in Java
11 de Agosto de 2011 12:07
Resposta

Pranay R Patadiya

Ranking: Regular Member

Mensagens: 181

Data de entrada: 22 de Fevereiro de 2010

Mensagens recentes

Hi,

You should check portal source code for better reference.
You should check addUser method of UserLocalServiceImpl class of portal source code.

And about database entry, when you add user at that time not a single DB table being updated.
There are many tables are affected. The above mentioned class will let you know more about that.

Let me know if you have any query.

Thanks,
Pranay
Sagar A Vyas
RE: How to Programmatically Add Liferay Users in Java
11 de Agosto de 2011 12:28
Resposta

Sagar A Vyas

Ranking: Liferay Master

Mensagens: 655

Data de entrada: 17 de Abril de 2009

Mensagens recentes

Hi,

Agree with Pranay,

Main table is user_ but though there are lot more.

Better to manage user operation from UserLocalServiceUtil instead of do it from DB.

you can user addUser() method ,you have to provide lots of argument for execute this method.

Thanks,
Sagar Vyas
Darren Smith
RE: How to Programmatically Add Liferay Users in Java
16 de Agosto de 2011 01:29
Resposta

Darren Smith

Ranking: New Member

Mensagens: 14

Data de entrada: 16 de Julho de 2011

Mensagens recentes

Thanks for your help guys, I can add users now emoticon.

Darren
Arvind Mishra
RE: How to Programmatically Add Liferay Users in Java
16 de Agosto de 2011 06:19
Resposta

Arvind Mishra

Ranking: Regular Member

Mensagens: 224

Data de entrada: 13 de Fevereiro de 2008

Mensagens recentes

If you want to add users pro grammatically using web service. You can look in to following post.

http://bit.ly/rq3WBx
RathnaDevi Chellaiah
RE: How to Programmatically Add Liferay Users in Java
29 de Março de 2012 05:27
Resposta

RathnaDevi Chellaiah

Ranking: Junior Member

Mensagens: 29

Data de entrada: 26 de Março de 2012

Mensagens recentes

hi,
can u send the project which is runnable? i am facing issue with user creation
Rob Hall
RE: How to Programmatically Add Liferay Users in Java
23 de Maio de 2012 08:48
Resposta

Rob Hall

Ranking: Junior Member

Mensagens: 47

Data de entrada: 30 de Novembro de 2011

Mensagens recentes

I've figured out the programmatic user creation, what I'm struggling with is how to programatically log them into Liferay after adding them. I have a application-specific user registration portlet, the new user fills out some information, which I then use to create the Liferay user, populate the tables, etc. What I want to do next is automatically log them into Liferay and redirect to a landing page, without them having to enter their userid and password.
Milen Dyankov
RE: How to Programmatically Add Liferay Users in Java
10 de Junho de 2012 12:08
Resposta

Milen Dyankov

Ranking: Regular Member

Mensagens: 173

Data de entrada: 23 de Setembro de 2009

Mensagens recentes

Rob Hall:
What I want to do next is automatically log them into Liferay

To do this you need to create custom auto login hook.
Examine the source code of the existing hooks to see how it is done.
Dhandapani S
RE: How to Programmatically Add Liferay Users in Java
10 de Junho de 2012 06:44
Resposta

Dhandapani S

Ranking: Regular Member

Mensagens: 156

Data de entrada: 24 de Março de 2009

Mensagens recentes

RathnaDevi Chellaiah:
hi,
can u send the project which is runnable? i am facing issue with user creation



Hi Rathnadevi,

You can add Liferay Users in Java using UserLocalServiceUtil class... For that u need to copy portal-impl.jar in your portlet lib folder and build path.

Regards
Dhandapani S

Milen Dyankov
RE: How to Programmatically Add Liferay Users in Java
10 de Junho de 2012 12:01
Resposta

Milen Dyankov

Ranking: Regular Member

Mensagens: 173

Data de entrada: 23 de Setembro de 2009

Mensagens recentes

Dhandapani S:
For that u need to copy portal-impl.jar in your portlet lib folder

That is a very bad advice!!! I would like to quote
Ray Augé:
NEVER put portal-impl into anywhere other than where it came from

Read this thread for details!
Rajesh Chaurasia
RE: How to Programmatically Add Liferay Users in Java
10 de Junho de 2012 22:32
Resposta

Rajesh Chaurasia

Ranking: Junior Member

Mensagens: 92

Data de entrada: 18 de Agosto de 2011

Mensagens recentes

In liferay , around some designated entities model listeners are attached which means that if you create and persist an instance of entity ,simultaneous inserts are made for model listeners.For eg if you create an organization in liferay , you need to insert entries for Asset entry,group,layout set , layout and resource permission taking care of ids .

Similar is the case with User creation.In liferay u can create user frorm UI but this does not stop u from creating users programmatically.

private User insertOrgAdmin(ActionRequest actionRequest,Organization organization,ServiceContext serviceContext,long gpIdForUser) throws PortalException, SystemException {
ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
long companyId = themeDisplay.getCompanyId();
long groupId= gpIdForUser;
String password1= "orgadmin";//organization.getName().toLowerCase();
String domainName = null;
long facebookId=0;
String openId=null;
//String firstName=organization.getName();
String lastName=organization.getName();
int prefixId=123;
int suffixId=234;
String jobTitle="Organization Administrator";
domainName = organization.getName();
domainName= domainName.trim();
if(domainName.contains(" ")) {
domainName = domainName.replaceAll("\\s+", "-");
}
//String emailAddress="administrator@"+domainName+".com";
String emailAddress="administrator@panchayatportal.gov.in";
Role role = RoleLocalServiceUtil.getRole(companyId, "Organization Administrator");
User user = null;
if(role!= null){
long idContact = CounterLocalServiceUtil.increment(Contact.class.getName());
//String greeting="Welcome "+role.getName();
String greeting="Welcome Admin";
long id = CounterLocalServiceUtil.increment(User.class.getName());
user = UserLocalServiceUtil.createUser(id);
user.setCompanyId(companyId);
user.setPassword(password1);
//String screenName=organization.getName().toLowerCase()+id;
String screenName="admin"+id;
user.setScreenName(screenName);
user.setEmailAddress(emailAddress);
user.setFacebookId(facebookId);
user.setOpenId(openId);
user.setGreeting(greeting);
//user.setFirstName(firstName);
user.setFirstName("Site Admin");
//user.setLastName(lastName);
user.setJobTitle(jobTitle);
user.setCreateDate(new Date ());
user.setContactId(idContact);
user.setPasswordReset(true);
user.setPasswordEncrypted(false);
user.setPasswordModifiedDate(new Date());
user.setCreateDate(new Date());
user.setModifiedDate(new Date());
user.setLanguageId(themeDisplay.getLanguageId());
user.setTimeZoneId(themeDisplay.getTimeZone().getDisplayName());
UserLocalServiceUtil.addUser(user);

//Associate a role with user
long userid[] = {user.getUserId()};

//UserLocalServiceUtil.addRoleUsers(role.getRoleId(), userid);
Role rolePu = RoleLocalServiceUtil.getRole(companyId, "Power User");
//UserLocalServiceUtil.addRoleUsers(rolePu.getRoleId(), userid);
long roleids[]={role.getRoleId(),rolePu.getRoleId()};
UserGroupRoleLocalServiceUtil.addUserGroupRoles(user.getUserId(), groupId, roleids);

ClassName clsNameUser = ClassNameLocalServiceUtil.getClassName("com.liferay.portal.model.User");
long classNameId=clsNameUser.getClassNameId();

//Insert Group for a user
long gpId = CounterLocalServiceUtil.increment(Group.class.getName());
Group userGrp = GroupLocalServiceUtil.createGroup(gpId);
userGrp.setClassNameId(classNameId);
userGrp.setClassPK(userid[0]);
userGrp.setCompanyId(companyId);
userGrp.setName("group"+String.valueOf(userid[0]));
userGrp.setFriendlyURL("/group"+gpId);
userGrp.setCreatorUserId(PortalUtil.getUserId(actionRequest));
userGrp.setActive(true);
GroupLocalServiceUtil.addGroup(userGrp);

//Insert Contact for a user
//long idContact = CounterLocalServiceUtil.increment(Contact.class.getName());
Contact contact = ContactLocalServiceUtil.createContact(idContact);
contact.setCompanyId(companyId);
contact.setCreateDate(new Date());
contact.setUserName(screenName);
contact.setUserId(user.getUserId());
contact.setModifiedDate(new Date());
contact.setFirstName("contact-"+contact.getContactId());
contact.setLastName("contact-"+contact.getContactId());
contact.setMiddleName("contact-"+contact.getContactId());
contact.setPrefixId(prefixId);
contact.setSuffixId(suffixId);
contact.setJobTitle(jobTitle+contact.getContactId());
contact.setBirthday(new Date());
ContactLocalServiceUtil.addContact(contact);

//Create AssetEntry
long assetEntryId = CounterLocalServiceUtil.increment(AssetEntry.class.getName());
AssetEntry ae = AssetEntryLocalServiceUtil.createAssetEntry(assetEntryId);
ae.setCompanyId(companyId);
ae.setClassPK(user.getUserId());
ae.setGroupId(userGrp.getGroupId());
ae.setClassNameId(classNameId);
AssetEntryLocalServiceUtil.addAssetEntry(ae);

//Insert ResourcePermission for a User
long resPermId = CounterLocalServiceUtil.increment(ResourcePermission.class.getName());
ResourcePermission rpEntry = ResourcePermissionLocalServiceUtil.createResourcePermission(resPermId);
rpEntry.setCompanyId(organization.getCompanyId());
rpEntry.setName("com.liferay.portal.model.User");
rpEntry.setRoleId(role.getRoleId());
rpEntry.setScope(4);
rpEntry.setActionIds(31);
// rpEntry.setPrimaryKey(userid[0]);
ResourcePermissionLocalServiceUtil.addResourcePermission(rpEntry);

//Insert Layoutset for public and private
long layoutSetIdPub = CounterLocalServiceUtil.increment(LayoutSet.class.getName());
LayoutSet layoutSetPub=LayoutSetLocalServiceUtil.createLayoutSet(layoutSetIdPub);
layoutSetPub.setCompanyId(companyId);
layoutSetPub.setPrivateLayout(false);
layoutSetPub.setGroupId(userGrp.getGroupId());
layoutSetPub.setThemeId("classic");
try{
LayoutSetLocalServiceUtil.addLayoutSet(layoutSetPub);
}catch(SystemException se){

}

long layoutSetIdPriv= CounterLocalServiceUtil.increment(LayoutSet.class.getName());
LayoutSet layoutSetPriv=LayoutSetLocalServiceUtil.createLayoutSet(layoutSetIdPriv);
layoutSetPriv.setCompanyId(companyId);
layoutSetPriv.setPrivateLayout(true);
layoutSetPriv.setThemeId("classic");
layoutSetPriv.setGroupId(userGrp.getGroupId());
try{
LayoutSetLocalServiceUtil.addLayoutSet(layoutSetPriv);
}catch(SystemException se){
}
}else{
return null;
}


return user;

}
Orin Fink
RE: How to Programmatically Add Liferay Users in Java
11 de Novembro de 2013 20:36
Resposta

Orin Fink

Ranking: Junior Member

Mensagens: 42

Data de entrada: 24 de Março de 2010

Mensagens recentes

Rajesh. I can't believe that nobody has said "Thank you" for that awesome post. I'm so grateful that you have shared all the work it took to build that snippet. Thanks.
Kevin Emamirad
RE: How to Programmatically Add Liferay Users in Java
22 de Janeiro de 2014 12:33
Resposta

Kevin Emamirad

Ranking: New Member

Mensagens: 10

Data de entrada: 4 de Setembro de 2013

Mensagens recentes

Thanks Rajesh Chaurasia! Your code snippet saved me a good amount of time ;)
driss driss
RE: How to Programmatically Add Liferay Users in Java
6 de Maio de 2014 02:42
Resposta

driss driss

Ranking: New Member

Mensagens: 3

Data de entrada: 18 de Março de 2014

Mensagens recentes

hi
i m new in liferay comuniy,
could you please tell me how to user this code; where should i put it ?...

thanks for this wonderful job.
Eswaran R
RE: How to Programmatically Add Liferay Users in Java
13 de Janeiro de 2015 23:28
Resposta

Eswaran R

Ranking: Junior Member

Mensagens: 62

Data de entrada: 28 de Dezembro de 2014

Mensagens recentes

hi Rajesh Chaurasia,,

Thanks....
how to assign site a add liferay users porgrammatically ....

i create add user ..

Date date=new Date();
ServiceContext serviceContext = new ServiceContext();
serviceContext.setUuid(UUID.randomUUID().toString());
serviceContext.setCreateDate(date);
serviceContext.setModifiedDate(date);
long companyId=PortalUtil.getDefaultCompanyId();
long creatorUserId=0;
boolean autoPassword=false;
boolean autoScreenName=false;
boolean male=true;
boolean sendEmail = false;
int prefixId=1;
int suffixId=1;
int birthdayMonth=1;
int birthdayDay=1;
int birthdayYear=1970;
String screenName="sceene";
String jobTitle="";
long[] groupIds = null;
long[] organizationIds = null;
long[] userGroupIds = null;
String password1="test";
String password2="test";
String firstName="firstname";
String emailAddress="usertest@liferay.com";
long facebookId=0;
String openId="";
Locale locale=LocaleUtil.getDefault();
Role rolePu = RoleLocalServiceUtil.getRole(companyId, RoleConstants.POWER_USER);
long[] roleIds= {rolePu.getRoleId()};
User users43=UserLocalServiceUtil.addUserWithWorkflow(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName,
"", "", prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);



System.out.println(users43);

how to this user assign site.....


kindly help me...
thanks...


Regards..

Eswaran.R
Eswaran R
RE: How to Programmatically Add Liferay Users in Java
19 de Janeiro de 2015 01:52
Resposta

Eswaran R

Ranking: Junior Member

Mensagens: 62

Data de entrada: 28 de Dezembro de 2014

Mensagens recentes

Hi friends ..........

how to this user assign site.....

Answer below..


Date date=new Date();
ServiceContext serviceContext = new ServiceContext();
serviceContext.setUuid(UUID.randomUUID().toString());
serviceContext.setCreateDate(date);
serviceContext.setModifiedDate(date);
long companyId=PortalUtil.getDefaultCompanyId();
long creatorUserId=0;
boolean autoPassword=false;
boolean autoScreenName=false;
boolean male=true;
boolean sendEmail = false;
int prefixId=1;
int suffixId=1;
int birthdayMonth=1;
int birthdayDay=1;
int birthdayYear=1970;
String screenName="sceene";
String jobTitle="";
long[] groupIds = null;

long[] organizationIds = {15970};

long[] userGroupIds = null;
String password1="test";
String password2="test";
String firstName="firstname";
String emailAddress="usertest@liferay.com";
long facebookId=0;
String openId="";
Locale locale=LocaleUtil.getDefault();
Role rolePu = RoleLocalServiceUtil.getRole(companyId, RoleConstants.POWER_USER);
long[] roleIds= {rolePu.getRoleId()};
User users43=UserLocalServiceUtil.addUserWithWorkflow(creatorUserId, companyId, autoPassword, password1,
password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName,
"", "", prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds,
organizationIds, roleIds, userGroupIds, sendEmail, serviceContext);

Regards..

Eswaran.R