Précédent   Forum du club des développeurs et IT Pro > Java > Développement Web en Java > Portails
Portails Forum d'entraide sur les Portlets (JSR 168 / JSR 286) et les solutions Java de type portail (GateIn, Liferay, JBoss Portal, eXo Platform, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/04/2012, 21h31   #1
alen22
Candidat au titre de Membre du Club
 
franco
Inscription : mars 2011
Messages : 230
Détails du profil
Informations personnelles :
Nom : franco

Informations forums :
Inscription : mars 2011
Messages : 230
Points : 13
Points : 13
Par défaut Authentification

Bonjour,

Je travaille avec Liferay 6.0.6 bundle avec JBoss et j'aimerais savoir comment récupérer les cordonnées d'un utilisateur connecté à travers Liferay ?

Merci d'avance pour votre aide.
alen22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2012, 11h37   #2
othman3535
Nouveau Membre du Club
 
Othman
Inscription : décembre 2009
Messages : 72
Détails du profil
Informations personnelles :
Nom : Othman

Informations forums :
Inscription : décembre 2009
Messages : 72
Points : 29
Points : 29
Bonjour,

Essai avec ça :
Code :
1
2
3
4
5
6
7
8
9
10
    FacesContext fc = FacesContext.getCurrentInstance();
    ExternalContext externalContext = fc.getExternalContext();
    Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
    try {
         user = UserLocalServiceUtil.getUserById(id);
    } catch (PortalException e) {
         e.printStackTrace();
    } catch (SystemException e) {
         e.printStackTrace();
    }
Alors ici on récupère l'objet user qui contient toutes les info sur l'utilisateur courant.
othman3535 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2012, 13h37   #3
alen22
Candidat au titre de Membre du Club
 
franco
Inscription : mars 2011
Messages : 230
Détails du profil
Informations personnelles :
Nom : franco

Informations forums :
Inscription : mars 2011
Messages : 230
Points : 13
Points : 13
merci pour votre réponse,

mais j'ai une question peut être débutant pour une personne qui a déjà travailler avec liferay

mon but est de faire l'authentification et faire la redirection vers les pages jsp selon le role d'utilisateur

je travail avec liferay 6.0.6 bundle with jboss et je fait relier liferay avec mysql

je travail avec la table User de liferay mais je travail avec ma propre table role et n'est pas utiliser la table role de liferay ( car franchement peut être je me trouve perdus si j'utilise role proposé par liferay à moin que vous m'aider à faire tourner mon exemple selon la table user et role proposé par liferay en ajoutant role depuis l'interface de liferay)

dans mon application JEE ( faite avec EJB3 et struts2) qui doit etre déployé dans liferay je juste creer dans la partie EJB la class persistence role avec le dao local et remote

et dans le projet web : dans une class testAction


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
import com.liferay.portal.model.User;
import com.liferay.portal.util.PortalUtil;
 
public class testAction extends ActionSupport{
 
 
	private static final long serialVersionUID = 1L;
 
private RoleDaoRemote RoleDao;
 
 
public RoleDaoRemote getRoleDao() {
		return roleDao;
	}
 
	public void setRoleDao(RoleDaoRemote roleDao) {
		this.roleDao = roleDao;
	}
 
 public testAction() {
    	try {
 
 
 
    		Context context=new InitialContext();
			setRoleDao((RoleDaoRemote) context.lookup("emp"));
 
 
		} catch (Exception e) {
			e.printStackTrace();
		}
 
    } 
 
 
public String Authentification()
	{
 
 
//ici c'est la plus importante partie 
 
//  je dois récupérés les utilisateurs depuis la base de donnés ( depuis la 
 
//table user de liferay) puisque mon application pointe aussi dans la même
 
 //base que liferay  c'est à dire mon application ajoute une table role (appele
 
 //marole) au autre tables qui sont créer par défaut en liant liferay à MYSQL 
 
 
//après la récupération des utilisateurs de la base de donné je dois récupérer
 
 
 //aussi les roles depuis ma propre table role de la base de donnés 
 
 
//comparant les valeurs saisis ( mail et login) avec les valeurs récupérés et 
 
//avec role affecter pour cette utilisateurs à ce moment je dois faire la 
 
//redirection qui est faite dans le fichier struts.xml  selon la valeur de retour 
 
 
 
 
return "success"  // c'est un exemple de valeur retourné
 
 
}
 
 
 
 
 
}



pour résumer je vous donne un scenario de test

supposant que mon application JEE (EJB3 et struts2) j'ai deux role( consultant et directeur) et deux utilisateur

(nom : alen , email : alen@test.org ,login : alenalen , role : consultant)

(nom : jirard , email : jirard@verif.fr , login jirardjirard ,role : directeur)


pour le consultant j'ai deux pages jsp ( consult.jsp et verification.jsp)
et pour le directeur j'ai deux pages jsp ( manage.jsp et edit.jsp)


après déployé cette application dans liferay et après faire exécuter liferay et dans la page d'authentification de liferay

si je tape pour email : alen@test.org et pour le login : alenalen

je dois entrer comme un consultant pour mon application c'est à dire je dois trouver seulement ces deux pages jsp : consult.jsp et verification.jsp


merci d'avance
alen22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2012, 14h03   #4
alen22
Candidat au titre de Membre du Club
 
