diff --git a/front-api/controllers/user.rb b/front-api/controllers/user.rb
index 56b8be9..f2a0338 100644
--- a/front-api/controllers/user.rb
+++ b/front-api/controllers/user.rb
@@ -12,7 +12,7 @@ post '/user' do
user.from_json(json, false)
if user.save
- "ok"
+ {:status => "ok"}.to_json
else
status 400
user.errors.to_json
diff --git a/front-ui/app/components/account/register.js b/front-ui/app/components/account/register.js
index f9f8204..de05990 100644
--- a/front-ui/app/components/account/register.js
+++ b/front-ui/app/components/account/register.js
@@ -91,17 +91,32 @@ var Register = React.createClass({
},
validations: {
firstName: function(value) {
- var errors = [];
if (!value || value === '') {
- errors.push("Ime je obavezno.");
+ return ["Ime je obavezno."];
+ }
+ },
+ password: function(value, callback) {
+ if(value === undefined || value === "") {
+ return ["Šifra je obavezna."];
+ }
+
+ if (value.length < 6) {
+ return ["Šifra mora sadržavati minimalno 6 karaktera."]
+ }
+
+ if (callback) {
+ callback([], ["passwordConfirmation"]);
+ }
+ },
+ passwordConfirmation: function(value) {
+ if (this.getState().password !== value) {
+ return ["Šifre se ne podudaraju."];
}
- return errors;
},
lastName : function(value) {
- if (value === 'Dazdarevic') {
- return ["You're the owner!"];
+ if (!value || value === '') {
+ return ["Prezime je obavezno."];
}
- return [];
},
_emailRe: /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
_emailTimeoutId: null,
@@ -125,6 +140,7 @@ var Register = React.createClass({
//}
//}.bind(this), 1000);
+
} else {
return ['Neispravna email adresa.'];
}
@@ -196,13 +212,17 @@ var Register = React.createClass({
@@ -218,7 +238,10 @@ var Register = React.createClass({
diff --git a/front-ui/app/components/shared/mixins/ribicaValidationMixin.js b/front-ui/app/components/shared/mixins/ribicaValidationMixin.js
index b618919..86e66a7 100644
--- a/front-ui/app/components/shared/mixins/ribicaValidationMixin.js
+++ b/front-ui/app/components/shared/mixins/ribicaValidationMixin.js
@@ -1,40 +1,54 @@
var RibicaValidationMixin = {
- _updateState: function(prop, value) {
+ _updateState: function(prop, value, callback) {
var newState = {};
newState[prop] = value;
- this.setState(newState);
+ this.setState(newState, function(){
+ if(callback) {
+ callback();
+ }
+ }.bind(this));
},
_validate: function(prop, value) {
if(this.validations && this.validations[prop]) {
- var cb = function(err) {
+ var cb = function(err, revalidateFields) {
+ var errors = this.state.errors;
if (err !== undefined) {
- var errors = this.state.errors;
if(err.length > 0) {
errors[prop] = err;
} else {
delete errors[prop];
}
- this.setState({errors: errors});
+ } else {
+ delete errors[prop];
+ }
+ this.setState({errors: errors});
+ if (revalidateFields) {
+ for(var i = 0; i < revalidateFields.length; i++) {
+ this.validateField(revalidateFields[i], this.state[revalidateFields[i]]);
+ }
}
}.bind(this);
var immediateErrors = this.validations[prop](value, cb);
- if(immediateErrors !== undefined) {
- cb(immediateErrors);
- }
+ cb(immediateErrors);
}
},
handleChange: function(prop) {
return function(event) {
event.preventDefault();
- this._updateState(prop, event.target.value);
- this._validate(prop, event.target.value);
+ var target = event.target;
+ this._updateState(prop, target.value, function(){
+ this._validate(prop, target.value);
+ }.bind(this));
}.bind(this);
},
getValidationMessages:function(prop) {
return (this.state.errors[prop] || []);
},
+ validateField: function(field) {
+ this._validate(field, this.state[field]);
+ },
validate: function() {
for (var key in this.state) {
if (this.state.hasOwnProperty(key)) {
@@ -45,7 +59,15 @@ var RibicaValidationMixin = {
},
isValid: function() {
return Object.keys(this.state.errors).length === 0;
- }
+ },
+ componentDidMount : function(){
+ if (this.validations) {
+ var self = this;
+ this.validations.getState = function() {
+ return self.state;
+ };
+ }
+ },
};
module.exports = RibicaValidationMixin;