Fórumok

Benutzer erzeugen und Rollen zuweisen

Timo Kurowski, módosítva 10 év-val korábban

Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Hallo!

Ich möchte Benutzer erzeugen und ihnen Rollen zuweisen.

Die Rollen erstelle ich im LifeRay selbst.

Die Nutzer möchte ich mit einem Programm erzeugen, und den entsprechenden Rollen zuweisen.


Also:

Prüfen ob Benutzer vorhanden? Wenn ja -> Gut; wenn nein -> Nutzer erstellen, Rollen zuweisen.

Später soll das Ganze per Link geschehen. Im Moment reicht aber Hartcodierung.


Jetzt die Frage als Anfänger von Java und LifeRay: Ist das machbar? Wie kann ich Nutzer via Programm erstellen und Rollen zuweisen?

Ich stelle mir vor einen Link á la: /?user_login=benutzer; und wenn dieser nicht existiert, wird er eben erstellt und der Rolle "user" zugewiesen. Vorhandene User per Link einzuloggen habe ich übrigens bereits geschafft.



Grüße und danke.
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Timo Kurowski:
Wie kann ich Nutzer via Programm erstellen und Rollen zuweisen?


Als Einstiegsdokumentation für API-Benutzung verweise ich ja immer gern auf sevencogs, auch wenn dieses Plugin nicht mehr direkt unterstützt und ausgeliefert wird.

