Introduce warning to change admin password

FEA : ItEr69S06AutocompleteAndPasswords
This commit is contained in:
Susana Montes Pedreira 2011-01-26 16:36:28 +01:00
parent 3d8fd0c218
commit 4e75b89cd9
8 changed files with 139 additions and 4 deletions

View file

@ -72,6 +72,8 @@ public class Configuration extends BaseEntity {
private Boolean generateCodeForCostCategory = true;
private Boolean changedDefaultAdminPassword = false;
private ProgressType progressType = ProgressType.SPREAD_PROGRESS;
private String companyLogoURL = "";
@ -264,4 +266,14 @@ public class Configuration extends BaseEntity {
return companyLogoURL;
}
public void setChangedDefaultAdminPassword(
Boolean changedDefaultAdminPassword) {
this.changedDefaultAdminPassword = changedDefaultAdminPassword;
}
public Boolean getChangedDefaultAdminPassword() {
return changedDefaultAdminPassword == null ? false
: changedDefaultAdminPassword;
}
}

View file

@ -49,4 +49,8 @@ public interface ITemplateModel {
boolean isScenariosVisible();
boolean isChangedDefaultAdminPassword();
String getIdAdminUser();
}

View file

@ -128,4 +128,13 @@ public class TemplateController extends GenericForwardComposer {
public Boolean getScenariosVisible() {
return (templateModel != null) && templateModel.isScenariosVisible();
}
public Boolean getDefaultPasswdVisible() {
return (templateModel != null) && (getIdAdminUser() != null)
&& (!templateModel.isChangedDefaultAdminPassword());
}
public String getIdAdminUser() {
return templateModel.getIdAdminUser();
}
}

View file

@ -27,22 +27,23 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
import java.util.Map.Entry;
import org.apache.commons.lang.Validate;
import org.joda.time.LocalDate;
import org.navalplanner.business.common.IAdHocTransactionService;
import org.navalplanner.business.common.IOnTransaction;
import org.navalplanner.business.common.Registry;
import org.navalplanner.business.common.daos.IConfigurationDAO;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.orders.entities.Order;
import org.navalplanner.business.orders.entities.TaskSource;
import org.navalplanner.business.planner.daos.ITaskSourceDAO;
import org.navalplanner.business.planner.entities.Dependency;
import org.navalplanner.business.planner.entities.Dependency.Type;
import org.navalplanner.business.planner.entities.Task;
import org.navalplanner.business.planner.entities.TaskElement;
import org.navalplanner.business.planner.entities.Dependency.Type;
import org.navalplanner.business.resources.daos.IResourceDAO;
import org.navalplanner.business.scenarios.daos.IOrderVersionDAO;
import org.navalplanner.business.scenarios.daos.IScenarioDAO;
@ -50,6 +51,7 @@ import org.navalplanner.business.scenarios.entities.OrderVersion;
import org.navalplanner.business.scenarios.entities.Scenario;
import org.navalplanner.business.users.daos.IUserDAO;
import org.navalplanner.business.users.entities.User;
import org.navalplanner.web.users.bootstrap.MandatoryUser;
import org.navalplanner.web.users.services.CustomUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
@ -60,11 +62,11 @@ import org.springframework.transaction.annotation.Transactional;
import org.zkoss.ganttz.adapters.PlannerConfiguration;
import org.zkoss.ganttz.data.ConstraintCalculator;
import org.zkoss.ganttz.data.DependencyType;
import org.zkoss.ganttz.data.DependencyType.Point;
import org.zkoss.ganttz.data.GanttDate;
import org.zkoss.ganttz.data.GanttDiagramGraph;
import org.zkoss.ganttz.data.GanttDiagramGraph.IAdapter;
import org.zkoss.ganttz.data.IDependency;
import org.zkoss.ganttz.data.DependencyType.Point;
import org.zkoss.ganttz.data.GanttDiagramGraph.IAdapter;
import org.zkoss.ganttz.data.constraint.Constraint;
import org.zkoss.ganttz.util.LongOperationFeedback;
import org.zkoss.ganttz.util.LongOperationFeedback.IBackGroundOperation;
@ -451,4 +453,22 @@ public class TemplateModel implements ITemplateModel {
return configurationDAO.getConfiguration().isScenariosVisible();
}
@Override
@Transactional(readOnly = true)
public boolean isChangedDefaultAdminPassword() {
return configurationDAO.getConfiguration()
.getChangedDefaultAdminPassword();
}
@Override
@Transactional(readOnly = true)
public String getIdAdminUser() {
String login = MandatoryUser.ADMIN.getLoginName();
try {
return Registry.getUserDAO().findByLoginName(login).getId()
.toString();
} catch (InstanceNotFoundException e) {
return null;
}
}
}

