From 08b3289f4d58f71767f7e3a6903635cb1caa674c Mon Sep 17 00:00:00 2001 From: vjrj Date: Mon, 12 Feb 2018 19:52:22 +0100 Subject: [PATCH] Lang for oauth users --- .../api/Users/server/send-welcome-email.js | 3 +- imports/modules/get-oauth-profile.js | 37 +++++++++---------- .../startup/server/accounts/lang-fallback.js | 8 ++++ .../startup/server/accounts/on-create-user.js | 13 +++++-- public/locales/en/common.json | 1 + public/locales/es/common.json | 5 ++- 6 files changed, 42 insertions(+), 25 deletions(-) create mode 100644 imports/startup/server/accounts/lang-fallback.js diff --git a/imports/api/Users/server/send-welcome-email.js b/imports/api/Users/server/send-welcome-email.js index 10748dd..f93c7d2 100644 --- a/imports/api/Users/server/send-welcome-email.js +++ b/imports/api/Users/server/send-welcome-email.js @@ -10,11 +10,12 @@ export default (options, user, lang) => { const applicationName = i18n.t('AppName'); const firstName = OAuthProfile ? OAuthProfile.name.first : options.profile.name.first; const emailAddress = OAuthProfile ? OAuthProfile.email : options.email; + const welcome = i18n.t('welcome'); if (emailAddress) { sendEmail({ to: emailAddress, from: `${applicationName} `, - subject: `[${applicationName}] Welcome, ${firstName}!`, + subject: `[${applicationName}] ${welcome} ${firstName}!`, lang, template: 'welcome', templateVars: { diff --git a/imports/modules/get-oauth-profile.js b/imports/modules/get-oauth-profile.js index 91866dc..8e427a1 100644 --- a/imports/modules/get-oauth-profile.js +++ b/imports/modules/get-oauth-profile.js @@ -1,12 +1,11 @@ -const parseGoogleData = service => { - return { - email: service.email, - name: { - first: service.given_name, - last: service.family_name, - }, - }; -}; +const parseGoogleData = service => ({ + email: service.email, + name: { + first: service.given_name, + last: service.family_name + }, + lang: service.locale +}); const parseGithubData = (profile, service) => { const name = profile.name.split(' '); @@ -14,20 +13,18 @@ const parseGithubData = (profile, service) => { email: service.email, name: { first: name[0], - last: name[1], - }, + last: name[1] + } }; }; -const parseFacebookData = service => { - return { - email: service.email, - name: { - first: service.first_name, - last: service.last_name, - }, - }; -}; +const parseFacebookData = service => ({ + email: service.email, + name: { + first: service.first_name, + last: service.last_name + } +}); const getDataForService = (profile, services) => { if (services.facebook) return parseFacebookData(services.facebook); diff --git a/imports/startup/server/accounts/lang-fallback.js b/imports/startup/server/accounts/lang-fallback.js new file mode 100644 index 0000000..af96ce5 --- /dev/null +++ b/imports/startup/server/accounts/lang-fallback.js @@ -0,0 +1,8 @@ +const getFallbackLang = (lang) => { + if (lang && (lang === 'ast' || lang === 'gl' || lang === 'eu' || lang === 'ca' || lang.match(/^es/))) { + return 'es'; + } + return 'en'; +}; + +export default getFallbackLang; diff --git a/imports/startup/server/accounts/on-create-user.js b/imports/startup/server/accounts/on-create-user.js index fa2a99e..383b8c0 100644 --- a/imports/startup/server/accounts/on-create-user.js +++ b/imports/startup/server/accounts/on-create-user.js @@ -1,18 +1,25 @@ import { Accounts } from 'meteor/accounts-base'; import sendWelcomeEmail from '../../../api/Users/server/send-welcome-email'; +import getOAuthProfile from '../../../modules/get-oauth-profile'; +import getFallbackLang from './lang-fallback'; Accounts.onCreateUser((options, user) => { const userToCreate = user; // console.log(JSON.stringify(user)); // console.log(JSON.stringify(options)); + let lang = 'en'; // fallback if (options.profile) { userToCreate.profile = options.profile; userToCreate.lang = options.profile.lang; - lang = options.profile.lang; + // console.log(JSON.stringify(user)); + lang = userToCreate.lang; delete options.profile.lang; - } else { - // TODO others (google, etc) ? + } + const OAuthProfile = getOAuthProfile(options, user); + if (OAuthProfile) { + userToCreate.lang = getFallbackLang(OAuthProfile && OAuthProfile.lang ? OAuthProfile.lang : lang); + lang = userToCreate.lang; } sendWelcomeEmail(options, userToCreate, lang); return userToCreate; diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 6b383de..1f1c564 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -158,6 +158,7 @@ "Más información sobre este fuego": "More information about this fire", "termsAccept": "I accept the <1>conditions of service of this site", "Bienvenid@!": "Welcome!", + "welcome": "Welcome", "Verifica tu dirección de correo": "Verify Your Email Address", "Zonas vigiladas": "Monitored areas", "En verde, las zonas vigiladas por nuestros usuari@s actualmente": "In green, the areas monitored by our users currently", diff --git a/public/locales/es/common.json b/public/locales/es/common.json index 0231e6e..15763d8 100644 --- a/public/locales/es/common.json +++ b/public/locales/es/common.json @@ -228,6 +228,7 @@ "Última actualización, {{when}}": "Última actualización, {{when}}", "termsAccept": "Acepto las <1>condiciones de servicio de este sitio", "Bienvenid@!": "Bienvenid@!", + "welcome": "Bienvenid@", "Has iniciado sesión con {{service}} usando la dirección de correo {{email}}.": "Has iniciado sesión con {{service}} usando la dirección de correo {{email}}.", "Verifica tu dirección de correo": "Verifica tu dirección de correo", @@ -269,5 +270,7 @@ "Detectado": "Detectado", "Zonas vigiladas por nuestros usuari@s actualmente": - "Zonas vigiladas por nuestros usuari@s actualmente" + "Zonas vigiladas por nuestros usuari@s actualmente", + "Iniciar sesión con Facebook": + "Iniciar sesión con Facebook" }