login & registration now functional
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
|
||||
post '/user/logout' do
|
||||
response.delete_cookie("ribica_auth", :path => "/")
|
||||
end
|
||||
|
||||
post '/user/login' do
|
||||
request.body.rewind
|
||||
login_details = JSON.parse(request.body.read)
|
||||
|
||||
@@ -1,64 +1,105 @@
|
||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||
var UserConstants = require('../constants/userConstants');
|
||||
var superagent = require('superagent');
|
||||
var globals = require('../globals');
|
||||
var NavigationActions = require('./navigationActions');
|
||||
|
||||
// Define action methods
|
||||
var UserActions = {
|
||||
|
||||
registerUser: function(user) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTER_USER,
|
||||
user: user
|
||||
});
|
||||
registerUser: function(user) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTER_USER,
|
||||
user: user
|
||||
});
|
||||
|
||||
user.save(null, {
|
||||
success: function() {
|
||||
UserActions.registrationSuccess();
|
||||
},
|
||||
error: function(model, response, options) {
|
||||
UserActions.registrationFailure(response);
|
||||
}
|
||||
});
|
||||
},
|
||||
registrationSuccess: function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTRATION_SUCCESS
|
||||
});
|
||||
},
|
||||
registrationFailure: function(error) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTRATION_FAILURE,
|
||||
error: error
|
||||
});
|
||||
},
|
||||
userLogin: function(loginDetails) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.USER_LOGIN,
|
||||
loginDetails: loginDetails
|
||||
});
|
||||
user.save(null, {
|
||||
success: function() {
|
||||
UserActions.registrationSuccess();
|
||||
},
|
||||
error: function(model, response, options) {
|
||||
UserActions.registrationFailure(response);
|
||||
}
|
||||
});
|
||||
},
|
||||
registrationSuccess: function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTRATION_SUCCESS
|
||||
});
|
||||
},
|
||||
registrationFailure: function(error) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.REGISTRATION_FAILURE,
|
||||
error: error
|
||||
});
|
||||
},
|
||||
userLogout:function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.USER_LOGOUT
|
||||
});
|
||||
|
||||
loginDetails.save(null, {
|
||||
success: function(){
|
||||
alert('ok')
|
||||
UserActions.loginSuccess();
|
||||
},
|
||||
superagent
|
||||
.post(globals.ApiUrl + '/user/logout')
|
||||
.withCredentials()
|
||||
.end(function(response){
|
||||
UserActions.logoutDone();
|
||||
});
|
||||
},
|
||||
logoutDone: function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.USER_LOGOUT_DONE
|
||||
});
|
||||
},
|
||||
userLogin: function(loginDetails) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.USER_LOGIN
|
||||
});
|
||||
|
||||
error: function(model, response, options){
|
||||
alert('error!');
|
||||
UserActions.loginFailure(response);
|
||||
}
|
||||
});
|
||||
},
|
||||
loginSuccess: function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.LOGIN_SUCCESS
|
||||
});
|
||||
},
|
||||
loginFailure: function(error) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.LOGIN_FAILURE,
|
||||
error: error
|
||||
});
|
||||
}
|
||||
superagent.post(globals.ApiUrl + '/user/login')
|
||||
.withCredentials()
|
||||
.send(loginDetails)
|
||||
.end(function(response) {
|
||||
if(response.unauthorized){
|
||||
UserActions.loginFailure(response.body);
|
||||
} else {
|
||||
UserActions.loginSuccess(response.body);
|
||||
}
|
||||
});
|
||||
},
|
||||
loginSuccess: function(user) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.LOGIN_SUCCESS,
|
||||
user: user
|
||||
});
|
||||
},
|
||||
loginFailure: function(error) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.LOGIN_FAILURE,
|
||||
error: error
|
||||
});
|
||||
},
|
||||
checkLogin: function() {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.CHECK_LOGIN
|
||||
});
|
||||
|
||||
superagent
|
||||
.get(globals.ApiUrl + '/user')
|
||||
.withCredentials()
|
||||
.end(function(response){
|
||||
if(response.unauthorized){
|
||||
UserActions.checkLoginArrived(null, true);
|
||||
} else {
|
||||
UserActions.checkLoginArrived(response.body);
|
||||
}
|
||||
});
|
||||
},
|
||||
checkLoginArrived: function(user, error) {
|
||||
AppDispatcher.handleAction({
|
||||
actionType: UserConstants.CHECK_LOGIN_ARRIVED,
|
||||
user: user,
|
||||
error: error
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = UserActions;
|
||||
|
||||
@@ -17,13 +17,14 @@ var Login = React.createClass({
|
||||
UserStore.removeChangeListener(this.onUserStoreChange);
|
||||
},
|
||||
onUserStoreChange: function() {
|
||||
var loginState = UserStore.getLoginState();
|
||||
|
||||
if (loginState.loggedIn) {
|
||||
NavigationActions.goToHome();
|
||||
} else {
|
||||
|
||||
if(this.isMounted()) {
|
||||
var loginState = UserStore.getLoginState();
|
||||
this.setState({login: loginState});
|
||||
if (loginState.loggedIn) {
|
||||
setTimeout(function(){
|
||||
NavigationActions.goToHome();
|
||||
}, 0);
|
||||
}
|
||||
}
|
||||
},
|
||||
getInitialState: function() {
|
||||
|
||||
@@ -2,11 +2,47 @@ var React = require("react"),
|
||||
Router = require("react-router"),
|
||||
Link = Router.Link;
|
||||
|
||||
var UserStore = require('../../stores/userStore');
|
||||
var UserActions = require('../../actions/userActions');
|
||||
|
||||
var LoginStatus = React.createClass({
|
||||
getInitialState: function() {
|
||||
return UserStore.getLoginState();
|
||||
},
|
||||
componentDidMount: function() {
|
||||
UserActions.checkLogin();
|
||||
UserStore.addChangeListener(this.onUserStateChange);
|
||||
},
|
||||
componentWillReceiveProps: function() {
|
||||
this.update();
|
||||
},
|
||||
componentWillUnmount: function() {
|
||||
UserStore.removeChangeListener(this.onUserStateChange);
|
||||
},
|
||||
onUserStateChange: function() {
|
||||
this.update();
|
||||
},
|
||||
update: function() {
|
||||
this.setState(UserStore.getLoginState());
|
||||
},
|
||||
logout: function(e){
|
||||
e.preventDefault();
|
||||
UserActions.userLogout();
|
||||
},
|
||||
render : function() {
|
||||
return (<div>
|
||||
|
||||
var content;
|
||||
|
||||
if(this.state.loggedIn){
|
||||
content = (<div>Dobrodosli, {this.state.user.first_name} {this.state.user.last_name} | <a onClick={this.logout}>Odjavite se</a>
|
||||
|
||||
</div>)
|
||||
} else {
|
||||
content = (<div>
|
||||
<Link to="registracija">Registracija</Link> | <Link to="login">Prijava</Link>
|
||||
</div>);
|
||||
</div>)
|
||||
}
|
||||
return (<div>{content}</div>)
|
||||
}
|
||||
})
|
||||
module.exports = LoginStatus;
|
||||
|
||||
@@ -7,5 +7,9 @@ module.exports = keyMirror({
|
||||
REGISTRATION_FAILURE: null,
|
||||
USER_LOGIN: null,
|
||||
LOGIN_SUCCESS: null,
|
||||
LOGIN_FAILURE: null
|
||||
LOGIN_FAILURE: null,
|
||||
CHECK_LOGIN: null,
|
||||
CHECK_LOGIN_ARRIVED: null,
|
||||
USER_LOGOUT_DONE: null,
|
||||
USER_LOGOUT: null
|
||||
});
|
||||
|
||||
@@ -30,14 +30,16 @@ var NavigationStore = _.extend({}, EventEmitter.prototype, {
|
||||
|
||||
|
||||
// Register callback with AppDispatcher
|
||||
AppDispatcher.register(function(payload) {
|
||||
NavigationStore.dispatchToken = AppDispatcher.register(function(payload) {
|
||||
var action = payload.action;
|
||||
|
||||
switch(action.actionType) {
|
||||
|
||||
case NavigationConstants.CHANGE_URL:
|
||||
var router = require('../router');
|
||||
router.transitionTo(action.url);
|
||||
setTimeout(function(){
|
||||
router.transitionTo(action.url);
|
||||
}, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -50,4 +52,4 @@ AppDispatcher.register(function(payload) {
|
||||
|
||||
});
|
||||
|
||||
module.exports = NavigationStore;
|
||||
module.exports = NavigationStore;
|
||||
|
||||
@@ -2,7 +2,7 @@ var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var UserConstants = require('../constants/userConstants');
|
||||
var _ = require('underscore');
|
||||
|
||||
var NavigationActions = require('../actions/navigationActions');
|
||||
var _registrationState = {};
|
||||
var _loginState = {};
|
||||
|
||||
@@ -21,10 +21,12 @@ var handleRegistrationFailure = function(error) {
|
||||
};
|
||||
};
|
||||
|
||||
var handleLoginSuccess = function() {
|
||||
var handleLoginSuccess = function(user) {
|
||||
_loginState = {
|
||||
loggedIn: true
|
||||
loggedIn: true,
|
||||
user: user
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
var handleLoginFailure = function(error) {
|
||||
@@ -32,7 +34,29 @@ var handleLoginFailure = function(error) {
|
||||
loggedIn: false,
|
||||
error: error
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
var handleCheckLoginArrived = function(user, error) {
|
||||
if(user) {
|
||||
_loginState = {
|
||||
loggedIn: true,
|
||||
user: user
|
||||
};
|
||||
} else{
|
||||
_loginState = {
|
||||
loggedIn: false
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
var handleLogoutDone = function() {
|
||||
|
||||
_loginState = {
|
||||
loggedIn: false
|
||||
}
|
||||
};
|
||||
|
||||
// Extend SectionStore with EventEmitter to add eventing capabilities
|
||||
var UserStore = _.extend({}, EventEmitter.prototype, {
|
||||
|
||||
@@ -76,12 +100,17 @@ AppDispatcher.register(function(payload) {
|
||||
handleRegistrationFailure(action.error);
|
||||
break;
|
||||
case UserConstants.LOGIN_SUCCESS:
|
||||
handleLoginSuccess();
|
||||
handleLoginSuccess(action.user);
|
||||
break;
|
||||
case UserConstants.LOGIN_FAILURE:
|
||||
handleLoginFailure(action.error);
|
||||
break;
|
||||
|
||||
case UserConstants.CHECK_LOGIN_ARRIVED:
|
||||
handleCheckLoginArrived(action.user, action.error);
|
||||
break;
|
||||
case UserConstants.USER_LOGOUT_DONE:
|
||||
handleLogoutDone();
|
||||
break;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
"backbone": "~1.1.2",
|
||||
"bootstrap": "~3.3.1",
|
||||
"jquery": "~2.1.3",
|
||||
"react-router": "~0.11.6"
|
||||
"react-router": "~0.11.6",
|
||||
"superagent": "~0.21.0"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user