Corrigé UserRegister

Ajouté les fonctions correspondantes a SessionService
This commit is contained in:
2008-01-26 17:25:13 +00:00
parent c3098754d2
commit cd32f2f97b
5 changed files with 81 additions and 27 deletions

View File

@@ -6,7 +6,7 @@
<h2><fmt:message key="register.title" /></h2>
<form:form method="post" commandName="registerUser">
<form:hidden path="isNew"/>
<form:label path="login"><fmt:message key="form.register.user.login" /></form:label> <form:input path="login"/> <br/><br />
<form:label path="email"><fmt:message key="form.register.user.email" /></form:label> <form:input path="email"/> <br/><br />

View File

@@ -92,9 +92,10 @@
<property name="commandName" value="registerUser" />
<property name="commandClass"
value="org.yacos.web.system.form.FormUser" />
<property name="formView" value="registerUser" />
<property name="formView" value="registerUser.htm" />
<property name="successView" value="listArticle.htm" />
<property name="usersManager" ref="usersManager" />
<property name="sessionService" ref="sessionService"/>
</bean>
<bean id="SArticleController"

View File

@@ -23,8 +23,18 @@ import org.yacos.web.system.form.FormUser;
*
*/
public class SUserRegistrationController extends SimpleFormController {
private IUserManager usersManager;
private SessionService sessionService;
public SessionService getSessionService() {
return sessionService;
}
public void setSessionService(SessionService sessionService) {
this.sessionService = sessionService;
}
/**
* @see org.springframework.web.servlet.mvc.SimpleFormController#onSubmit(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse, java.lang.Object, org.springframework.validation.BindException)
*/
@@ -37,35 +47,30 @@ public class SUserRegistrationController extends SimpleFormController {
// Tries to retrieve the current user : case of user modification
User user = (User) request.getSession().getAttribute("currentUser");
if((user == null) && (usersManager.getUser(userCommand.getLogin()) != null)){
if( (userCommand.getIsNew()) && (usersManager.getUser(userCommand.getLogin()) != null)){
errors.rejectValue("login", "form.register.error.alreadyExists");
return new ModelAndView(new RedirectView(getFormView()));
}
if(user == null){
user = new User();
if( userCommand.getIsNew() ){
usersManager.addUser(
userCommand.getLogin(),
userCommand.getPassword(),
userCommand.getFirstName(),
userCommand.getLastName(),
userCommand.getOrganization(),
userCommand.getEmail());
} else {
user.setEmail(userCommand.getEmail());
user.setFirstName(userCommand.getFirstName());
user.setLastName(userCommand.getLastName());
user.setOrganization(userCommand.getOrganization());
}
// We should never be able to change the login of an existing user
if(user.getLogin() == null){
user.setLogin(userCommand.getLogin());
}
user.setEmail(userCommand.getEmail());
user.setFirstName(userCommand.getFirstName());
user.setLastName(userCommand.getLastName());
user.setOrganization(userCommand.getOrganization());
if(userCommand.passwordWasModified()){
user.setPassword(userCommand.getPassword());
}
usersManager.addUser(
userCommand.getLogin(),
userCommand.getPassword(),
userCommand.getFirstName(),
userCommand.getLastName(),
userCommand.getOrganization(),
userCommand.getEmail());
return new ModelAndView(new RedirectView(getSuccessView()));
}
@@ -80,10 +85,12 @@ public class SUserRegistrationController extends SimpleFormController {
// We try to see if the user is already registered and logged
User currentUser = new User();
user.setIsNew(true);
// TODO : see how JAAS could change the way of getting the current User
if(request.getSession().getAttribute("currentUser") != null){
if(sessionService.isUserLogged(request)){
// If he is logged, we use his profile information to fill the form
currentUser = (User) request.getSession().getAttribute("currentUser");
currentUser = (User) sessionService.getCurrentUser(request);
user.setIsNew(false);
}
user.setLogin(currentUser.getLogin());
@@ -92,7 +99,7 @@ public class SUserRegistrationController extends SimpleFormController {
user.setEmail(currentUser.getEmail());
user.setOrganization(currentUser.getOrganization());
return super.formBackingObject(request);
return user;
}
public void setUsersManager(IUserManager usersManager) {

View File

@@ -5,6 +5,7 @@ import org.springframework.web.util.WebUtils;
import org.yacos.core.conferences.Conference;
import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.users.IUserManager;
import org.yacos.core.users.User;
/**
* Provides Session related Services
@@ -15,6 +16,9 @@ public class SessionService {
private IConferenceManager conferenceManager;
private IUserManager userManager;
private User currentUser;
private Conference currentConference;
public SessionService(){
}
@@ -44,10 +48,43 @@ public class SessionService {
}
public void setCurrentConference(HttpServletRequest request, Conference c){
currentConference = c;
setCurrentConferenceId(request, c.getId() );
}
public Conference getCurrentConference(HttpServletRequest request){
return conferenceManager.getConference(getCurrentConferenceId(request));
if(currentConference == null){
currentConference = conferenceManager.getConference(getCurrentConferenceId(request));
}
return currentConference;
}
public void setCurrentUser(HttpServletRequest request,User currentUser) {
this.currentUser = currentUser;
this.setCurrentUserLogin(request,currentUser.getLogin());
}
public void setCurrentUserLogin(HttpServletRequest request, String login) {
WebUtils.setSessionAttribute(request, "currentUserLogin", login);
}
public String getCurrentUserLogin(HttpServletRequest request){
return (String)WebUtils.getSessionAttribute(request, "currentUserLogin");
}
public User getCurrentUser(HttpServletRequest request) {
if(currentUser == null){
String login = this.getCurrentUserLogin(request);
if(login == null || login.equals("")){
currentUser = null;
} else {
currentUser = userManager.getUser(login);
}
}
return currentUser;
}
public boolean isUserLogged(HttpServletRequest request){
return getCurrentUser(request) != null;
}
}

View File

@@ -19,6 +19,8 @@ public class FormUser {
private String passwordPlaceholderValue;
private boolean isNew;
public FormUser() {
this.login = "";
this.email = "";
@@ -125,5 +127,12 @@ public class FormUser {
return this.password.equals(this.passwordConfirm);
}
public void setIsNew(boolean isNew) {
this.isNew = isNew;
}
public boolean getIsNew() {
return isNew;
}
}