From 06b741f32240816d26dc9034f1d1b8b9c9d342d6 Mon Sep 17 00:00:00 2001 From: David Thomas Date: Sun, 22 Jul 2018 22:03:29 -0400 Subject: [PATCH] Add Microsoft auth provider Closes #1385 --- .../admin/src/components/PopUpForm/index.js | 2 ++ .../admin/src/translations/en.json | 1 + .../config/functions/bootstrap.js | 8 +++++ .../services/Providers.js | 34 +++++++++++++++++++ 4 files changed, 45 insertions(+) diff --git a/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js b/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js index 7f9ccbb40c..cf61fe02cd 100644 --- a/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js +++ b/packages/strapi-plugin-users-permissions/admin/src/components/PopUpForm/index.js @@ -49,6 +49,8 @@ class PopUpForm extends React.Component { // eslint-disable-line react/prefer-st return `${strapi.backendURL}/connect/google/callback`; case 'github': return get(this.props.values, 'redirect_uri', ''); + case 'microsoft': + return `${strapi.backendURL}/connect/microsoft/callback`; default: { const value = get(this.props.values, 'callback', ''); diff --git a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json index f97bf1e2fc..8d0c431edf 100755 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json @@ -166,6 +166,7 @@ "PopUpForm.Providers.facebook.providerConfig.redirectURL": "The redirect URL to add in your Facebook application configurations", "PopUpForm.Providers.google.providerConfig.redirectURL": "The redirect URL to add in your Google application configurations", "PopUpForm.Providers.github.providerConfig.redirectURL": "The redirect URL to add in your GitHub application configurations", + "PopUpForm.Providers.microsoft.providerConfig.redirectURL": "The redirect URL to add in your Microsoft application configurations", "PopUpForm.Providers.linkedin2.providerConfig.redirectURL": "The redirect URL to add in your Linkedin application configurations", "PopUpForm.Providers.twitter.providerConfig.redirectURL": "The redirect URL to add in your Twitter application configurations", diff --git a/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js b/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js index bbca66962f..fa17b6825e 100644 --- a/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js +++ b/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js @@ -66,6 +66,14 @@ module.exports = async cb => { 'user:email' ] }, + microsoft: { + enabled: false, + icon: 'windows', + key: '', + secret: '', + callback: '/auth/microsoft/callback', + scope: ['user.read'] + }, twitter: { enabled: false, icon: 'twitter', diff --git a/packages/strapi-plugin-users-permissions/services/Providers.js b/packages/strapi-plugin-users-permissions/services/Providers.js index a7f32886a1..0c24451dc9 100644 --- a/packages/strapi-plugin-users-permissions/services/Providers.js +++ b/packages/strapi-plugin-users-permissions/services/Providers.js @@ -172,6 +172,40 @@ const getProfile = async (provider, query, callback) => { }); break; } + case 'microsoft': { + const microsoft = new Purest({ + provider: 'microsoft', + config:{ + 'microsoft': { + 'https://graph.microsoft.com': { + '__domain': { + 'auth': { + 'auth': {'bearer': '[0]'} + } + }, + '[version]/{endpoint}': { + '__path': { + 'alias': '__default', + 'version': 'v1.0' + } + } + } + } + } + }); + + microsoft.query().get('me').auth(access_token).request((err, res, body) => { + if (err) { + callback(err); + } else { + callback(null, { + username: body.userPrincipalName, + email: body.userPrincipalName + }); + } + }); + break; + } case 'twitter': { const twitter = new Purest({ provider: 'twitter',