Hier ist der Teil, der einen Benutzeraccount erzeugt (und auch gleich noch die persönlichen Seiten des Benutzers konfiguriert. Die Ermittlung der Rollen-Ids erfolgt vorher, beim Aufruf dieser Funktion.
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Danke schonmal dafür!

Gibt es eine Möglichkeit, das Ganze in meine Methode mit einzufügen?


public class MyAutoLogin implements AutoLogin {
    public String[] login(HttpServletRequest request,
            HttpServletResponse response) throws AutoLoginException{
    	
    	
        String screenName = request.getParameter("login_user");
        if (screenName == null || screenName.isEmpty())
            return null;

        try {
            long[] companyId = GetterUtil.getLongValues(PropsUtil.getArray("company.ids"));
            User user = UserLocalServiceUtil.getUserByScreenName(companyId[0],
                    screenName);
            return new String[] { String.valueOf(user.getUserId()),
                    user.getPassword(),
                    String.valueOf(user.isPasswordEncrypted()) };        	
        } 
            catch (Exception e) {
            return null;
        }     
    }
 }


So sieht das im Moment aus. Jetzt funktioniert es natürlich nur mit vorhandenen Usern.

Wie bereits erwähnt, bin ich neu in Java/ LifeRay , daher mag die Frage vielleicht "dumm" sein.
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Ich hab' leider mal wieder nicht genug Zeit, ganze Lösungen zu liefern, sondern kann nur mit Links um mich werfen... aber dumm ist die Frage schonmal nicht.

Ich habe allerdings das Gefühl, dass das darunterliegende Problem sich auch anders (und eventuell geschickter, sicherer oder weniger wartungsintensiv) lösen lässt - insbesondere wenn's nicht mehr hartkodiert sein soll. Daher würde ich auch vor einer eventuellen Lösung gern noch ein wenig mehr über das zugrundeliegende Problem erfahren - wie ist der zu lösende Business-Usecase?

Lässt sich da ggf. etwas mit der vorhandenen LDAP Schnittstelle machen? Wenn nicht jetzt - wäre das ggf. für die nähere Zukunft eine bessere Lösung, ggf. gepaart mit einer SSO Anwendung?

P.S.: Liferay schreibt sich mit einem kleinen "r"
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ich habe eben einen wunderschönen sehr langen Text geschrieben, und als ich ihn abschicken wollte, ist mein Rechner abgestürzt.


Darum hier die Kurzfassung:


User sollen sich auf meiner Homepage (nicht das Liferay Portal) registrieren können bzw. registriert werden können, inklusive Rechte.

Sollen dann via Link auf mein Liferay Portal kommen. Falls sie dort noch nicht registriert sind, soll das automatisch mit den Rechten und Namen etc. von der Seite passieren.


Das soll über die URL passieren, da die Daten nicht auf einem SSO Server gespeichert werden können. (Das Programm auf unserer vorhandenen Seite lässt dies nicht zu (Shopsystem)).

Ja, ich hoffe ich habe nichts vergessen.


P.S.: Sorry wegen dem "R". Ich weiß auch nicht, wieso ich das immer mache.
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Ok, das klärt einiges.

In dem Fall würde ich lieber seitens des Shopsystems per Webservice den Benutzer anlegen (der dazugehörige Service heißt UserService, nicht UserLocalService).

Wenn ein Benutzer selber die URL sehen kann, die einen Benutzeraccount anlegt, halte ich das für eine ziemlich große Sicherheitslücke.

Ein angenehmer Nebeneffekt ist, dass der Liferay-seitige Code immer davon ausgehen kann, dass der Benutzeraccount bereits existiert.
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Hallo noch mal.

Hatte vergessen zu erwähnen, das die URL mittels Private und Public Key verschlüsselt wird.


Danke für den Link! Ich werde mir das morgen mal durchlesen.
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ich entschuldige mich mal für den Doppelpost, aber es gibt eine neue Frage.


So wie ich das verstehe, kann ich die User "remote" registrieren?
Das würde bedeuten, das ich im Shopsystem eine Liferay Klasse importiere, dort dann die standart Registrierung an Liferay anpasse und verlinke. Und das würde funktionieren?

Oder denke ich gerade komplett falsch?
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
UserService ist als Webservice verfügbar (z.B. SOAP, JSON) - auf die Dokumentation zu den Webservices hab' ich ja oben schon verlinkt. Darüber ist es möglich, neue Benutzer aus externen Prozessen anzulegen.

Alternativ wäre da noch die Kopplung über ein LDAP - wenn das Shopsystem z.B. einen Benutzer in LDAP anlegen würde und Liferay dieses LDAP System als Quelle für Benutzeraccounts nutzt.
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Hallo nochmal,

trotz der Vorteile des Webservice möchten wir die Idee mit dem Link weiter verfolgen. (Hauptproblem ist die Zeit, am Shop sitzt jemand anderes als ich, der keine Liferay Erfahrung hat, und ich kann mich mit dem System nicht beschäftigen.

Wie dem auch sei.

Ich habe mir vom ersten Link ein paar Teile raus gesucht, sodass ich nun rein vom Code her einen User erstellen kann... Zumindest glaube ich das. Die Frage ist: Ist es notwendig beim Erstellen direkt eine Usergruppe zuzuweisen etc.? Oder reicht einfach der erste Teil:

	long creatorUserId = 0;
		boolean autoPassword = false;
		String password1 = screenName;
		String password2 = password1;
		boolean autoScreenName = false;
		String emailAddress = screenName + "@7cogs.com";
		long facebookId = 0;
		String openId = StringPool.BLANK;
		Locale locale = LocaleUtil.getDefault();
		String middleName = StringPool.BLANK;
		int prefixId = 0;
		int suffixId = 0;
		int birthdayMonth = Calendar.JANUARY;
		int birthdayDay = 1;
		int birthdayYear = 1970;


zum Erstellen des Users?

Da ich in meinem Hook den vorhanden User via URL auslese, sollte ich ja im Catch-Block die Möglichkeit haben einen evtl. nicht vorhandenen Namen zu nehmen, und damit den screenName zu erstellen, oder?
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Hallo nochmal. Im Moment sieht mein Code so aus:



public class InsecureAutoLogin implements AutoLogin {
	Logger logger = Logger.getLogger(AutoLogin.class.getName());
	
    public String[] login(HttpServletRequest request,
            HttpServletResponse response) throws AutoLoginException{
    	
    	
        String screenName = request.getParameter("login");
        if (screenName == null || screenName.isEmpty())
            return null;  
                                                          //Login für vorhandene User
        try {
            long companyId = PortalUtil.getCompanyId(request);
            User user = UserLocalServiceUtil.getUserByScreenName(companyId,
                    screenName);
            return new String[] { String.valueOf(user.getUserId()),
                    user.getPassword(),
                    String.valueOf(user.isPasswordEncrypted()) };
        	
        } catch (Exception e) {                     //hier soll ein nicht vorhandener User erstellt werden, nur wie?
        	try {
        		createUser("p","p","p","p");
        	} catch (Exception e1) {
        		return null;
        	}
        	       	
        }
		return null;
        	
        }        	
    public User createUser(String firstName, String lastName, String email, String screenName)        //Methode zum Erstellen eines neuen Users.
		throws Exception {
    	
    	long userId = CounterLocalServiceUtil.increment();
        User userToCreate = UserUtil.create(userId);
        userToCreate.setFirstName("Paul");
        userToCreate.setLastName("Panzer");
        userToCreate.setEmailAddress("email@email.de");
        userToCreate.setPassword("ksc");
        userToCreate.setScreenName("ppanzer");
        //userToCreate.setActive(true);
        userToCreate.setCreateDate(new Date());
        userToCreate.setGreeting("Hi " + screenName);
        userToCreate.setJobTitle("");
        //userToCreate.setLanguageId("");
        userToCreate.setMiddleName("");

        User createdUser = UserLocalServiceUtil.addUser(userToCreate);
    	
        return createdUser;
    }
}



Leider wird der User nicht erstellt.

Ich bekomme diesen Fehler:
integrity constraint violation: unique constraint or index violation: IX_615E9F7A


An dieser Stelle:
 User createdUser = UserLocalServiceUtil.addUser(userToCreate);


Bin ich denn auf dem richtigen Weg, oder schieße ich hier komplett am Ziel vorbei?
thumbnail
Jan Geißler, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen (Válasz)

Liferay Master Bejegyzések: 735 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Versuch diese Methode:

UserLocalServiceUtil.addUser(creatorUserId, companyId, autoPassword, password1, password2, autoScreenName, screenName, emailAddress, facebookId, openId, locale, firstName, middleName, lastName, prefixId, suffixId, male, birthdayMonth, birthdayDay, birthdayYear, jobTitle, groupIds, organizationIds, roleIds, userGroupIds, sendEmail, serviceContext)

EDIT:

Also Herr Fachkollege, ne Primary Key Constraint Violation solltest du selber entdecken können..... tststststs.....
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ja, der Fehler wurde schnell entdeckt, nachdem die Datenbank von HSQL auf MySQL gewechselt wurde. Obwohl keine User im Portal angezeigt wurden, waren sie in der Datenbank vorhanden.


Ich bin mittlerweile so weit, das User in der Datenbank angelegt und auch im Liferay erkannt werden. Allerdings sind sie im Control Panel schwarz hinterlegt, und ich habe keine Möglichkeit das zu ändern. Ich habe irgendetwas übersehen, nur was weiß ich noch nicht ganz genau.

   public User createUser(String firstName, String lastName, String email, String screenName, String password, long companyId)
		throws Exception {    	
    	long userId = CounterLocalServiceUtil.increment();	
        User userToCreate = UserLocalServiceUtil.createUser(userId);
        userToCreate.setCompanyId(companyId);
        userToCreate.setFirstName(firstName);
        userToCreate.setLastName(lastName);
        userToCreate.setEmailAddress(email);
        userToCreate.setPassword(password);
        userToCreate.setScreenName(screenName);
        userToCreate.setCreateDate(new Date());
        userToCreate.setGreeting("Hi " + screenName);
        userToCreate.setJobTitle("");
        userToCreate.setLanguageId("en_US");
        userToCreate.setMiddleName("");
        userToCreate.setPasswordEncrypted(true);
        userToCreate.setContactId(userId);
        userToCreate.setAgreedToTermsOfUse(true);
     
        User createdUser = UserLocalServiceUtil.addUser(userToCreate);
        
    	System.out.println(createdUser);
        
        return createdUser;
    }


Aufgerufen von:

try {       		        		
				createUser("blah","blah","blah","blah","blah", PortalUtil.getCompanyId(request));
				
        	} catch (Exception e1) {
        		e1.printStackTrace();
        		return null;
        	}        	


Ich vermute, es hat etwas mit der Usergroup oder den Rollen zu tun, sicher bin ich aber nicht.
thumbnail
Jan Geißler, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Master Bejegyzések: 735 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Nimm die andere Methode und alles geht ;)
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ich weiß ehrlich gesagt nicht, wie ich die andere Methode in meinem Code aufrufen soll.

In meinem Code werden einige Werte ja Automatisch erstellt, wie die UserId. In deiner Methode seh ich gar keine Funktion?

Ich muss dem User später ja irgendwo Rollen zuweisen können. Ist natürlich möglich, das ich wieder viel zu kompliziert denke.
thumbnail
Jan Geißler, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen (Válasz)

Liferay Master Bejegyzések: 735 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Du denkst zu kompliziert. Schau dir die Methoden Signatur genau an, und dann schau dir den Code dazu an der Ausgeführt wird. Einiges dürfte dort klar werden ;)



