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
|
post '/user/login' do
|
||||||
request.body.rewind
|
request.body.rewind
|
||||||
login_details = JSON.parse(request.body.read)
|
login_details = JSON.parse(request.body.read)
|
||||||
|
|||||||
@@ -1,64 +1,105 @@
|
|||||||
var AppDispatcher = require('../dispatcher/appDispatcher');
|
var AppDispatcher = require('../dispatcher/appDispatcher');
|
||||||
var UserConstants = require('../constants/userConstants');
|
var UserConstants = require('../constants/userConstants');
|
||||||
|
var superagent = require('superagent');
|
||||||
|
var globals = require('../globals');
|
||||||
|
var NavigationActions = require('./navigationActions');
|
||||||
|
|
||||||
// Define action methods
|
|
||||||
var UserActions = {
|
var UserActions = {
|
||||||
|
|
||||||
registerUser: function(user) {
|
registerUser: function(user) {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: UserConstants.REGISTER_USER,
|
actionType: UserConstants.REGISTER_USER,
|
||||||
user: user
|
user: user
|
||||||
});
|
});
|
||||||
|
|
||||||
user.save(null, {
|
user.save(null, {
|
||||||
success: function() {
|
success: function() {
|
||||||
UserActions.registrationSuccess();
|
UserActions.registrationSuccess();
|
||||||
},
|
},
|
||||||
error: function(model, response, options) {
|
error: function(model, response, options) {
|
||||||
UserActions.registrationFailure(response);
|
UserActions.registrationFailure(response);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
registrationSuccess: function() {
|
registrationSuccess: function() {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: UserConstants.REGISTRATION_SUCCESS
|
actionType: UserConstants.REGISTRATION_SUCCESS
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
registrationFailure: function(error) {
|
registrationFailure: function(error) {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: UserConstants.REGISTRATION_FAILURE,
|
actionType: UserConstants.REGISTRATION_FAILURE,
|
||||||
error: error
|
error: error
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
userLogin: function(loginDetails) {
|
userLogout:function() {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: UserConstants.USER_LOGIN,
|
actionType: UserConstants.USER_LOGOUT
|
||||||
loginDetails: loginDetails
|
});
|
||||||
});
|
|
||||||
|
|
||||||
loginDetails.save(null, {
|
superagent
|
||||||
success: function(){
|
.post(globals.ApiUrl + '/user/logout')
|
||||||
alert('ok')
|
.withCredentials()
|
||||||
UserActions.loginSuccess();
|
.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){
|
superagent.post(globals.ApiUrl + '/user/login')
|
||||||
alert('error!');
|
.withCredentials()
|
||||||
UserActions.loginFailure(response);
|
.send(loginDetails)
|
||||||
}
|
.end(function(response) {
|
||||||
});
|
if(response.unauthorized){
|
||||||
},
|
UserActions.loginFailure(response.body);
|
||||||
loginSuccess: function() {
|
} else {
|
||||||
AppDispatcher.handleAction({
|
UserActions.loginSuccess(response.body);
|
||||||
actionType: UserConstants.LOGIN_SUCCESS
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
loginFailure: function(error) {
|
loginSuccess: function(user) {
|
||||||
AppDispatcher.handleAction({
|
AppDispatcher.handleAction({
|
||||||
actionType: UserConstants.LOGIN_FAILURE,
|
actionType: UserConstants.LOGIN_SUCCESS,
|
||||||
error: error
|
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;
|
module.exports = UserActions;
|
||||||
|
|||||||
@@ -17,13 +17,14 @@ var Login = React.createClass({
|
|||||||
UserStore.removeChangeListener(this.onUserStoreChange);
|
UserStore.removeChangeListener(this.onUserStoreChange);
|
||||||
},
|
},
|
||||||
onUserStoreChange: function() {
|
onUserStoreChange: function() {
|
||||||
var loginState = UserStore.getLoginState();
|
if(this.isMounted()) {
|
||||||
|
var loginState = UserStore.getLoginState();
|
||||||
if (loginState.loggedIn) {
|
|
||||||
NavigationActions.goToHome();
|
|
||||||
} else {
|
|
||||||
|
|
||||||
this.setState({login: loginState});
|
this.setState({login: loginState});
|
||||||
|
if (loginState.loggedIn) {
|
||||||
|
setTimeout(function(){
|
||||||
|
NavigationActions.goToHome();
|
||||||
|
}, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
|
|||||||
@@ -2,11 +2,47 @@ var React = require("react"),
|
|||||||
Router = require("react-router"),
|
Router = require("react-router"),
|
||||||
Link = Router.Link;
|
Link = Router.Link;
|
||||||
|
|
||||||
|
var UserStore = require('../../stores/userStore');
|
||||||
|
var UserActions = require('../../actions/userActions');
|
||||||
|
|
||||||
var LoginStatus = React.createClass({
|
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() {
|
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>
|
<Link to="registracija">Registracija</Link> | <Link to="login">Prijava</Link>
|
||||||
</div>);
|
</div>)
|
||||||
|
}
|
||||||
|
return (<div>{content}</div>)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
module.exports = LoginStatus;
|
module.exports = LoginStatus;
|
||||||
|
|||||||
@@ -7,5 +7,9 @@ module.exports = keyMirror({
|
|||||||
REGISTRATION_FAILURE: null,
|
REGISTRATION_FAILURE: null,
|
||||||
USER_LOGIN: null,
|
USER_LOGIN: null,
|
||||||
LOGIN_SUCCESS: 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
|
// Register callback with AppDispatcher
|
||||||
AppDispatcher.register(function(payload) {
|
NavigationStore.dispatchToken = AppDispatcher.register(function(payload) {
|
||||||
var action = payload.action;
|
var action = payload.action;
|
||||||
|
|
||||||
switch(action.actionType) {
|
switch(action.actionType) {
|
||||||
|
|
||||||
case NavigationConstants.CHANGE_URL:
|
case NavigationConstants.CHANGE_URL:
|
||||||
var router = require('../router');
|
var router = require('../router');
|
||||||
router.transitionTo(action.url);
|
setTimeout(function(){
|
||||||
|
router.transitionTo(action.url);
|
||||||
|
}, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
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 EventEmitter = require('events').EventEmitter;
|
||||||
var UserConstants = require('../constants/userConstants');
|
var UserConstants = require('../constants/userConstants');
|
||||||
var _ = require('underscore');
|
var _ = require('underscore');
|
||||||
|
var NavigationActions = require('../actions/navigationActions');
|
||||||
var _registrationState = {};
|
var _registrationState = {};
|
||||||
var _loginState = {};
|
var _loginState = {};
|
||||||
|
|
||||||
@@ -21,10 +21,12 @@ var handleRegistrationFailure = function(error) {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
var handleLoginSuccess = function() {
|
var handleLoginSuccess = function(user) {
|
||||||
_loginState = {
|
_loginState = {
|
||||||
loggedIn: true
|
loggedIn: true,
|
||||||
|
user: user
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var handleLoginFailure = function(error) {
|
var handleLoginFailure = function(error) {
|
||||||
@@ -32,7 +34,29 @@ var handleLoginFailure = function(error) {
|
|||||||
loggedIn: false,
|
loggedIn: false,
|
||||||
error: error
|
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
|
// Extend SectionStore with EventEmitter to add eventing capabilities
|
||||||
var UserStore = _.extend({}, EventEmitter.prototype, {
|
var UserStore = _.extend({}, EventEmitter.prototype, {
|
||||||
|
|
||||||
@@ -76,12 +100,17 @@ AppDispatcher.register(function(payload) {
|
|||||||
handleRegistrationFailure(action.error);
|
handleRegistrationFailure(action.error);
|
||||||
break;
|
break;
|
||||||
case UserConstants.LOGIN_SUCCESS:
|
case UserConstants.LOGIN_SUCCESS:
|
||||||
handleLoginSuccess();
|
handleLoginSuccess(action.user);
|
||||||
break;
|
break;
|
||||||
case UserConstants.LOGIN_FAILURE:
|
case UserConstants.LOGIN_FAILURE:
|
||||||
handleLoginFailure(action.error);
|
handleLoginFailure(action.error);
|
||||||
break;
|
break;
|
||||||
|
case UserConstants.CHECK_LOGIN_ARRIVED:
|
||||||
|
handleCheckLoginArrived(action.user, action.error);
|
||||||
|
break;
|
||||||
|
case UserConstants.USER_LOGOUT_DONE:
|
||||||
|
handleLogoutDone();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
"backbone": "~1.1.2",
|
"backbone": "~1.1.2",
|
||||||
"bootstrap": "~3.3.1",
|
"bootstrap": "~3.3.1",
|
||||||
"jquery": "~2.1.3",
|
"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