franco
Inscription : mars 2011
Messages : 230
Détails du profil
Informations personnelles :
Nom : franco

Informations forums :
Inscription : mars 2011
Messages : 230
Points : 13
Points : 13
mon but est de récupérer l'utilisateur après authentification
Je peux le faire cette Récupération à travers une page jsp

Code :
1
2
3
4
5
6
7
8
9
 
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/theme" prefix="liferay-theme" %>
<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>
 
<liferay-theme:defineObjects />
<portlet:defineObjects />
 
<liferay-ui:user-display userId="<%= user.getUserId() %>" />
mais je veux faire la même chose mais à travers le code Java



Je vais vous montrer pourquoi je veux Récupérez l'utilisateur connecté, après authentification via liferay

mon application JEE est développé avec Struts2 et contient deux profils (ou rôles)
: Consultant et Directeur

et dans cette application, je ne créé pas la page jsp pour l'authentification parce que je utiliser l'authentification de liferay (c'est le concept de SSO)

et je travaille avec la table user qui est généré automatiquement par liferay

Donc, dans mon application JEE je dois récupérer l'utilisateur connecté et je dois tester son rôle:
s'il est directeur donc je dois voir seulement les pages jsp de directeur et de la même manière pour le rôle de consultant


Donc, je dois le faire la recupération dans le code java: je parle de l'utilisateur connecté sans aucune action dans ma portlet déployé


l'objet utilisateur qui est déclaré dans ma classe Java doit être rempli à travers la page login.jsp de liferay (cette page JSP est pour l'authentification)


Ainsi, le senario test final:

J'ai deux utilisateurs dans ma base de données:

Nom: Franco, e-mail: franco@test.org, login: Franco, Rôle: Directeur
Nom: Email adam: f@test.org, login: Adam, Rôle: Consultant

et après le déploiement de mon apllication JEE dans liferay

si je fait l'authentification avec franco@test.org et pour login: franco

J'ai dois trouver dans l'application déployée uniquement les pages JSP pour le directeur


pour faire ce scénario je fais dans une classe java de mon application

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import com.liferay.portal.model.User;
public class extends testAction ActionSupport {
 
 
      private User user;
public void processAction (
ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException {
try {
     user = PortalUtil.getUser (actionRequest);
 
} Catch (e PortalException) {
    / / TODO Auto-generated catch block
    e.printStackTrace ();
} Catch (SystemException e) {
    / / TODO Auto-generated catch block
    e.printStackTrace ();
}
}
 
 
 
public String initial() throws Exception {
 
user = PortalUtil.getUser (actionRequest);
if (user.getRole (). equals ("director"))
return "AuthDirector";
 
return "AuthoConsultant";
    }
 
 
}
et pour le fichier struts.xml

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<? Xml version = "1.0" encoding = "UTF-8"?>
<! DOCTYPE struts PUBLIC
    "- / / Apache Software Foundation / / DTD Struts Configuration 2.0 / / EN"
    "Http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
<package name="view" extends="struts-portlet-default" namespace="/view">
 
<action name="initial class="com.test.action.testAction" method="">
 
<result name="AuthDirector"> / WEB-INF/view/HomeDirector.jsp </ result>
 
<result name="AuthoConsultantr"> / WEB-INF/view/HomeConsultant.jsp </ result>
</ Action>
 
</ Package>
</ Struts>

je fait autre test sans success

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import com.liferay.portal.model.User;
public class extends testAction ActionSupport {
 
 
  private User user;
 
FacesContext fc = FacesContext.getCurrentInstance();
         ExternalContext externalContext = fc.getExternalContext();
         Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
 
public String initial() throws Exception {
 
user = UserLocalServiceUtil.getUserById(id);
if (user.getRole (). equals ("director"))
return "AuthDirector";
 
return "AuthoConsultant";
    }
 
 
}


merci d'avance
alen22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/05/2012, 12h43   #5
othman3535
Nouveau Membre du Club
 
Othman
Inscription : décembre 2009
Messages : 72
Détails du profil
Informations personnelles :
Nom : Othman

Informations forums :
Inscription : décembre 2009
Messages : 72
Points : 29
Points : 29
Bonjour alen22,
Si tu veux récupérer l'utilisateur courant, je te propose de creer un classe currentUser qui va recuperer l'objet "User" de liferay comme ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.User;
import com.liferay.portal.service.UserLocalServiceUtil;

import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

public class CurrentUser {

	public User getCurrentUser() {
		User user = null;
	     FacesContext fc = FacesContext.getCurrentInstance();
	     ExternalContext externalContext = fc.getExternalContext();
	     Long id = Long.parseLong(externalContext.getUserPrincipal().getName());
	     try {
			user = UserLocalServiceUtil.getUserById(id);

		} catch (PortalException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SystemException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	     return user;
	}

}
alors dans ta page jsp il suffit d'instancier un objet user comme ceci :
Code :
1
2
3
 
CurrentUser currentUser=new CurrentUser ();
User user=currentUser.getCurrentUser();
alors test ce que j'ai fait, et si ça marche je vais te montrer comment tu recupere le/les role(s) de ce user..
bonne chance
othman3535 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 12h43.


 
 
 
 
Partenaires

Hébergement Web