public User addUser(
			long creatorUserId, long companyId, boolean autoPassword,
			String password1, String password2, boolean autoScreenName,
			String screenName, String emailAddress, long facebookId,
			String openId, Locale locale, String firstName, String middleName,
			String lastName, int prefixId, int suffixId, boolean male,
			int birthdayMonth, int birthdayDay, int birthdayYear,
			String jobTitle, long[] groupIds, long[] organizationIds,
			long[] roleIds, long[] userGroupIds, boolean sendEmail,
			ServiceContext serviceContext)
		throws PortalException, SystemException {

		boolean workflowEnabled = WorkflowThreadLocal.isEnabled();

		try {
			WorkflowThreadLocal.setEnabled(false);

			return addUserWithWorkflow(
				creatorUserId, companyId, autoPassword, password1, password2,
				autoScreenName, screenName, emailAddress, facebookId, openId,
				locale, firstName, middleName, lastName, prefixId, suffixId,
				male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
				groupIds, organizationIds, roleIds, userGroupIds, sendEmail,
				serviceContext);
		}
		finally {
			WorkflowThreadLocal.setEnabled(workflowEnabled);
		}
	}



/**
	 * Adds a user with workflow.
	 *
	 * <p>
	 * This method handles the creation and bookkeeping of the user including
	 * its resources, metadata, and internal data structures. It is not
	 * necessary to make subsequent calls to any methods to setup default
	 * groups, resources, etc.
	 * </p>
	 *
	 * @param  creatorUserId the primary key of the creator
	 * @param  companyId the primary key of the user's company
	 * @param  autoPassword whether a password should be automatically generated
	 *         for the user
	 * @param  password1 the user's password
	 * @param  password2 the user's password confirmation
	 * @param  autoScreenName whether a screen name should be automatically
	 *         generated for the user
	 * @param  screenName the user's screen name
	 * @param  emailAddress the user's email address
	 * @param  facebookId the user's facebook ID
	 * @param  openId the user's OpenID
	 * @param  locale the user's locale
	 * @param  firstName the user's first name
	 * @param  middleName the user's middle name
	 * @param  lastName the user's last name
	 * @param  prefixId the user's name prefix ID
	 * @param  suffixId the user's name suffix ID
	 * @param  male whether the user is male
	 * @param  birthdayMonth the user's birthday month (0-based, meaning 0 for
	 *         January)
	 * @param  birthdayDay the user's birthday day
	 * @param  birthdayYear the user's birthday year
	 * @param  jobTitle the user's job title
	 * @param  groupIds the primary keys of the user's groups
	 * @param  organizationIds the primary keys of the user's organizations
	 * @param  roleIds the primary keys of the roles this user possesses
	 * @param  userGroupIds the primary keys of the user's user groups
	 * @param  sendEmail whether to send the user an email notification about
	 *         their new account
	 * @param  serviceContext the user's service context (optionally
	 *         <code>null</code>). Can set the universally unique identifier
	 *         (with the <code>uuid</code> attribute), asset category IDs, asset
	 *         tag names, and expando bridge attributes for the user.
	 * @return the new user
	 * @throws PortalException if the user's information was invalid
	 * @throws SystemException if a system exception occurred
	 */
	@SuppressWarnings("deprecation")
	public User addUserWithWorkflow(
			long creatorUserId, long companyId, boolean autoPassword,
			String password1, String password2, boolean autoScreenName,
			String screenName, String emailAddress, long facebookId,
			String openId, Locale locale, String firstName, String middleName,
			String lastName, int prefixId, int suffixId, boolean male,
			int birthdayMonth, int birthdayDay, int birthdayYear,
			String jobTitle, long[] groupIds, long[] organizationIds,
			long[] roleIds, long[] userGroupIds, boolean sendEmail,
			ServiceContext serviceContext)
		throws PortalException, SystemException {

		// User

		Company company = companyPersistence.findByPrimaryKey(companyId);
		screenName = getScreenName(screenName);
		emailAddress = emailAddress.trim().toLowerCase();
		openId = openId.trim();
		Date now = new Date();

		if (PrefsPropsUtil.getBoolean(
				companyId, PropsKeys.USERS_SCREEN_NAME_ALWAYS_AUTOGENERATE)) {

			autoScreenName = true;
		}

		long userId = counterLocalService.increment();

		EmailAddressGenerator emailAddressGenerator =
			EmailAddressGeneratorFactory.getInstance();

		if (emailAddressGenerator.isGenerated(emailAddress)) {
			emailAddress = StringPool.BLANK;
		}

		if (!PropsValues.USERS_EMAIL_ADDRESS_REQUIRED &amp;&amp;
			Validator.isNull(emailAddress)) {

			emailAddress = emailAddressGenerator.generate(companyId, userId);
		}

		validate(
			companyId, userId, autoPassword, password1, password2,
			autoScreenName, screenName, emailAddress, firstName, middleName,
			lastName, organizationIds);

		if (!autoPassword) {
			if (Validator.isNull(password1) || Validator.isNull(password2)) {
				throw new UserPasswordException(
					UserPasswordException.PASSWORD_INVALID);
			}
		}

		if (autoScreenName) {
			ScreenNameGenerator screenNameGenerator =
				ScreenNameGeneratorFactory.getInstance();

			try {
				screenName = screenNameGenerator.generate(
					companyId, userId, emailAddress);
			}
			catch (Exception e) {
				throw new SystemException(e);
			}
		}

		User defaultUser = getDefaultUser(companyId);

		FullNameGenerator fullNameGenerator =
			FullNameGeneratorFactory.getInstance();

		String fullName = fullNameGenerator.getFullName(
			firstName, middleName, lastName);

		String greeting = LanguageUtil.format(
			locale, "welcome-x", " " + fullName, false);

		User user = userPersistence.create(userId);

		if (serviceContext != null) {
			String uuid = serviceContext.getUuid();

			if (Validator.isNotNull(uuid)) {
				user.setUuid(uuid);
			}
		}

		user.setCompanyId(companyId);
		user.setCreateDate(now);
		user.setModifiedDate(now);
		user.setDefaultUser(false);
		user.setContactId(counterLocalService.increment());

		if (Validator.isNotNull(password1)) {
			user.setPassword(PwdEncryptor.encrypt(password1));
			user.setPasswordUnencrypted(password1);
		}

		user.setPasswordEncrypted(true);

		PasswordPolicy passwordPolicy = defaultUser.getPasswordPolicy();

		if ((passwordPolicy != null) &amp;&amp; passwordPolicy.isChangeable() &amp;&amp;
			passwordPolicy.isChangeRequired()) {

			user.setPasswordReset(true);
		}
		else {
			user.setPasswordReset(false);
		}

		user.setDigest(StringPool.BLANK);
		user.setScreenName(screenName);
		user.setEmailAddress(emailAddress);
		user.setFacebookId(facebookId);
		user.setOpenId(openId);
		user.setLanguageId(locale.toString());
		user.setTimeZoneId(defaultUser.getTimeZoneId());
		user.setGreeting(greeting);
		user.setFirstName(firstName);
		user.setMiddleName(middleName);
		user.setLastName(lastName);
		user.setJobTitle(jobTitle);
		user.setStatus(WorkflowConstants.STATUS_DRAFT);
		user.setExpandoBridgeAttributes(serviceContext);

		userPersistence.update(user, false, serviceContext);

		// Resources

		String creatorUserName = StringPool.BLANK;

		if (creatorUserId &lt;= 0) {
			creatorUserId = user.getUserId();

			// Don't grab the full name from the User object because it doesn't
			// have a corresponding Contact object yet

			//creatorUserName = user.getFullName();
		}
		else {
			User creatorUser = userPersistence.findByPrimaryKey(creatorUserId);

			creatorUserName = creatorUser.getFullName();
		}

		resourceLocalService.addResources(
			companyId, 0, creatorUserId, User.class.getName(), user.getUserId(),
			false, false, false);

		// Contact

		Date birthday = PortalUtil.getDate(
			birthdayMonth, birthdayDay, birthdayYear,
			ContactBirthdayException.class);

		Contact contact = contactPersistence.create(user.getContactId());

		contact.setCompanyId(user.getCompanyId());
		contact.setUserId(creatorUserId);
		contact.setUserName(creatorUserName);
		contact.setCreateDate(now);
		contact.setModifiedDate(now);
		contact.setAccountId(company.getAccountId());
		contact.setParentContactId(ContactConstants.DEFAULT_PARENT_CONTACT_ID);
		contact.setFirstName(firstName);
		contact.setMiddleName(middleName);
		contact.setLastName(lastName);
		contact.setPrefixId(prefixId);
		contact.setSuffixId(suffixId);
		contact.setMale(male);
		contact.setBirthday(birthday);
		contact.setJobTitle(jobTitle);

		contactPersistence.update(contact, false, serviceContext);

		// Group

		groupLocalService.addGroup(
			user.getUserId(), User.class.getName(), user.getUserId(), null,
			null, 0, StringPool.SLASH + screenName, false, true, null);

		// Groups

		if (groupIds != null) {
			groupLocalService.addUserGroups(userId, groupIds);
		}

		addDefaultGroups(userId);

		// Organizations

		updateOrganizations(userId, organizationIds, false);

		// Roles

		if (roleIds != null) {
			roleIds = UsersAdminUtil.addRequiredRoles(user, roleIds);

			userPersistence.setRoles(userId, roleIds);
		}

		addDefaultRoles(userId);

		// User groups

		if (userGroupIds != null) {
			if (PropsValues.USER_GROUPS_COPY_LAYOUTS_TO_USER_PERSONAL_SITE) {
				for (long userGroupId : userGroupIds) {
					userGroupLocalService.copyUserGroupLayouts(
						userGroupId, new long[] {userId});
				}
			}

			userPersistence.setUserGroups(userId, userGroupIds);
		}

		addDefaultUserGroups(userId);

		// Asset

		if (serviceContext != null) {
			updateAsset(
				creatorUserId, user, serviceContext.getAssetCategoryIds(),
				serviceContext.getAssetTagNames());
		}

		// Indexer

		if ((serviceContext == null) || serviceContext.isIndexingEnabled()) {
			reindex(user);
		}

		// Workflow

		long workflowUserId = creatorUserId;

		if (workflowUserId == userId) {
			workflowUserId = defaultUser.getUserId();
		}

		ServiceContext workflowServiceContext = serviceContext;

		if (workflowServiceContext == null) {
			workflowServiceContext = new ServiceContext();
		}

		workflowServiceContext.setAttribute("autoPassword", autoPassword);
		workflowServiceContext.setAttribute("sendEmail", sendEmail);

		WorkflowHandlerRegistryUtil.startWorkflowInstance(
			companyId, workflowUserId, User.class.getName(), userId, user,
			workflowServiceContext);

		if (serviceContext != null) {
			String passwordUnencrypted =
				(String)serviceContext.getAttribute("passwordUnencrypted");

			if (Validator.isNotNull(passwordUnencrypted)) {
				user.setPasswordUnencrypted(passwordUnencrypted);
			}
		}

		return user;
	}
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen (Válasz)

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ok danke, hat funktioniert mit der addUser Methode.

