Move OAuth "remember me" javascript logic into a class.
This commit is contained in:
parent
43337c120d
commit
d705a2548c
3 changed files with 33 additions and 14 deletions
|
@ -56,6 +56,7 @@ import GfmAutoComplete from './gfm_auto_complete';
|
||||||
import ShortcutsBlob from './shortcuts_blob';
|
import ShortcutsBlob from './shortcuts_blob';
|
||||||
import initSettingsPanels from './settings_panels';
|
import initSettingsPanels from './settings_panels';
|
||||||
import initExperimentalFlags from './experimental_flags';
|
import initExperimentalFlags from './experimental_flags';
|
||||||
|
import OAuthRememberMe from './oauth_remember_me';
|
||||||
|
|
||||||
(function() {
|
(function() {
|
||||||
var Dispatcher;
|
var Dispatcher;
|
||||||
|
@ -127,6 +128,7 @@ import initExperimentalFlags from './experimental_flags';
|
||||||
case 'sessions:new':
|
case 'sessions:new':
|
||||||
new UsernameValidator();
|
new UsernameValidator();
|
||||||
new ActiveTabMemoizer();
|
new ActiveTabMemoizer();
|
||||||
|
new OAuthRememberMe({ container: $("#remember_me") }).bindEvents();
|
||||||
break;
|
break;
|
||||||
case 'projects:boards:show':
|
case 'projects:boards:show':
|
||||||
case 'projects:boards:index':
|
case 'projects:boards:index':
|
||||||
|
|
31
app/assets/javascripts/oauth_remember_me.js
Normal file
31
app/assets/javascripts/oauth_remember_me.js
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
/**
|
||||||
|
* OAuth-based login buttons have a separate "remember me" checkbox.
|
||||||
|
*
|
||||||
|
* Toggling this checkbox adds/removes a `remember_me` parameter to the
|
||||||
|
* login buttons' href, which is passed on to the omniauth callback.
|
||||||
|
**/
|
||||||
|
|
||||||
|
export default class OAuthRememberMe {
|
||||||
|
constructor(opts = {}) {
|
||||||
|
this.container = opts.container || '';
|
||||||
|
this.loginLinkSelector = '.oauth-login';
|
||||||
|
}
|
||||||
|
|
||||||
|
bindEvents() {
|
||||||
|
this.container.on('click', this.toggleRememberMe);
|
||||||
|
}
|
||||||
|
|
||||||
|
toggleRememberMe(event) {
|
||||||
|
var rememberMe = $(event.target).is(":checked");
|
||||||
|
|
||||||
|
$('.oauth-login').each(function(i, element) {
|
||||||
|
var href = $(element).attr('href');
|
||||||
|
|
||||||
|
if (rememberMe) {
|
||||||
|
$(element).attr('href', href + '?remember_me=1');
|
||||||
|
} else {
|
||||||
|
$(element).attr('href', href.replace('?remember_me=1', ''));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,17 +10,3 @@
|
||||||
%fieldset
|
%fieldset
|
||||||
= check_box_tag :remember_me
|
= check_box_tag :remember_me
|
||||||
= label_tag :remember_me, "Remember Me"
|
= label_tag :remember_me, "Remember Me"
|
||||||
|
|
||||||
:javascript
|
|
||||||
$("#remember_me").click(function(event){
|
|
||||||
var rememberMe = $(event.target).is(":checked");
|
|
||||||
$(".oauth-login").each(function(i, element) {
|
|
||||||
var href = $(element).attr('href');
|
|
||||||
|
|
||||||
if (rememberMe) {
|
|
||||||
$(element).attr('href', href + '?remember_me=1');
|
|
||||||
} else {
|
|
||||||
$(element).attr('href', href.replace('?remember_me=1', ''));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
Loading…
Reference in a new issue