mirror of
https://github.com/discourse/discourse.git
synced 2024-11-26 02:40:53 -06:00
FIX: CSRF token retrieval bug
This commit is contained in:
parent
50fe117d7c
commit
c4394688de
@ -31,41 +31,62 @@ Discourse.LoginController = Discourse.Controller.extend(Discourse.ModalFunctiona
|
||||
return this.get('loggingIn') || this.blank('loginName') || this.blank('loginPassword');
|
||||
}.property('loginName', 'loginPassword', 'loggingIn'),
|
||||
|
||||
login: function() {
|
||||
this.set('loggingIn', true);
|
||||
|
||||
var loginController = this;
|
||||
Discourse.ajax("/session", {
|
||||
data: { login: this.get('loginName'), password: this.get('loginPassword') },
|
||||
type: 'POST'
|
||||
}).then(function (result) {
|
||||
// Successful login
|
||||
if (result.error) {
|
||||
loginController.set('loggingIn', false);
|
||||
if( result.reason === 'not_activated' ) {
|
||||
loginController.send('showNotActivated', {
|
||||
username: loginController.get('loginName'),
|
||||
sentTo: result.sent_to_email,
|
||||
currentEmail: result.current_email
|
||||
});
|
||||
actions: {
|
||||
login: function() {
|
||||
this.set('loggingIn', true);
|
||||
|
||||
var loginController = this;
|
||||
Discourse.ajax("/session", {
|
||||
data: { login: this.get('loginName'), password: this.get('loginPassword') },
|
||||
type: 'POST'
|
||||
}).then(function (result) {
|
||||
// Successful login
|
||||
if (result.error) {
|
||||
loginController.set('loggingIn', false);
|
||||
if( result.reason === 'not_activated' ) {
|
||||
loginController.send('showNotActivated', {
|
||||
username: loginController.get('loginName'),
|
||||
sentTo: result.sent_to_email,
|
||||
currentEmail: result.current_email
|
||||
});
|
||||
}
|
||||
loginController.flash(result.error, 'error');
|
||||
} else {
|
||||
// Trigger the browser's password manager using the hidden static login form:
|
||||
var $hidden_login_form = $('#hidden-login-form');
|
||||
$hidden_login_form.find('input[name=username]').val(loginController.get('loginName'));
|
||||
$hidden_login_form.find('input[name=password]').val(loginController.get('loginPassword'));
|
||||
$hidden_login_form.find('input[name=redirect]').val(window.location.href);
|
||||
$hidden_login_form.submit();
|
||||
}
|
||||
loginController.flash(result.error, 'error');
|
||||
|
||||
}, function(result) {
|
||||
// Failed to login
|
||||
loginController.flash(I18n.t('login.error'), 'error');
|
||||
loginController.set('loggingIn', false);
|
||||
});
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
externalLogin: function(loginMethod){
|
||||
var name = loginMethod.get("name");
|
||||
var customLogin = loginMethod.get("customLogin");
|
||||
|
||||
if(customLogin){
|
||||
customLogin();
|
||||
} else {
|
||||
// Trigger the browser's password manager using the hidden static login form:
|
||||
var $hidden_login_form = $('#hidden-login-form');
|
||||
$hidden_login_form.find('input[name=username]').val(loginController.get('loginName'));
|
||||
$hidden_login_form.find('input[name=password]').val(loginController.get('loginPassword'));
|
||||
$hidden_login_form.find('input[name=redirect]').val(window.location.href);
|
||||
$hidden_login_form.submit();
|
||||
this.set('authenticate', name);
|
||||
var left = this.get('lastX') - 400;
|
||||
var top = this.get('lastY') - 200;
|
||||
|
||||
var height = loginMethod.get("frameHeight") || 400;
|
||||
var width = loginMethod.get("frameWidth") || 800;
|
||||
window.open(Discourse.getURL("/auth/" + name), "_blank",
|
||||
"menubar=no,status=no,height=" + height + ",width=" + width + ",left=" + left + ",top=" + top);
|
||||
}
|
||||
|
||||
}, function(result) {
|
||||
// Failed to login
|
||||
loginController.flash(I18n.t('login.error'), 'error');
|
||||
loginController.set('loggingIn', false);
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
||||
authMessage: (function() {
|
||||
@ -76,24 +97,6 @@ Discourse.LoginController = Discourse.Controller.extend(Discourse.ModalFunctiona
|
||||
}
|
||||
}).property('authenticate'),
|
||||
|
||||
externalLogin: function(loginMethod){
|
||||
var name = loginMethod.get("name");
|
||||
var customLogin = loginMethod.get("customLogin");
|
||||
|
||||
if(customLogin){
|
||||
customLogin();
|
||||
} else {
|
||||
this.set('authenticate', name);
|
||||
var left = this.get('lastX') - 400;
|
||||
var top = this.get('lastY') - 200;
|
||||
|
||||
var height = loginMethod.get("frameHeight") || 400;
|
||||
var width = loginMethod.get("frameWidth") || 800;
|
||||
window.open(Discourse.getURL("/auth/" + name), "_blank",
|
||||
"menubar=no,status=no,height=" + height + ",width=" + width + ",left=" + left + ",top=" + top);
|
||||
}
|
||||
},
|
||||
|
||||
authenticationComplete: function(options) {
|
||||
if (options.requires_invite) {
|
||||
this.flash(I18n.t('login.requires_invite'), 'success');
|
||||
|
@ -83,7 +83,7 @@ Discourse.Ajax = Em.Mixin.create({
|
||||
return Ember.Deferred.promise(function(promise){
|
||||
$.ajax(Discourse.getURL('/session/csrf'))
|
||||
.success(function(result){
|
||||
Discourse.csrfToken = result.csrf;
|
||||
Discourse.Session.currentProp('csrfToken', result.csrf);
|
||||
performAjax(promise);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user