This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/models/login-method.js.es6

89 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 const LOGIN_METHODS = [
"google_oauth2",
"facebook",
"twitter",
"yahoo",
"instagram",
"github"
];
export function findAll(siteSettings, capabilities, isMobileDevice) {
if (methods) { return methods; }
methods = [];
LOGIN_METHODS.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;