Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 29, 2013 6:00 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 20, 2013 3:41 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 20, 2013 5:23 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 20, 2013 7:07 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 20, 2013 8:18 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 20, 2013 8:32 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 20, 2013 8:46 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 21, 2013 12:41 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 21, 2013 12:57 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 21, 2013 5:30 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 22, 2013 6:21 AM
RE: Benutzer erzeugen und Rollen zuweisen Jan Geißler August 23, 2013 3:11 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 23, 2013 5:29 AM
RE: Benutzer erzeugen und Rollen zuweisen Jan Geißler August 23, 2013 5:39 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 23, 2013 5:53 AM
RE: Benutzer erzeugen und Rollen zuweisen Jan Geißler August 23, 2013 6:07 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 26, 2013 7:39 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 28, 2013 8:57 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 29, 2013 2:46 AM
RE: Benutzer erzeugen und Rollen zuweisen Timo Kurowski August 29, 2013 4:29 AM
RE: Benutzer erzeugen und Rollen zuweisen Olaf Kock August 23, 2013 6:57 AM
Timo Kurowski
Benutzer erzeugen und Rollen zuweisen
August 29, 2013 6:00 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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.
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 3:41 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 5:23 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

Danke schonmal dafür!

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


 1public class MyAutoLogin implements AutoLogin {
 2    public String[] login(HttpServletRequest request,
 3            HttpServletResponse response) throws AutoLoginException{
 4       
 5       
 6        String screenName = request.getParameter("login_user");
 7        if (screenName == null || screenName.isEmpty())
 8            return null;
 9
10        try {
11            long[] companyId = GetterUtil.getLongValues(PropsUtil.getArray("company.ids"));
12            User user = UserLocalServiceUtil.getUserByScreenName(companyId[0],
13                    screenName);
14            return new String[] { String.valueOf(user.getUserId()),
15                    user.getPassword(),
16                    String.valueOf(user.isPasswordEncrypted()) };            
17        }
18            catch (Exception e) {
19            return null;
20        }    
21    }
22 }


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.
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 7:07 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 8:18 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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.
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 8:32 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 20, 2013 8:46 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 21, 2013 12:41 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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?
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 21, 2013 12:57 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 21, 2013 5:30 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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:

 1    long creatorUserId = 0;
 2        boolean autoPassword = false;
 3        String password1 = screenName;
 4        String password2 = password1;
 5        boolean autoScreenName = false;
 6        String emailAddress = screenName + "@7cogs.com";
 7        long facebookId = 0;
 8        String openId = StringPool.BLANK;
 9        Locale locale = LocaleUtil.getDefault();
10        String middleName = StringPool.BLANK;
11        int prefixId = 0;
12        int suffixId = 0;
13        int birthdayMonth = Calendar.JANUARY;
14        int birthdayDay = 1;
15        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
RE: Benutzer erzeugen und Rollen zuweisen
August 22, 2013 6:21 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

Hallo nochmal. Im Moment sieht mein Code so aus:

 1
 2
 3public class InsecureAutoLogin implements AutoLogin {
 4    Logger logger = Logger.getLogger(AutoLogin.class.getName());
 5   
 6    public String[] login(HttpServletRequest request,
 7            HttpServletResponse response) throws AutoLoginException{
 8       
 9       
10        String screenName = request.getParameter("login");
11        if (screenName == null || screenName.isEmpty())
12            return null; 
13                                                          //Login für vorhandene User
14        try {
15            long companyId = PortalUtil.getCompanyId(request);
16            User user = UserLocalServiceUtil.getUserByScreenName(companyId,
17                    screenName);
18            return new String[] { String.valueOf(user.getUserId()),
19                    user.getPassword(),
20                    String.valueOf(user.isPasswordEncrypted()) };
21            
22        } catch (Exception e) {                     //hier soll ein nicht vorhandener User erstellt werden, nur wie?
23            try {
24                createUser("p","p","p","p");
25            } catch (Exception e1) {
26                return null;
27            }
28                      
29        }
30        return null;
31            
32        }            
33    public User createUser(String firstName, String lastName, String email, String screenName)        //Methode zum Erstellen eines neuen Users.
34        throws Exception {
35       
36        long userId = CounterLocalServiceUtil.increment();
37        User userToCreate = UserUtil.create(userId);
38        userToCreate.setFirstName("Paul");
39        userToCreate.setLastName("Panzer");
40        userToCreate.setEmailAddress("email@email.de");
41        userToCreate.setPassword("ksc");
42        userToCreate.setScreenName("ppanzer");
43        //userToCreate.setActive(true);
44        userToCreate.setCreateDate(new Date());
45        userToCreate.setGreeting("Hi " + screenName);
46        userToCreate.setJobTitle("");
47        //userToCreate.setLanguageId("");
48        userToCreate.setMiddleName("");
49
50        User createdUser = UserLocalServiceUtil.addUser(userToCreate);
51       
52        return createdUser;
53    }
54}



