Fórumok

Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

N. H., módosítva 9 év-val korábban

Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Hallo Zusammen,
ich habe eine ganz neue Liferay Installation mit neuer DB (ohne weitere Daten etc)

Nun wollte ich einen Hook Schreiben der mir folgende Sachen anlegt

- 1 Site mit den Pages Welcome, Page 1, Page 2 etc


Nun brauche ich in dem Hook ja einen User mit dem ich das ganze durchführe kann. Nun habe ich in der Datenbank geschaut und gesehen das ich einen Defaultuser habe und einen User "test" der default User hat eine Zahl als screenname und der andere "test".

Unter welchem User kann ich denn meinen Process ausführen emoticon. Ich bekomme immer eine PermissionException ich habe folgende Zeilen in meinen UpgradeHook eingetragen wobei ich die tatsache das dort die feste Zahl steht nicht toll finde der defaultUser hat bei mir halt den Screenname "10159" aber was ist wenn er in einer anderen Installation eine andere Zahl hat ? Mal ganz davon abgesehen das das ganze noch nicht funktioniert emoticon


User user = UserLocalServiceUtil.getUserByScreenName(companyId, "10159");
PrincipalThreadLocal.setName(user.getUserId());
PermissionChecker permissionChecker =PermissionCheckerFactoryUtil.create(user, true);
PermissionThreadLocal.setPermissionChecker(permissionChecker);

setupGroups(companyId, user.getUserId());




