Tony CHEMIT pushed to branch develop at ultreiaio / ird-t3
Commits:
-
624ff5bb
by Tony CHEMIT at 2018-02-18T13:34:55+01:00
-
32858eb1
by Tony CHEMIT at 2018-02-18T14:01:16+01:00
-
6c6860d5
by Tony CHEMIT at 2018-02-18T14:02:26+01:00
8 changed files:
- pom.xml
- + t3-web/.mvn/i18n-bundle
- + t3-web/.mvn/i18n-check-i18n-artifacts
- t3-web/pom.xml
- t3-web/src/main/java/fr/ird/t3/web/actions/admin/UserAction.java
- t3-web/src/main/resources/i18n/t3-web_en_GB.properties
- t3-web/src/main/resources/i18n/t3-web_fr_FR.properties
- t3-web/src/main/webapp/WEB-INF/jsp/admin/userForm.jsp
Changes:
| ... | ... | @@ -101,6 +101,7 @@ |
| 101 | 101 |
<applicationName>t3</applicationName>
|
| 102 | 102 |
|
| 103 | 103 |
<t3-data.version>1.2-SNAPSHOT</t3-data.version>
|
| 104 |
+ <env>dev</env>
|
|
| 104 | 105 |
|
| 105 | 106 |
<!-- libraries version -->
|
| 106 | 107 |
|
| ... | ... | @@ -287,6 +288,9 @@ |
| 287 | 288 |
<module>t3-installer</module>
|
| 288 | 289 |
<module>t3</module>
|
| 289 | 290 |
</modules>
|
| 291 |
+ <properties>
|
|
| 292 |
+ <env>prod</env>
|
|
| 293 |
+ </properties>
|
|
| 290 | 294 |
</profile>
|
| 291 | 295 |
|
| 292 | 296 |
<profile>
|
| ... | ... | @@ -33,14 +33,6 @@ |
| 33 | 33 |
<name>T3 :: Web</name>
|
| 34 | 34 |
<description>T3 web application</description>
|
| 35 | 35 |
|
| 36 |
- <properties>
|
|
| 37 |
- |
|
| 38 |
- <i18n.silent>true</i18n.silent>
|
|
| 39 |
- |
|
| 40 |
- <env>dev</env>
|
|
| 41 |
- |
|
| 42 |
- </properties>
|
|
| 43 |
- |
|
| 44 | 36 |
<dependencies>
|
| 45 | 37 |
|
| 46 | 38 |
<!-- sibling dependencies -->
|
| ... | ... | @@ -148,7 +140,6 @@ |
| 148 | 140 |
<artifactId>h2</artifactId>
|
| 149 | 141 |
<scope>runtime</scope>
|
| 150 | 142 |
</dependency>
|
| 151 |
- |
|
| 152 | 143 |
<dependency>
|
| 153 | 144 |
<groupId>org.postgresql</groupId>
|
| 154 | 145 |
<artifactId>postgresql</artifactId>
|
| ... | ... | @@ -270,28 +261,4 @@ |
| 270 | 261 |
|
| 271 | 262 |
</build>
|
| 272 | 263 |
|
| 273 |
- <profiles>
|
|
| 274 |
- |
|
| 275 |
- <profile>
|
|
| 276 |
- <id>do-release</id>
|
|
| 277 |
- <activation>
|
|
| 278 |
- <property>
|
|
| 279 |
- <name>performRelease</name>
|
|
| 280 |
- <value>true</value>
|
|
| 281 |
- </property>
|
|
| 282 |
- </activation>
|
|
| 283 |
- <properties>
|
|
| 284 |
- <env>prod</env>
|
|
| 285 |
- </properties>
|
|
| 286 |
- |
|
| 287 |
- <!--<dependencies>-->
|
|
| 288 |
- <!--<dependency>-->
|
|
| 289 |
- <!--<groupId>org.slf4j</groupId>-->
|
|
| 290 |
- <!--<artifactId>slf4j-jcl</artifactId>-->
|
|
| 291 |
- <!--<scope>runtime</scope>-->
|
|
| 292 |
- <!--</dependency>-->
|
|
| 293 |
- <!--</dependencies>-->
|
|
| 294 |
- </profile>
|
|
| 295 |
- |
|
| 296 |
- </profiles>
|
|
| 297 | 264 |
</project>
|
| ... | ... | @@ -28,6 +28,8 @@ import org.apache.commons.lang3.StringUtils; |
| 28 | 28 |
import org.apache.commons.logging.Log;
|
| 29 | 29 |
import org.apache.commons.logging.LogFactory;
|
| 30 | 30 |
|
| 31 |
+import java.util.Objects;
|
|
| 32 |
+ |
|
| 31 | 33 |
/**
|
| 32 | 34 |
* Action to manage user (create - update - change password,...)
|
| 33 | 35 |
*
|
| ... | ... | @@ -43,6 +45,7 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 43 | 45 |
public static final String BACK_TO_LIST = "backToList";
|
| 44 | 46 |
|
| 45 | 47 |
protected T3User user;
|
| 48 |
+ protected String checkPassword;
|
|
| 46 | 49 |
|
| 47 | 50 |
protected String userEditAction;
|
| 48 | 51 |
|
| ... | ... | @@ -54,6 +57,14 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 54 | 57 |
this.userEditAction = userEditAction;
|
| 55 | 58 |
}
|
| 56 | 59 |
|
| 60 |
+ public String getCheckPassword() {
|
|
| 61 |
+ return checkPassword;
|
|
| 62 |
+ }
|
|
| 63 |
+ |
|
| 64 |
+ public void setCheckPassword(String checkPassword) {
|
|
| 65 |
+ this.checkPassword = checkPassword;
|
|
| 66 |
+ }
|
|
| 67 |
+ |
|
| 57 | 68 |
@Override
|
| 58 | 69 |
public void prepare() throws Exception {
|
| 59 | 70 |
|
| ... | ... | @@ -61,7 +72,11 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 61 | 72 |
if (!StringUtils.isEmpty(userId)) {
|
| 62 | 73 |
|
| 63 | 74 |
// load user
|
| 64 |
- user = getUserService().getUserById(userId);
|
|
| 75 |
+ user = new T3UserImpl();
|
|
| 76 |
+ T3User userById = getUserService().getUserById(userId);
|
|
| 77 |
+ user.setTopiaId(userById.getTopiaId());
|
|
| 78 |
+ user.setAdmin(userById.isAdmin());
|
|
| 79 |
+ user.setLogin(userById.getLogin());
|
|
| 65 | 80 |
}
|
| 66 | 81 |
}
|
| 67 | 82 |
|
| ... | ... | @@ -85,6 +100,10 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 85 | 100 |
log.info("will update user " + t3User.getLogin());
|
| 86 | 101 |
}
|
| 87 | 102 |
|
| 103 |
+ if (!t3User.isAdmin() && getT3Session().getUser().isAdmin() && getT3Session().getUser().getLogin().equals(t3User.getLogin())) {
|
|
| 104 |
+ // never change admin flag on connected user
|
|
| 105 |
+ t3User.setAdmin(true);
|
|
| 106 |
+ }
|
|
| 88 | 107 |
// update user
|
| 89 | 108 |
getUserService().updateUser(t3User);
|
| 90 | 109 |
return SUCCESS;
|
| ... | ... | @@ -112,7 +131,7 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 112 | 131 |
|
| 113 | 132 |
T3User t3User = getUser();
|
| 114 | 133 |
String userLogin = t3User.getLogin();
|
| 115 |
- |
|
| 134 |
+ String userPassword = t3User.getPassword();
|
|
| 116 | 135 |
switch (action) {
|
| 117 | 136 |
|
| 118 | 137 |
case CREATE:
|
| ... | ... | @@ -142,18 +161,26 @@ public class UserAction extends T3ActionSupport implements Preparable { |
| 142 | 161 |
}
|
| 143 | 162 |
}
|
| 144 | 163 |
|
| 145 |
- String userPassword = t3User.getPassword();
|
|
| 146 | 164 |
if (StringUtils.isEmpty(userPassword)) {
|
| 147 | 165 |
|
| 148 | 166 |
// empty user password
|
| 149 |
- addFieldError("user.password",
|
|
| 150 |
- t("t3.error.required.password"));
|
|
| 167 |
+ addFieldError("user.password", t("t3.error.required.password"));
|
|
| 168 |
+ } else {
|
|
| 169 |
+ if (!Objects.equals(checkPassword, userPassword)) {
|
|
| 170 |
+ addFieldError("user.password", t("t3.error.password.mismatch"));
|
|
| 171 |
+ }
|
|
| 151 | 172 |
}
|
| 152 | 173 |
|
| 153 | 174 |
break;
|
| 154 | 175 |
case EDIT:
|
| 155 | 176 |
|
| 156 |
- // at the moment nothing to validate
|
|
| 177 |
+ |
|
| 178 |
+ if (!StringUtils.isEmpty(userPassword)) {
|
|
| 179 |
+ if (!Objects.equals(checkPassword, userPassword)) {
|
|
| 180 |
+ addFieldError("user.password", t("t3.error.password.mismatch"));
|
|
| 181 |
+ }
|
|
| 182 |
+ }
|
|
| 183 |
+ |
|
| 157 | 184 |
break;
|
| 158 | 185 |
case DELETE:
|
| 159 | 186 |
|
| ... | ... | @@ -45,6 +45,7 @@ t3.common.available.vesselSimpleTypes=Types simplifiés de navire disponibles |
| 45 | 45 |
t3.common.available.vessels=Navires disponibles
|
| 46 | 46 |
t3.common.canCreateVessel=Authorise to create vessels
|
| 47 | 47 |
t3.common.catchFleet=Flotte des captures
|
| 48 |
+t3.common.checkPassword=repeat password
|
|
| 48 | 49 |
t3.common.configuration=Préférences
|
| 49 | 50 |
t3.common.countries.to.select=Flottes à selectionner
|
| 50 | 51 |
t3.common.createVirtualVessel=Create virtual vessels
|
| ... | ... | @@ -188,6 +189,7 @@ t3.error.no.zoneVersion.selected=No zone version selected |
| 188 | 189 |
t3.error.parametersProfile.already.used=Le nom de profile de paramètres est déjà utilisé
|
| 189 | 190 |
t3.error.parametersProfile.required.profileDescription=Description du profile non renseigné
|
| 190 | 191 |
t3.error.parametersProfile.required.profileName=Nom du profile non renseigné
|
| 192 |
+t3.error.password.mismatch=Passwords are different
|
|
| 191 | 193 |
t3.error.required.description=No description filled
|
| 192 | 194 |
t3.error.required.file.to.upload=No file to upload selected
|
| 193 | 195 |
t3.error.required.login=No Login filled
|
| ... | ... | @@ -273,7 +275,7 @@ t3.label.export.config.jdbc=Connexion parameters |
| 273 | 275 |
t3.label.export.config.pilot=Output pilot configuration
|
| 274 | 276 |
t3.label.export.config.resume=Configuration summary
|
| 275 | 277 |
t3.label.importData.config.resume=Configuration resume of data import
|
| 276 |
-t3.label.info.changePassword=To change password, fill this field
|
|
| 278 |
+t3.label.info.changePassword=To change password, fill the both password fields
|
|
| 277 | 279 |
t3.label.inprogress=in progress...
|
| 278 | 280 |
t3.label.language=Langue
|
| 279 | 281 |
t3.label.locale.english=English
|
| ... | ... | @@ -45,6 +45,7 @@ t3.common.available.vesselSimpleTypes=Types simplifiés de navire disponibles |
| 45 | 45 |
t3.common.available.vessels=Navires disponibles
|
| 46 | 46 |
t3.common.canCreateVessel=Autoriser la création de bateaux
|
| 47 | 47 |
t3.common.catchFleet=Flotte des captures
|
| 48 |
+t3.common.checkPassword=Répéter le mot de passe
|
|
| 48 | 49 |
t3.common.configuration=Préférences
|
| 49 | 50 |
t3.common.countries.to.select=Flottes à selectionner
|
| 50 | 51 |
t3.common.createVirtualVessel=Créer des bateaux virtuels
|
| ... | ... | @@ -188,6 +189,7 @@ t3.error.no.zoneVersion.selected=Aucune version de zone sélectionnée |
| 188 | 189 |
t3.error.parametersProfile.already.used=Le nom de profile de paramètres est déjà utilisé
|
| 189 | 190 |
t3.error.parametersProfile.required.profileDescription=Description du profile non renseigné
|
| 190 | 191 |
t3.error.parametersProfile.required.profileName=Nom du profile non renseigné
|
| 192 |
+t3.error.password.mismatch=Mots de passe différents
|
|
| 191 | 193 |
t3.error.required.description=Aucune description renseignée
|
| 192 | 194 |
t3.error.required.file.to.upload=Aucun fichier à télécharger sélectionné
|
| 193 | 195 |
t3.error.required.login=Login non renseigné
|
| ... | ... | @@ -273,7 +275,7 @@ t3.label.export.config.jdbc=Paramètres de connexion |
| 273 | 275 |
t3.label.export.config.pilot=Pilote de sortie
|
| 274 | 276 |
t3.label.export.config.resume=Résumé de configuration
|
| 275 | 277 |
t3.label.importData.config.resume=Résumé de la configuration d'import de données
|
| 276 |
-t3.label.info.changePassword=Pour changer de mot de passe, veuillez remplir le champs dédié
|
|
| 278 |
+t3.label.info.changePassword=Pour changer de mot de passe, veuillez remplir les deux champs dédiés
|
|
| 277 | 279 |
t3.label.inprogress=en cours...
|
| 278 | 280 |
t3.label.language=Langue
|
| 279 | 281 |
t3.label.locale.english=Anglais
|
| ... | ... | @@ -24,6 +24,7 @@ |
| 24 | 24 |
<%@ taglib prefix="sjg" uri="/struts-jquery-grid-tags" %>
|
| 25 | 25 |
|
| 26 | 26 |
<s:set var="userIsAdmin" value="%{#session.t3Session.user.admin}"/>
|
| 27 |
+<s:set var="connectedUserLogin" value="%{#session.t3Session.user.login}"/>
|
|
| 27 | 28 |
|
| 28 | 29 |
<s:url id="t3LoadUrl" action="getUserT3Databases" namespace="/json"
|
| 29 | 30 |
escapeAmp="false">
|
| ... | ... | @@ -152,14 +153,19 @@ |
| 152 | 153 |
</legend>
|
| 153 | 154 |
<s:hidden key="user.topiaId" label=""/>
|
| 154 | 155 |
<s:hidden key="user.login" label=""/>
|
| 155 |
- <s:hidden key="user.admin" label=""/>
|
|
| 156 | 156 |
<s:hidden key="userEditAction" label=""/>
|
| 157 | 157 |
<s:textfield key="user.login" label="%{getText('t3.common.login')}"
|
| 158 | 158 |
size="40"
|
| 159 | 159 |
disabled="true"/>
|
| 160 |
- <s:textfield name="user.password" value="" key="t3.common.password"
|
|
| 161 |
- size="40"/>
|
|
| 162 |
- <s:checkbox value="%{user.admin}" key="t3.common.admin" disabled="true"/>
|
|
| 160 |
+ <s:textfield name="user.password" value="" key="t3.common.password" size="40"/>
|
|
| 161 |
+ <s:textfield name="checkPassword" value="" key="t3.common.checkPassword" size="40"/>
|
|
| 162 |
+ <s:if test="userIsAdmin">
|
|
| 163 |
+ <s:checkbox key="user.admin" value="%{user.admin}" label="%{getText('t3.common.admin')}"/>
|
|
| 164 |
+ <s:else>
|
|
| 165 |
+ <s:hidden key="user.admin" label=""/>
|
|
| 166 |
+ <s:checkbox value="%{user.admin}" key="t3.common.admin" disabled="true"/>
|
|
| 167 |
+ </s:else>
|
|
| 168 |
+ </s:if>
|
|
| 163 | 169 |
</fieldset>
|
| 164 | 170 |
<p><s:text name="t3.label.info.changePassword"/></p>
|
| 165 | 171 |
<br/>
|