Foren

Aggiunte UserGroupRole in Listener

thumbnail
Domenico Costa, geändert vor 7 Jahren.

Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 153 Beitrittsdatum: 22.05.12 Neueste Beiträge
Ciao a tutti,

ho un problem sull'aggiunta di uno UserGroupRole.

Ho implementato un Listener che all'update dello User aggiunge un ruolo all'utente. Il Listenr si attiva in onAfterUpdate.

Il problema che il codice si esegue correttamente ma non vedo nessuna modifica, tutto rimane guale. Ho controlato il ruolo, la company id e lo user e sono tutti corretti.

riporto in estratto di codice:



public void onAfterUpdate(User user) throws ModelListenerException {
	try {
	
		long organizationGroupId = 201;
		long [] roleIdList = new 
		UserGroupRoleLocalServiceUtil.addUserGroupRoles(user.getUserId(), organizationGroupId, new long []{124});
	
	
	} catch (Exception e) {
		e.printStackTrace();
	} 
}



Qualcuno sa dirmi perché non ci sono cambiamenti?

Grazie
thumbnail
Marco Azzalini, geändert vor 7 Jahren.

RE: Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 146 Beitrittsdatum: 18.11.14 Neueste Beiträge
Ciao, forse non ho capito io ma, se devi aggiungere un ruolo ad un utente, non è più semplice utilizzare la classe RoleLocalServiceUtil?

RoleLocalServiceUtil.addUserRole(long userId, long roleId)

A parte questo, nel codice che hai copiato c'è un new che proprio non ci sta...
il metodo che hai usato ti restituisce una lista tipizzata (List<UserGroupRole> ) che devi solo referenziare con una variabile.... forse hai copiato una cosa incompleta?

ciao
Marco
thumbnail
Domenico Costa, geändert vor 7 Jahren.

RE: Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 153 Beitrittsdatum: 22.05.12 Neueste Beiträge
Ciao,

si si ho copiato parte del codice. Quello è irrilevnate...

Questi dati devono andare dentro la UserGroupRole.. in modo da referenziarli con il groupId dell'organization. Per questo non ho usato la RoleLocalServiceUtil.

Non capisco infatti perché non li aggiorna..
thumbnail
Marco Azzalini, geändert vor 7 Jahren.

RE: Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 146 Beitrittsdatum: 18.11.14 Neueste Beiträge
Allora non so... dando per scontato che gli id che stai usando siano corretti, il codice dovrebbe andare (perlomeno a me sembra corretto).
Ti posso solo suggerire di:

1) istanziare prima gli oggetti di cui stai usando gli id... magari hanno dei problemi
2) provare ad usare degli id volutamente sbagliati per vedere se ti da delle eccezioni conformi a quello che ti aspetti
3) attivare i log su quei servizi a livello debug, forse scrive qualcosa che ti può indirizzare sulla strada giusta.

ciao
Marco
thumbnail
Domenico Costa, geändert vor 7 Jahren.

RE: Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 153 Beitrittsdatum: 22.05.12 Neueste Beiträge
Ok, faccio una prova istanziando gli oggetti.

Grazie Mille
thumbnail
Domenico Costa, geändert vor 7 Jahren.

RE: Aggiunte UserGroupRole in Listener

Regular Member Beiträge: 153 Beitrittsdatum: 22.05.12 Neueste Beiträge
solto facendo un wrapper estendendo la UserLocalServiceWrapper e facendo un overrie del metodo dell'updateUser.

	@Override
	public User updateUser(long userId, String oldPassword,
			String newPassword1, String newPassword2, boolean passwordReset,
			String reminderQueryQuestion, String reminderQueryAnswer,
			String screenName, String emailAddress, long facebookId,
			String openId, String languageId, String timeZoneId,
			String greeting, String comments, String firstName,
			String middleName, String lastName, int prefixId, int suffixId,
			boolean male, int birthdayMonth, int birthdayDay, int birthdayYear,
			String smsSn, String aimSn, String facebookSn, String icqSn,
			String jabberSn, String msnSn, String mySpaceSn, String skypeSn,
			String twitterSn, String ymSn, String jobTitle, long[] groupIds,
			long[] organizationIds, long[] roleIds,
			List<usergrouprole> userGroupRoles, long[] userGroupIds,
			ServiceContext serviceContext) throws PortalException,
			SystemException {
		
		

		User user = super.updateUser(userId, oldPassword, newPassword1, newPassword2,
				passwordReset, reminderQueryQuestion, reminderQueryAnswer, screenName,
				emailAddress, facebookId, openId, languageId, timeZoneId, greeting,
				comments, firstName, middleName, lastName, prefixId, suffixId, male,
				birthdayMonth, birthdayDay, birthdayYear, smsSn, aimSn, facebookSn,
				icqSn, jabberSn, msnSn, mySpaceSn, skypeSn, twitterSn, ymSn, jobTitle,
				groupIds, organizationIds, roleIds, userGroupRoles, userGroupIds,
				serviceContext);
		
		myUpdate(user);
		
		return user;
	}</usergrouprole>


Ho inserito nel metodo myUpdate l'aggiornamento del ruolo illustrato in precedenza ed ha funzionato. Non so perché nel Listener non va... ma se cosi funziona bene.

Grazie