);
},
renderAttributes() {
- return this.props.attributes.map((attr) => {
- return (
+ return this.props.attributes.map((attr, index) => {
+ return (
{attr.name}
);
+ value={this.getAttributeValue(attr.name) || ""} />);
});
},
renderSaveButtonContent() {
@@ -201,7 +196,7 @@ const UserDialog = React.createClass({
-
+
} >
{this.renderGeneral()}
@@ -219,6 +214,14 @@ const UserDialog = React.createClass({
);
},
+ isMainPasswordValid(password) {
+ let p = password || this.props.user.newPassword || "";
+ // Empty password field will signal the GeoStoreDAO not to change the password
+ if (p === "") {
+ return true;
+ }
+ return (p.length >= this.props.minPasswordSize) && !(/[^a-zA-Z0-9\!\@\#\$\%\&\*]/.test(p));
+ },
isSaving() {
return this.props.user && this.props.user.status === "saving";
},
@@ -226,23 +229,12 @@ const UserDialog = React.createClass({
return this.props.user && (this.props.user.status === "saved" || this.props.user.status === "created");
},
isValid() {
- let valid = true;
let user = this.props.user;
- if (!user) return false;
- valid = valid && user.name && user.status === "modified" && this.isValidPassword();
- return valid;
+ return user && user.name && user.status === "modified" && this.isValidPassword();
},
isValidPassword() {
- let valid = true;
let user = this.props.user;
- if (user && user.id) {
- if (user.newPassword) {
- valid = valid && (user.confirmPassword === user.newPassword);
- }
- } else {
- valid = valid && user && user.newPassword && (user.confirmPassword === user.newPassword);
- }
- return valid;
+ return user && this.isMainPasswordValid(user.newPassword) && (user.confirmPassword === user.newPassword);
},
handleChange(event) {
this.props.onChange(event.target.name, event.target.value);
diff --git a/web/client/components/manager/users/__tests__/UserDialog-test.jsx b/web/client/components/manager/users/__tests__/UserDialog-test.jsx
index fe09cdcb90..15ba77f9c8 100644
--- a/web/client/components/manager/users/__tests__/UserDialog-test.jsx
+++ b/web/client/components/manager/users/__tests__/UserDialog-test.jsx
@@ -70,16 +70,24 @@ describe("Test UserDialog Component", () => {
, document.getElementById("container"));
expect(comp).toExist();
});
- it('Test isValidPAssword', () => {
+ it('Test isValidPassword', () => {
let comp = ReactDOM.render(
, document.getElementById("container"));
expect(comp).toExist();
+ // valid password, wrong confirm
comp = ReactDOM.render(
- , document.getElementById("container"));
+ , document.getElementById("container"));
expect(comp).toExist();
expect(comp.isValidPassword()).toBe(false);
+ // Valid password
comp = ReactDOM.render(
- , document.getElementById("container"));
+ , document.getElementById("container"));
expect(comp.isValidPassword()).toBe(true);
+ // Invalid password, correct confirm
+ comp = ReactDOM.render(
+ , document.getElementById("container"));
+ expect(comp).toExist();
+ expect(comp.isValidPassword()).toBe(false);
+
});
});
diff --git a/web/client/components/maps/forms/Metadata.jsx b/web/client/components/maps/forms/Metadata.jsx
index 208381320a..b6b330197b 100644
--- a/web/client/components/maps/forms/Metadata.jsx
+++ b/web/client/components/maps/forms/Metadata.jsx
@@ -5,13 +5,6 @@
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree.
*/
- /**
- * Copyright 2016, GeoSolutions Sas.
- * All rights reserved.
- *
- * This source code is licensed under the BSD-style license found in the
- * LICENSE file in the root directory of this source tree.
- */
const React = require('react');
const {FormControl, FormGroup, ControlLabel} = require('react-bootstrap');
@@ -49,7 +42,6 @@ const Metadata = React.createClass({
{this.props.nameFieldText}
{this.props.descriptionFieldText}
= this.props.minPasswordSize ? "success" : "error";
-
+ return this.isMainPasswordValid() ? "success" : "error";
},
renderWarning() {
if (!this.state.password) {
@@ -66,6 +64,8 @@ const PasswordReset = React.createClass({
let pw = this.state.password;
if (pw !== null && pw.length < this.props.minPasswordSize && pw.length > 0) {
return ;
+ } else if (!this.isMainPasswordValid()) {
+ return ;
} else if (pw !== null && pw !== this.state.passwordcheck ) {
return ;
}
@@ -87,7 +87,6 @@ const PasswordReset = React.createClass({