Leider wird der User nicht erstellt.

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


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


Bin ich denn auf dem richtigen Weg, oder schieße ich hier komplett am Ziel vorbei?
Jan Geißler
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 3:11 AM
Answer

Jan Geißler

Rank: Expert

Posts: 354

Join Date: July 5, 2011

Recent Posts

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
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 5:29 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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.

 1   public User createUser(String firstName, String lastName, String email, String screenName, String password, long companyId)
 2        throws Exception {       
 3        long userId = CounterLocalServiceUtil.increment();   
 4        User userToCreate = UserLocalServiceUtil.createUser(userId);
 5        userToCreate.setCompanyId(companyId);
 6        userToCreate.setFirstName(firstName);
 7        userToCreate.setLastName(lastName);
 8        userToCreate.setEmailAddress(email);
 9        userToCreate.setPassword(password);
10        userToCreate.setScreenName(screenName);
11        userToCreate.setCreateDate(new Date());
12        userToCreate.setGreeting("Hi " + screenName);
13        userToCreate.setJobTitle("");
14        userToCreate.setLanguageId("en_US");
15        userToCreate.setMiddleName("");
16        userToCreate.setPasswordEncrypted(true);
17        userToCreate.setContactId(userId);
18        userToCreate.setAgreedToTermsOfUse(true);
19    
20        User createdUser = UserLocalServiceUtil.addUser(userToCreate);
21       
22        System.out.println(createdUser);
23       
24        return createdUser;
25    }


Aufgerufen von:
1
2try {                              
3                createUser("blah","blah","blah","blah","blah", PortalUtil.getCompanyId(request));
4               
5            } catch (Exception e1) {
6                e1.printStackTrace();
7                return null;
8            }            


Ich vermute, es hat etwas mit der Usergroup oder den Rollen zu tun, sicher bin ich aber nicht.
Jan Geißler
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 5:39 AM
Answer

Jan Geißler

Rank: Expert

Posts: 354

Join Date: July 5, 2011

Recent Posts

Nimm die andere Methode und alles geht ;)
Timo Kurowski
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 5:53 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

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.
Jan Geißler
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 6:07 AM
Answer

Jan Geißler

Rank: Expert

Posts: 354

Join Date: July 5, 2011