Sieht jetzt so aus:

try {       		        		
			
				User user = createPortalUser(request.getParameter("login"), PortalUtil.getCompanyId(request),
			               PortalUtil.getUserId(request), PortalUtil.getLocale(request));
			    System.out.println(user);	
				
        	} catch (Exception e1) {
        		e1.printStackTrace();
        		return null;
        	}        	


Zu:

private User createPortalUser(String userName, final long companyId,
            final long userId, final Locale locale) {

        User user = null;
        try {
            user = UserLocalServiceUtil.addUser(userId, companyId, false,
                    "ksc", "ksc", false, userName, userName
                            + "@liferay.com", 0L, "", locale, userName
                            + "firstName", "middleName", userName + "lastName",
                    0, 0, false, 0, 1, 1970, "Job Title", null, null, null,
                    null, false, new ServiceContext());

        } catch (Exception e) {
            System.out.println("Portal user creation failed " + e.getMessage());
        }
        return user;
    }


Jetzt muss ich nur noch einen Weg finden, Rollen zu übergeben.
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Sooo alles so weit geschafft. Eine letzte Frage:

Ich habe:

user = UserLocalServiceUtil.addUser(userId, companyId, false,
                    "xxx", "xxx", false, userName, email,
                            0L, "", locale, userName
                            + "", "", userName + "",
                    0, 0, false, 0, 1, 1970, "", null, null, userRole,
                    null, false, new ServiceContext());
            user.setAgreedToTermsOfUse(true);
            user.setReminderQueryQuestion("blah?");
            user.setReminderQueryAnswer("blah!");


Funktioniert irgendwie nicht.

Steht auch nicht in der Datenbank, die Frage und Antwort.
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Mir fehlt da noch ein UserLocalServiceUtil.updateUser(user); am Ende
Timo Kurowski, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Regular Member Bejegyzések: 240 Csatlakozás dátuma: 2013.06.24. Legújabb bejegyzések
Ja das war es, danke emoticon
thumbnail
Olaf Kock, módosítva 10 év-val korábban

RE: Benutzer erzeugen und Rollen zuweisen

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Timo Kurowski:
Ja, der Fehler wurde schnell entdeckt, nachdem die Datenbank von HSQL auf MySQL gewechselt wurde. Obwohl keine User im Portal angezeigt wurden, waren sie in der Datenbank vorhanden.


Benutzer, die in der Datenbank (hsql) vorhanden sind, aber nicht angezeigt werden? Da nervt mich doch schon lange was. Vielleicht kann ich ja auf diesem Wege ein paar "Votes" für das Ticket erschleichen emoticon