protected void setupGroups(long companyId, long defaultUserId)
	throws Exception {
		
		
		ServiceContext serviceContext = new ServiceContext();
	
		PermissionCheckerFactoryUtil.create(UserLocalServiceUtil.getUserByScreenName(companyId, "10159"));
		Group group = null;
		try{
			group = GroupServiceUtil.getGroup(companyId, "TestGruppe");
			
			
		}catch(Exception e){
			 System.out.println(e.toString());
		}
		if(group==null){
			long groupClassNameId = PortalUtil.getClassNameId(Group.class);
			String className = Group.class.getName();
			group = GroupServiceUtil.addGroup( GroupConstants.DEFAULT_PARENT_GROUP_ID,  GroupConstants.DEFAULT_LIVE_GROUP_ID, "TestGruppe", "TestGruppe site", GroupConstants.TYPE_SITE_RESTRICTED, true, 0, "/TestGruppe", true, true, serviceContext);
			
			}
		List <layout> layouts = LayoutServiceUtil.getLayouts(group.getGroupId(), false);
		boolean welcomeExist = false;
		for(int i = 0;i<layouts.size();i++){ layout tmp="layouts.get(i);" if(tmp.getname().equals("welcome")){ welcomeexist="true;" break; } if(!welcomeexist){ layoutserviceutil.addlayout(group.getgroupid(), false, layoutconstants.default_parent_layout_id, "welcome", "willkommen", "willkommens seite", layoutconstants.type_portlet, " home", servicecontext); < code></layouts.size();i++){></layout>
<br><br><br>Was mache ich falsch ? Mit welchem User kann ich solche initialen Dinge durchführen <img alt="emoticon" src="@theme_images_path@/emoticons/sad.gif"><br><br><br>Lg N.H.
N. H., módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Keiner eine Idee emoticon
thumbnail
Olaf Kock, módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Eine plumpe Idee zum Umgehen der Rechteprüfungen wäre, die jeweils die *LocalServiceUtil Klassen zu verwenden: Diese führen keine Rechteprüfungen aus. Ansonsten gelten immer die Rechte des Benutzers, mit dem die Operationen ausgeführt werden - ein Administrator sollte also in der Lage sein, diese Operationen auszuführen.

Im Falle einer solchen Startup-Action würde ich aber LocalService Aufrufe für durchaus vertretenswert halten.

Alternativ kann ich noch raten, eher eine Upgrade-Action zu implementieren: Diese würde nur ein einziges Mal ausgeführt werden. Ansonsten müsste der Startup-Hook jedes Mal prüfen, ob er (nochmal) laufen soll.
N. H., módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Hallo Olaf,
ich habe das ganze in eine UpgradeAction verpackt so das er das ganze nur einmal ausführt und nicht jedes mal emoticon.

Das was du beschrieben hast kann ich noch nicht ganz nachvollziehen emoticon.

könntest du eventuell anhand meines Quelltextes ein Beispiel nennen wie der dann aussehen müsste ?

Das wäre super emoticon

Viele Grüße,
Natalie
thumbnail
Olaf Kock, módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
z.B. statt GroupServiceUtil.addGroup() einfach GroupLocalServiceUtil.addGroup() benutzen.

Bzw. überall *ServiceUtil durch *LocalServiceUtil ersetzen
N. H., módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Ok super.
Wenn ich das bei der Group mache möchte er eine userId haben. Jetzt habe ich ja nun noch das Problem das ich hart verdrahtet die Zahl beim Screennamen eingetragen habe.

Gibt es einen Benutzer mit einem "Merkmal" der immer angelegt ist ?
thumbnail
Olaf Kock, módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Liferay Legend Bejegyzések: 6403 Csatlakozás dátuma: 2008.09.23. Legújabb bejegyzések
Ich hoffe doch, dass kein Default-Admin existiert (das ist Regel Nummer 1 des "Hardenings". Huch - hab' ich ganz vergessen, bisher im Blog zu erwähnen.

Jan hat aber bereits Code zur Auswahl eines Administrators geliefert. Vielleicht ist das ja geeignet. Ich würde nicht unbedingt den "Guest" user als Besitzer einer Site eintragen. Guest und Default sind die einzigen Benutzer, die standardmäßig existieren. Ich weiss aber nicht, was es für Auswirkungen hat, ihnen "Besitz" an Sites zu übertragen. Normalerweise können die Besitzer einer Site recht weitreichende Änderungen machen.
thumbnail
Jan Geißler, módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

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

long[] companyIds = PortalUtil.getCompanyIds(); //Die kriegst du ja in der StartupAction als Parameter übergeben...
		for (long companyId : companyIds) {
			Role admin = RoleLocalServiceUtil.getRole(companyId, RoleConstants.ADMINISTRATOR);
			List<user> adminUsers =  UserLocalServiceUtil.getRoleUsers(admin.getRoleId());
			if(adminUsers != null &amp;&amp; adminUsers.size() &gt; 0) {
				User adminUserToDoSomethingWith = adminUsers.get(0);
				/**
				 * Now to the work.
				 */
				
			}
		}
</user>


Wahlweise kannst du auch dem PrincipalThread vorgaukeln du wärst ADmin.


PrincipalThreadLocal.setPassword(adminpassword);
PrincipalThreadLocal.setName(name); 


ich glaub name war die Email Adresse.

Vielleicht hilft das ja schon.

Gruß
Jan
N. H., módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Wenn ich den Block einfüge dann gibt er mir trotzdem den defaultUser zurück mit dem hat es ja nicht geklappt emoticon.
thumbnail
Jan Geißler, módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Liferay Master Bejegyzések: 735 Csatlakozás dátuma: 2011.07.05. Legújabb bejegyzések
Wenn der Default User Admin Rechte hat, kommt der raus. Mein Code gibt defacto nur User zurück, die Admin Rechte haben. Allerdings glaube ich, dass dein Problem darin besteht, dass es in der Startup Action ausgeführt wird. Die läuft in einem eigenen Thread, und hat somit auch einen eigenen PermissionThread.
Da müsstest du den PermisisonThread noch sagen. dass der Admin das ausführt.
N. H., módosítva 9 év-val korábban

RE: Hook erstellen der gewisse Struktur beim Start erstellt ? Problem

Junior Member Bejegyzések: 71 Csatlakozás dátuma: 2013.11.14. Legújabb bejegyzések
Ok super vielen Dank hab den Block jetzt etwas angepasst damit hat es geklappt emoticon.

Muss das ganze jetzt noch etwas umbauen aber ich glaube damit komme ich weiter.

Ist zumindest ein Admin standardmäßig schon angelegt ?