Recent Posts

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 ;)


 1
 2public User addUser(
 3            long creatorUserId, long companyId, boolean autoPassword,
 4            String password1, String password2, boolean autoScreenName,
 5            String screenName, String emailAddress, long facebookId,
 6            String openId, Locale locale, String firstName, String middleName,
 7            String lastName, int prefixId, int suffixId, boolean male,
 8            int birthdayMonth, int birthdayDay, int birthdayYear,
 9            String jobTitle, long[] groupIds, long[] organizationIds,
10            long[] roleIds, long[] userGroupIds, boolean sendEmail,
11            ServiceContext serviceContext)
12        throws PortalException, SystemException {
13
14        boolean workflowEnabled = WorkflowThreadLocal.isEnabled();
15
16        try {
17            WorkflowThreadLocal.setEnabled(false);
18
19            return addUserWithWorkflow(
20                creatorUserId, companyId, autoPassword, password1, password2,
21                autoScreenName, screenName, emailAddress, facebookId, openId,
22                locale, firstName, middleName, lastName, prefixId, suffixId,
23                male, birthdayMonth, birthdayDay, birthdayYear, jobTitle,
24                groupIds, organizationIds, roleIds, userGroupIds, sendEmail,
25                serviceContext);
26        }
27        finally {
28            WorkflowThreadLocal.setEnabled(workflowEnabled);
29        }
30    }


  1
  2/**
  3     * Adds a user with workflow.
  4     *
  5     * <p>
  6     * This method handles the creation and bookkeeping of the user including
  7     * its resources, metadata, and internal data structures. It is not
  8     * necessary to make subsequent calls to any methods to setup default
  9     * groups, resources, etc.
 10     * </p>
 11     *
 12     * @param  creatorUserId the primary key of the creator
 13     * @param  companyId the primary key of the user's company
 14     * @param  autoPassword whether a password should be automatically generated
 15     *         for the user
 16     * @param  password1 the user's password
 17     * @param  password2 the user's password confirmation
 18     * @param  autoScreenName whether a screen name should be automatically
 19     *         generated for the user
 20     * @param  screenName the user's screen name
 21     * @param  emailAddress the user's email address
 22     * @param  facebookId the user's facebook ID
 23     * @param  openId the user's OpenID
 24     * @param  locale the user's locale
 25     * @param  firstName the user's first name
 26     * @param  middleName the user's middle name
 27     * @param  lastName the user's last name
 28     * @param  prefixId the user's name prefix ID
 29     * @param  suffixId the user's name suffix ID
 30     * @param  male whether the user is male
 31     * @param  birthdayMonth the user's birthday month (0-based, meaning 0 for
 32     *         January)
 33     * @param  birthdayDay the user's birthday day
 34     * @param  birthdayYear the user's birthday year
 35     * @param  jobTitle the user's job title
 36     * @param  groupIds the primary keys of the user's groups
 37     * @param  organizationIds the primary keys of the user's organizations
 38     * @param  roleIds the primary keys of the roles this user possesses
 39     * @param  userGroupIds the primary keys of the user's user groups
 40     * @param  sendEmail whether to send the user an email notification about
 41     *         their new account
 42     * @param  serviceContext the user's service context (optionally
 43     *         <code>null</code>). Can set the universally unique identifier
 44     *         (with the <code>uuid</code> attribute), asset category IDs, asset
 45     *         tag names, and expando bridge attributes for the user.
 46     * @return the new user
 47     * @throws PortalException if the user's information was invalid
 48     * @throws SystemException if a system exception occurred
 49     */
 50    @SuppressWarnings("deprecation")
 51    public User addUserWithWorkflow(
 52            long creatorUserId, long companyId, boolean autoPassword,
 53            String password1, String password2, boolean autoScreenName,
 54            String screenName, String emailAddress, long facebookId,
 55            String openId, Locale locale, String firstName, String middleName,
 56            String lastName, int prefixId, int suffixId, boolean male,
 57            int birthdayMonth, int birthdayDay, int birthdayYear,
 58            String jobTitle, long[] groupIds, long[] organizationIds,
 59            long[] roleIds, long[] userGroupIds, boolean sendEmail,
 60            ServiceContext serviceContext)
 61        throws PortalException, SystemException {
 62
 63        // User
 64
 65        Company company = companyPersistence.findByPrimaryKey(companyId);
 66        screenName = getScreenName(screenName);
 67        emailAddress = emailAddress.trim().toLowerCase();
 68        openId = openId.trim();
 69        Date now = new Date();
 70
 71        if (PrefsPropsUtil.getBoolean(
 72                companyId, PropsKeys.USERS_SCREEN_NAME_ALWAYS_AUTOGENERATE)) {
 73
 74            autoScreenName = true;
 75        }
 76
 77        long userId = counterLocalService.increment();
 78
 79        EmailAddressGenerator emailAddressGenerator =
 80            EmailAddressGeneratorFactory.getInstance();
 81
 82        if (emailAddressGenerator.isGenerated(emailAddress)) {
 83            emailAddress = StringPool.BLANK;
 84        }
 85
 86        if (!PropsValues.USERS_EMAIL_ADDRESS_REQUIRED &&
 87            Validator.isNull(emailAddress)) {
 88
 89            emailAddress = emailAddressGenerator.generate(companyId, userId);
 90        }
 91
 92        validate(
 93            companyId, userId, autoPassword, password1, password2,
 94            autoScreenName, screenName, emailAddress, firstName, middleName,
 95            lastName, organizationIds);
 96
 97        if (!autoPassword) {
 98            if (Validator.isNull(password1) || Validator.isNull(password2)) {
 99                throw new UserPasswordException(
100                    UserPasswordException.PASSWORD_INVALID);
101            }
102        }
103
104        if (autoScreenName) {
105            ScreenNameGenerator screenNameGenerator =
106                ScreenNameGeneratorFactory.getInstance();
107
108            try {
109                screenName = screenNameGenerator.generate(
110                    companyId, userId, emailAddress);
111            }
112            catch (Exception e) {
113                throw new SystemException(e);
114            }
115        }
116
117        User defaultUser = getDefaultUser(companyId);
118
119        FullNameGenerator fullNameGenerator =
120            FullNameGeneratorFactory.getInstance();
121
122        String fullName = fullNameGenerator.getFullName(
123            firstName, middleName, lastName);
124
125        String greeting = LanguageUtil.format(
126            locale, "welcome-x", " " + fullName, false);
127
128        User user = userPersistence.create(userId);
129
130        if (serviceContext != null) {
131            String uuid = serviceContext.getUuid();
132
133            if (Validator.isNotNull(uuid)) {
134                user.setUuid(uuid);
135            }
136        }
137
138        user.setCompanyId(companyId);
139        user.setCreateDate(now);
140        user.setModifiedDate(now);
141        user.setDefaultUser(false);
142        user.setContactId(counterLocalService.increment());
143
144        if (Validator.isNotNull(password1)) {
145            user.setPassword(PwdEncryptor.encrypt(password1));
146            user.setPasswordUnencrypted(password1);
147        }
148
149        user.setPasswordEncrypted(true);
150
151        PasswordPolicy passwordPolicy = defaultUser.getPasswordPolicy();
152
153        if ((passwordPolicy != null) && passwordPolicy.isChangeable() &&
154            passwordPolicy.isChangeRequired()) {
155
156            user.setPasswordReset(true);
157        }
158        else {
159            user.setPasswordReset(false);
160        }
161
162        user.setDigest(StringPool.BLANK);
163        user.setScreenName(screenName);
164        user.setEmailAddress(emailAddress);
165        user.setFacebookId(facebookId);
166        user.setOpenId(openId);
167        user.setLanguageId(locale.toString());
168        user.setTimeZoneId(defaultUser.getTimeZoneId());
169        user.setGreeting(greeting);
170        user.setFirstName(firstName);
171        user.setMiddleName(middleName);
172        user.setLastName(lastName);
173        user.setJobTitle(jobTitle);
174        user.setStatus(WorkflowConstants.STATUS_DRAFT);
175        user.setExpandoBridgeAttributes(serviceContext);
176
177        userPersistence.update(user, false, serviceContext);
178
179        // Resources
180
181        String creatorUserName = StringPool.BLANK;
182
183        if (creatorUserId <= 0) {
184            creatorUserId = user.getUserId();
185
186            // Don't grab the full name from the User object because it doesn't
187            // have a corresponding Contact object yet
188
189            //creatorUserName = user.getFullName();
190        }
191        else {
192            User creatorUser = userPersistence.findByPrimaryKey(creatorUserId);
193
194            creatorUserName = creatorUser.getFullName();
195        }
196
197        resourceLocalService.addResources(
198            companyId, 0, creatorUserId, User.class.getName(), user.getUserId(),
199            false, false, false);
200
201        // Contact
202
203        Date birthday = PortalUtil.getDate(
204            birthdayMonth, birthdayDay, birthdayYear,
205            ContactBirthdayException.class);
206
207        Contact contact = contactPersistence.create(user.getContactId());
208
209        contact.setCompanyId(user.getCompanyId());
210        contact.setUserId(creatorUserId);
211        contact.setUserName(creatorUserName);
212        contact.setCreateDate(now);
213        contact.setModifiedDate(now);
214        contact.setAccountId(company.getAccountId());
215        contact.setParentContactId(ContactConstants.DEFAULT_PARENT_CONTACT_ID);
216        contact.setFirstName(firstName);
217        contact.setMiddleName(middleName);
218        contact.setLastName(lastName);
219        contact.setPrefixId(prefixId);
220        contact.setSuffixId(suffixId);
221        contact.setMale(male);
222        contact.setBirthday(birthday);
223        contact.setJobTitle(jobTitle);
224
225        contactPersistence.update(contact, false, serviceContext);
226
227        // Group
228
229        groupLocalService.addGroup(
230            user.getUserId(), User.class.getName(), user.getUserId(), null,
231            null, 0, StringPool.SLASH + screenName, false, true, null);
232
233        // Groups
234
235        if (groupIds != null) {
236            groupLocalService.addUserGroups(userId, groupIds);
237        }
238
239        addDefaultGroups(userId);
240
241        // Organizations
242
243        updateOrganizations(userId, organizationIds, false);
244
245        // Roles
246
247        if (roleIds != null) {
248            roleIds = UsersAdminUtil.addRequiredRoles(user, roleIds);
249
250            userPersistence.setRoles(userId, roleIds);
251        }
252
253        addDefaultRoles(userId);
254
255        // User groups
256
257        if (userGroupIds != null) {
258            if (PropsValues.USER_GROUPS_COPY_LAYOUTS_TO_USER_PERSONAL_SITE) {
259                for (long userGroupId : userGroupIds) {
260                    userGroupLocalService.copyUserGroupLayouts(
261                        userGroupId, new long[] {userId});
262                }
263            }
264
265            userPersistence.setUserGroups(userId, userGroupIds);
266        }
267
268        addDefaultUserGroups(userId);
269
270        // Asset
271
272        if (serviceContext != null) {
273            updateAsset(
274                creatorUserId, user, serviceContext.getAssetCategoryIds(),
275                serviceContext.getAssetTagNames());
276        }
277
278        // Indexer
279
280        if ((serviceContext == null) || serviceContext.isIndexingEnabled()) {
281            reindex(user);
282        }
283
284        // Workflow
285
286        long workflowUserId = creatorUserId;
287
288        if (workflowUserId == userId) {
289            workflowUserId = defaultUser.getUserId();
290        }
291
292        ServiceContext workflowServiceContext = serviceContext;
293
294        if (workflowServiceContext == null) {
295            workflowServiceContext = new ServiceContext();
296        }
297
298        workflowServiceContext.setAttribute("autoPassword", autoPassword);
299        workflowServiceContext.setAttribute("sendEmail", sendEmail);
300
301        WorkflowHandlerRegistryUtil.startWorkflowInstance(
302            companyId, workflowUserId, User.class.getName(), userId, user,
303            workflowServiceContext);
304
305        if (serviceContext != null) {
306            String passwordUnencrypted =
307                (String)serviceContext.getAttribute("passwordUnencrypted");
308
309            if (Validator.isNotNull(passwordUnencrypted)) {
310                user.setPasswordUnencrypted(passwordUnencrypted);
311            }
312        }
313
314        return user;
315    }
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 23, 2013 6:57 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

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
Timo Kurowski
RE: Benutzer erzeugen und Rollen zuweisen
August 26, 2013 7:39 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

