EJB pas injecté dans mon DAO
Bonjour,
je suis entrain de realisé une application web EJB / ICEFaces ,je travaille avec Spring security . au début j'ai essayé le Tutorial fournit de Icefaces sur spring security . le probleme c'est que dans mon cas les rôles sont dynamique en plus dans ma page login il ya information . je vous explique :
1 - l'utilisateur doit saisie son login , password et l'établissement qu'il est affecté
2 - vérification login et password sur le serveur LDAP
3 - vérification si l'utilisateur est bien assigné a cette établissement (interoger la base de donnée)
4 - récupérer les rôles pour cet utilisateur
chaque utilisateur est affecté a un ou plusieurs établissement et dans chaque établissement il a des rôles spécifique .
chaque rôles est spécifique pour des méthodes et des menus
bon j'ai 3 tables dans ma base de données :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| TABLE USER_ETAB
("USER_NAME" VARCHAR2(30),
"COD_ETAB" VARCHAR2(30)
CONSTRAINT "USER_ETAB_PK" PRIMARY KEY ("USER_NAME", "COD_ETAB") )
* TABLE ROLE_ETAB : roles pour chaque etablissement
( "COD_ETAB" VARCHAR2(30),
"COD_ROLE" VARCHAR2(30),
CONSTRAINT "ROLE_ETAB_PK" PRIMARY KEY ("COD_ETAB", "COD_ROLE"))
* TABLE ROLE_PROC : affectation les menus pour chaque roles
( "COD_ROLE" VARCHAR2(30 BYTE),
"MENU" VARCHAR2(50 BYTE),
CONSTRAINT "ROLE_PROC_PK" PRIMARY KEY ("COD_ROLE", "MENU")
* TABLE ROLE_USER_ETAB : affectation rôles user établissement
( "USER_NAME" VARCHAR2(30 BYTE),
"COD_ETAB" VARCHAR2(30 BYTE),
"COD_ROLE" VARCHAR2(30 BYTE),
CONSTRAINT "RGA_AFF_USER_ROLE_ETAB_PK" PRIMARY KEY ("USER_NAME", "COD_ETAB", "COD_ROLE") |
les données de c'est tables sont modifiables a partir d'une application de paramétrage .
j'ai essayé d'adapté le code fournie en Tutorial pour mes besoin mes j'ai pas réussit
ma page login :
Code:
1 2 3 4 5 6 7 8
| <ice:form id="form1">
<ice:commandButton action="#{login.Connecter}" value="Se Connecter"/>
<ice:commandButton id="button2" value="Annuler"/>
<ice:inputText id="j_username" required="true" value="#{login.userName}"/> <ice:inputSecret id="j_password" required="true" value="#{login.passWord}"/>
<ice:selectOneMenu id="j_etab" partialSubmit="true" value="#{login.etab}">
<f:selectItems id="j_etab_item" value="#{ApplicationBean1.centreEtabList}"/>
</ice:selectOneMenu>
</ice:form> |
ApplicationBean1 est un managedBean ds le quel j'ai initialisé une liste des centre Etablisement "centreEtabList" a partir d'un session Bean .
login.java :
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
| public class login extends AbstractPageBean {
private String userName;
private String passWord;
private String etab;
@EJB
private UserEtabFacadeLocal affUserEtab;
@EJB
private EtablissementFacadeLocal rgaEtab;
@EJB
private RoleProcFacadeLocal affUserRole;
public String getEtab() {
return etab;
}
public void setEtab(String etab) {
this.etab = etab;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public login() {
System.out.println("init page");
Exception ex = (Exception) FacesContext
.getCurrentInstance()
.getExternalContext()
.getSessionMap()
.get(AbstractProcessingFilter.SPRING_SECURITY_LAST_EXCEPTION_KEY);
if (ex != null)
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(FacesMessage.SEVERITY_ERROR, ex
.getMessage(), ex.getMessage()));
}
public String Connecter() throws IOException
{
String resultat="Succées";
libEtab = findLibEtablissement ();
System.out.println("Etablissment code : "+etab);
System.out.println("User Name : "+userName);
System.out.println("Mot de Pass : "+passWord);
boolean flag = ConnectionLdap(userName,passWord);
if (flag) {
boolean flag1 =userEatbTest (userName,etab);
if (flag1) {
System.out.println("Redirection ");
FacesContext.getCurrentInstance().getExternalContext().redirect("/RP/j_spring_security_check?j_username=" + userName + "&j_password=" + passWord);
}
}
return resultat;
}
public boolean ConnectionLdap (String user,String pass){
boolean flag=false;
try {
LdapDao ldapdao = UtilsLdap.getServiceLdap();
flag = ldapdao.authentif(userName, passWord);
return flag;
} catch (IOException ex) {
Logger.getLogger(login.class.getName()).log(Level.SEVERE, null, ex);
}
return flag;
}
public boolean userEatbTest (String userName, String etab){
boolean flag=false;
Long count = affUserEtab.findUserEtab(userName, etab);
System.out.println("count :"+count);
if ( count == 0)
flag =false;
else
flag =true;
return flag;
}
public String logout() throws java.io.IOException {
FacesContext.getCurrentInstance().getExternalContext().redirect("/j_spring_security_logout");
return "";
}
}
dans class UserDaoImpl
public class UserDaoImpl implements UserDao {
@EJB
private RoleProcFacadeLocal affUserRole;
public AppUser findUser(String userName) {
//login loginBean = (login) (getBean("login"));
login loginBean = (login) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("login");
AppUser appUser = null;
System.out.println("Loing etablissement ...."+loginBean.getEtab());
Set<String> roles = new HashSet<String>();
List<String> listRole= affUserRole.findUserRole(userName,loginBean.getEtab());
for (String i : listRole)
{
roles.add(i);
}
appUser = new AppUser(userName, "", "", "test", roles);
return appUser;
} |
a l'exécution :
Code:
1 2 3
| ERROR [[default]] "Servlet.service()" pour la servlet default a généré une exception
java.lang.NullPointerException
at com.idee.security.UserDaoImpl.findUser(UserDaoImpl.java:18) |
:(:(:(:(:(:(:(:(