var React = require("react"); var NavigationActions = require('../../actions/navigationActions'); var UserActions = require('../../actions/userActions'); var Router = require('react-router'); var Link = Router.Link; var RibicaValidationMixin = require('../../components/shared/mixins/ribicaValidationMixin'); var ValidationUtils = require('../../utils/validation.js'); var LoginModel = require('../../models/login'); var UserStore = require('../../stores/userStore'); var Login = React.createClass({ mixins: [RibicaValidationMixin], componentDidMount:function() { UserStore.addChangeListener(this.onUserStoreChange); UserActions.clearLogin(); }, componentWillUnmount: function() { UserStore.removeChangeListener(this.onUserStoreChange); }, componentWillReceiveProps: function() { UserActions.clearLogin(); }, onUserStoreChange: function() { if(this.isMounted()) { var loginState = UserStore.getLoginState(); this.setState({login: loginState}); if (loginState.loggedIn) { setTimeout(function(){ NavigationActions.goToHome(); }, 0); } } }, getInitialState: function() { return { email: '', password: '', login: UserStore.getLoginState() }; }, validations: { email:function(value) { if(!ValidationUtils.isValidEmail(value)) { return ['Neispravna email adresa.']; } return []; }, password: function(value) { if(!ValidationUtils.isValidRequired(value)) { return ["Šifra je obavezna."]; } return []; } }, renderErrorMessage: function(message){ return (
{message}
) }, doLogin: function(e) { if(this.validate()) { var loginInfo = new LoginModel({ email: this.state.email, password: this.state.password }); UserActions.userLogin(loginInfo); } e.preventDefault(); }, renderLoginFailure: function() { var loginState = this.state.login; if(!loginState.loggedIn) { return (
{loginState.error}
) } return (
) }, render : function() { return (
Prijava {this.renderLoginFailure()}
{this.getValidationMessages('email').map(this.renderErrorMessage)}
{this.getValidationMessages('password').map(this.renderErrorMessage)}
Niste registrovani? Kliknite ovdje da se registrujete!
); } }); module.exports = Login;