Ok danke, hat funktioniert mit der addUser Methode.

Sieht jetzt so aus:

 1try {                              
 2            
 3                User user = createPortalUser(request.getParameter("login"), PortalUtil.getCompanyId(request),
 4                           PortalUtil.getUserId(request), PortalUtil.getLocale(request));
 5                System.out.println(user);   
 6               
 7            } catch (Exception e1) {
 8                e1.printStackTrace();
 9                return null;
10            }            


Zu:

 1private User createPortalUser(String userName, final long companyId,
 2            final long userId, final Locale locale) {
 3
 4        User user = null;
 5        try {
 6            user = UserLocalServiceUtil.addUser(userId, companyId, false,
 7                    "ksc", "ksc", false, userName, userName
 8                            + "@liferay.com", 0L, "", locale, userName
 9                            + "firstName", "middleName", userName + "lastName",
10                    0, 0, false, 0, 1, 1970, "Job Title", null, null, null,
11                    null, false, new ServiceContext());
12
13        } catch (Exception e) {
14            System.out.println("Portal user creation failed " + e.getMessage());
15        }
16        return user;
17    }


Jetzt muss ich nur noch einen Weg finden, Rollen zu übergeben.
Timo Kurowski
RE: Benutzer erzeugen und Rollen zuweisen
August 28, 2013 8:57 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

Sooo alles so weit geschafft. Eine letzte Frage:

Ich habe:

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


Funktioniert irgendwie nicht.

Steht auch nicht in der Datenbank, die Frage und Antwort.
Olaf Kock
RE: Benutzer erzeugen und Rollen zuweisen
August 29, 2013 2:46 AM
Answer

Olaf Kock

LIFERAY STAFF

Rank: Liferay Legend

Posts: 1581

Join Date: September 23, 2008

Recent Posts

Mir fehlt da noch ein UserLocalServiceUtil.updateUser(user); am Ende
Timo Kurowski
RE: Benutzer erzeugen und Rollen zuweisen
August 29, 2013 4:29 AM
Answer

Timo Kurowski

Rank: Regular Member

Posts: 166

Join Date: June 24, 2013

Recent Posts

Ja das war es, danke emoticon