FIX: warning about popup dimensions when using facebook login Rules are: - On account creation we always import - If you already have an avatar uploaded, nothing is changed - If you have no avatar uploaded, we upload from facebook on login - If you have no avatar uploaded, we select facebook unless gravatar already selected This also fixes SSO issues where on account creation accounts had missing avatar uploads
80 lines
2.0 KiB
JavaScript
80 lines
2.0 KiB
JavaScript
import computed from 'ember-addons/ember-computed-decorators';
|
|
|
|
const LoginMethod = Ember.Object.extend({
|
|
@computed
|
|
title() {
|
|
|
|
const titleSetting = this.get('titleSetting');
|
|
if (!Ember.isEmpty(titleSetting)) {
|
|
const result = this.siteSettings[titleSetting];
|
|
if (!Ember.isEmpty(result)) { return result; }
|
|
}
|
|
|
|
return this.get("titleOverride") || I18n.t("login." + this.get("name") + ".title");
|
|
},
|
|
|
|
@computed
|
|
message() {
|
|
return this.get("messageOverride") || I18n.t("login." + this.get("name") + ".message");
|
|
}
|
|
});
|
|
|
|
let methods;
|
|
let preRegister;
|
|
|
|
export function findAll(siteSettings, capabilities, isMobileDevice) {
|
|
if (methods) { return methods; }
|
|
|
|
methods = [];
|
|
|
|
[ "google_oauth2", "facebook", "cas", "twitter", "yahoo", "instagram", "github" ].forEach(name => {
|
|
if (siteSettings["enable_" + name + "_logins"]) {
|
|
const params = { name };
|
|
if (name === "google_oauth2") {
|
|
params.frameWidth = 850;
|
|
params.frameHeight = 500;
|
|
} else if (name === "facebook") {
|
|
params.frameWidth= 580;
|
|
params.frameHeight = 400;
|
|
params.displayPopup = true;
|
|
}
|
|
|
|
params.siteSettings = siteSettings;
|
|
methods.pushObject(LoginMethod.create(params));
|
|
}
|
|
});
|
|
|
|
if (preRegister){
|
|
preRegister.forEach(method => {
|
|
const enabledSetting = method.get('enabledSetting');
|
|
if (enabledSetting) {
|
|
if (siteSettings[enabledSetting]) {
|
|
methods.pushObject(method);
|
|
}
|
|
} else {
|
|
methods.pushObject(method);
|
|
}
|
|
});
|
|
preRegister = undefined;
|
|
}
|
|
|
|
// On Mobile, Android or iOS always go with full screen
|
|
if (isMobileDevice || capabilities.isIOS || capabilities.isAndroid) {
|
|
methods.forEach(m=>m.set("fullScreenLogin", true));
|
|
}
|
|
|
|
return methods;
|
|
}
|
|
|
|
export function register(method) {
|
|
method = LoginMethod.create(method);
|
|
if (methods) {
|
|
methods.pushObject(method);
|
|
} else {
|
|
preRegister = preRegister || [];
|
|
preRegister.push(method);
|
|
}
|
|
}
|
|
|
|
export default LoginMethod;
|