View file

@ -0,0 +1,68 @@
/*
* This file is part of NavalPlan
*
* Copyright (C) 2010-2011 Wireless Galicia, S.L.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.navalplanner.web.common.converters;
import org.navalplanner.business.common.exceptions.InstanceNotFoundException;
import org.navalplanner.business.users.daos.IUserDAO;
import org.navalplanner.business.users.entities.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
* A {@link IConverter} for {@link User} <br />
* @author Susana Montes Pedreira <smontes@wirelessgalicia.com>
*/
@Component
@Scope(BeanDefinition.SCOPE_SINGLETON)
public class UserConverter implements IConverter<User> {
@Autowired
private IUserDAO userDAO;
@Override
@Transactional(readOnly = true)
public User asObject(String stringRepresentation) {
long id = Long.parseLong(stringRepresentation);
try {
return userDAO.find(id);
} catch (InstanceNotFoundException e) {
throw new RuntimeException(e);
}
}
@Override
public String asString(User entity) {
return entity.getId() + "";
}
@Override
public Class<User> getType() {
return User.class;
}
@Override
public String asStringUngeneric(Object entity) {
return asString(getType().cast(entity));
}
}

View file

@ -36,6 +36,8 @@ import org.navalplanner.web.common.MessagesForUser;
import org.navalplanner.web.common.OnlyOneVisible;
import org.navalplanner.web.common.Util;
import org.navalplanner.web.common.components.Autocomplete;
import org.navalplanner.web.common.entrypoints.IURLHandlerRegistry;
import org.navalplanner.web.common.entrypoints.URLHandler;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.util.GenericForwardComposer;
@ -74,11 +76,18 @@ public class UserCRUDController extends GenericForwardComposer implements
private Autocomplete profileAutocomplete;
private IURLHandlerRegistry URLHandlerRegistry;
@Override
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
comp.setVariable("controller", this, true);
messagesForUser = new MessagesForUser(messagesContainer);
final URLHandler<IUserCRUDController> handler = URLHandlerRegistry
.getRedirectorFor(IUserCRUDController.class);
handler.registerListener(this, page);
getVisibility().showOnly(listWindow);
passwordBox = (Textbox) createWindow.getFellowIfAny("password");
passwordConfirmationBox = (Textbox) createWindow.getFellowIfAny("passwordConfirmation");

View file

@ -186,4 +186,9 @@ a.sub_menu:hover {
top:14px;
right:0;
z-index:2;
}
.footer-messages-area {
color: #ffa100;
font-size: 11px;
}

View file

@ -33,9 +33,11 @@
<![CDATA[
contextPath = Executions.getCurrent().getContextPath();
templateCtrl = templateController;
idAdminUser = templateController.getIdAdminUser();
]]>
</zscript>
<div xmlns:n="http://www.zkoss.org/2005/zk/native" apply="${templateCtrl}" height="100%">
<borderlayout height="100%" width="100%" >
@ -124,6 +126,12 @@
<n:td height="40" align="left" valign="bottom">
<n:img height="40" src="${templateCtrl.companyLogoURL}" if="${templateCtrl.companyLogoURL!=''}" />
</n:td>
<n:td>
<div if="${templateCtrl.defaultPasswdVisible}">
<n:span id="footer-messages-area" class="footer-messages-area">${i18n:_('The admin account default password was not changed')}.</n:span>
<n:a href="${contextPath}/users/users.zul#edit%3D${idAdminUser}" class="footer-messages-area">[${i18n:_('Click here')}]</n:a>
</div>
</n:td>
<n:td height="40" align="right" valign="bottom">
<n:img width="110" height="40" src="${contextPath}/common/img/logos_footer_fundacion.png"/>
<n:img width="253" height="40" src="${contextPath}/common/img/logos_footer_administracion.png"/>