Commit f31c3c31 by Tuomas Riihimäki

Changed login and logout tags to jaas. Added new user creation hash function. Cl…

…eaned Session handler to JAAS type of authentication
1 parent f34c2f7d
...@@ -148,4 +148,10 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl ...@@ -148,4 +148,10 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal, SessionHandl
foo.add("admin"); foo.add("admin");
return foo.elements(); return foo.elements();
} }
@Override
public User getCurrentUser() {
// TODO Auto-generated method stub
return null;
}
} }
...@@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory; ...@@ -11,6 +11,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
import fi.insomnia.bortal.utilities.PasswordFunctions;
/** /**
* Session Bean implementation class UserBean * Session Bean implementation class UserBean
...@@ -39,8 +40,8 @@ public class UserBean implements UserBeanLocal { ...@@ -39,8 +40,8 @@ public class UserBean implements UserBeanLocal {
User returnUser = new User(); User returnUser = new User();
returnUser.setNick(nick); returnUser.setNick(nick);
// TODO: Hash function.... String salted = PasswordFunctions.createPassword(password);
returnUser.setPassword(password); returnUser.setPassword(salted);
// Tallennetaan olio kantaan... // Tallennetaan olio kantaan...
userFacade.create(returnUser); userFacade.create(returnUser);
return returnUser; return returnUser;
......
...@@ -4,7 +4,6 @@ import javax.ejb.LocalBean; ...@@ -4,7 +4,6 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
......
...@@ -9,15 +9,10 @@ public interface SessionHandlerBeanLocal { ...@@ -9,15 +9,10 @@ public interface SessionHandlerBeanLocal {
boolean hasPermission(String target, User user, RolePermission permission); boolean hasPermission(String target, User user, RolePermission permission);
/**
*
* @param username
* @param password
* @return User on success, null on fail
*/
User tryLogin(String username, String password);
User getDefaultUser(); User getDefaultUser();
void testing(); void testing();
User getCurrentUser();
} }
...@@ -79,4 +79,11 @@ public class PasswordFunctions { ...@@ -79,4 +79,11 @@ public class PasswordFunctions {
} }
return sb.toString(); return sb.toString();
} }
public static String createPassword(String password) {
// TODO Auto-generated method stub
return null;
}
} }
...@@ -11,21 +11,19 @@ ...@@ -11,21 +11,19 @@
<ui:define name="header">Add new user</ui:define> <ui:define name="header">Add new user</ui:define>
<ui:define name="content"> <ui:define name="content">
<
<form method="post" action="j_security_check"> <form method="post" action="j_security_check">
<table border="0"> <h:panelGrid columns="2">
<tr> <h:outputText value="#{i18n['login.username']}" />
<td>#{i18n['login.username']}</td> <input type="text" name="j_username" />
<td><input type="text" name="j_username" /></td>
</tr>
<tr>
<td>#{i18n['login.password']}</td>
<td><input type="password" name="j_password" /></td>
</tr>
</table>
<input type="submit" value="#{i18n['login.submit']}" />
<h:outputText value="#{i18n['login.password']}" />
<input type="password" name="j_password" />
</h:panelGrid>
<h:outputText>
<input type="submit" value="#{i18n['login.submit']}" />
</h:outputText>
</form> </form>
</ui:define> </ui:define>
<ui:define name="footer">footer</ui:define> <ui:define name="footer">footer</ui:define>
</ui:composition> </ui:composition>
......
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
<ui:define name="title">CreateUser</ui:define> <ui:define name="title">CreateUser</ui:define>
<ui:define name="header">Add new user</ui:define> <ui:define name="header">Add new user</ui:define>
<ui:define name="content"> <ui:define name="content">
Logged out.${userView.logout() } <h:outputText value="#{i18n['logoutmessage'] }" />
${userView.logout() }
</ui:define> </ui:define>
<ui:define name="footer">footer</ui:define> <ui:define name="footer">footer</ui:define>
</ui:composition> </ui:composition>
......
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<div id="links"> <div id="links">
<!-- **** INSERT LINKS HERE **** --> <!-- **** INSERT LINKS HERE **** -->
<ui:insert name="somelinks"> <ui:insert name="somelinks">
<a href="http://www.insomnia.fi">www.insomnia.fi</a> <a href="http://www.insomnia.fi">www.insomnia.fi</a> <tools:loginLogout />
</ui:insert> </ui:insert>
</div> </div>
<div id="logo"><h1><ui:insert name="globaltitle">Lan Bortal</ui:insert></h1></div> <div id="logo"><h1><ui:insert name="globaltitle">Lan Bortal</ui:insert></h1></div>
...@@ -79,8 +79,7 @@ ...@@ -79,8 +79,7 @@
<div id="column2"> <div id="column2">
<h:messages globalOnly="true"/> <h:messages globalOnly="true"/>
<tools:loginLogout /><br />
<ui:insert name="content"> <ui:insert name="content">
Default content.. Default content..
</ui:insert> </ui:insert>
......
...@@ -14,26 +14,30 @@ ...@@ -14,26 +14,30 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:form> <form>
<c:choose> <c:choose>
<c:when test="#{not empty cc.attrs.isOneliner}"> <c:when test="#{not empty cc.attrs.isOneliner}">
<h:inputText value="#{sessionHandler.username}" /> <input type="text" name="j_username" />
<h:inputSecret value="#{sessionHandler.password}" /> <input type="password" name="j_password" />
<h:commandButton value="#{i18n['login.submit']}" action="#{sessionHandler.login}" /> <input type="submit" value="#{i18n['login.submit']}" />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<h:panelGrid columns="2"> <h:panelGrid columns="2">
<h:outputText value="#{i18n['login.username']}" /> <h:inputText value="#{sessionHandler.username}" /> <h:outputText value="#{i18n['login.username']}" />
<h:outputText value="#{i18n['login.password']}" /> <h:inputSecret value="#{sessionHandler.password}" /> <input type="text" name="j_username" />
<h:commandButton value="#{i18n['login.submit']}" action="#{sessionHandler.login}" />
<h:outputText value="#{i18n['login.password']}" />
<input type="password" name="j_password" />
</h:panelGrid> </h:panelGrid>
<input type="submit" value="#{i18n['login.submit']}" />
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</h:form> </form>
</composite:implementation> </composite:implementation>
......
...@@ -27,8 +27,6 @@ public class SessionHandler { ...@@ -27,8 +27,6 @@ public class SessionHandler {
@EJB @EJB
private SessionHandlerBeanLocal handlerbean; private SessionHandlerBeanLocal handlerbean;
private User user = null; private User user = null;
private String username = "";
private String password = "";
/** Creates a new instance of SessionHandler */ /** Creates a new instance of SessionHandler */
public SessionHandler() { public SessionHandler() {
...@@ -46,17 +44,24 @@ public class SessionHandler { ...@@ -46,17 +44,24 @@ public class SessionHandler {
return hasPermission(target, perm); return hasPermission(target, perm);
} }
public String getHostname() private HttpSession getHttpSession() {
{
FacesContext ctx = FacesContext.getCurrentInstance(); FacesContext ctx = FacesContext.getCurrentInstance();
HttpSession sess =(HttpSession) ctx.getExternalContext().getSession(false); HttpSession sess = (HttpSession) ctx.getExternalContext().getSession(false);
return HostnameFilter.getHostname(sess); return sess;
}
public String getHostname() {
HttpSession sess = getHttpSession();
String ret = "";
if (sess != null) {
ret = HostnameFilter.getHostname(getHttpSession());
}
return ret;
} }
public boolean hasPermission(String target, RolePermission permission) { public boolean hasPermission(String target, RolePermission permission) {
return true; return handlerbean.hasPermission(target, getUser(), permission);
// return handlerbean.hasPermission(target, getUser(), permission);
} }
...@@ -73,60 +78,31 @@ public class SessionHandler { ...@@ -73,60 +78,31 @@ public class SessionHandler {
} }
public void setUser(User user) { public void setUser(User user) {
this.user = user; if (user == null) {
this.user = getUser();
} else if (canExecute("impersonateUser")) {
this.user = user;
}
} }
public User getUser() { public User getUser() {
if (user == null) { if (user == null) {
user = handlerbean.getDefaultUser(); user = handlerbean.getCurrentUser();
} }
return user; return user;
} }
public String logout() { public String logout() {
user = null; user = null;
return "logout"; FacesContext ctx = FacesContext.getCurrentInstance();
} HttpSession sess = (HttpSession) ctx.getExternalContext().getSession(false);
if (sess != null) {
public String login() { sess.invalidate();
user = handlerbean.tryLogin(username, password);
if (user == null) {
return "loginFailed";
} else {
return "loginSuccess";
} }
} return "logout";
/**
* @return the username
*/
public String getUsername() {
return username;
}
/**
* @param username the username to set
*/
public void setUsername(String username) {
this.username = username;
}
/**
* @return the password
*/
public String getPassword() {
return password;
}
/**
* @param password the password to set
*/
public void setPassword(String password) {
this.password = password;
} }
} }
...@@ -119,14 +119,5 @@ public class UserView { ...@@ -119,14 +119,5 @@ public class UserView {
return sessionhandler; return sessionhandler;
} }
public void logout() {
FacesContext ctx = FacesContext.getCurrentInstance();
HttpSession sess = (HttpSession) ctx.getExternalContext().getSession(false);
if(sess != null)
{
logger.warn("Inalidating session");
sess.invalidate();
}
}
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!