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 6dc4c61617..8a981114a7 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 @@ -51,6 +51,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 f823bb9b25..dee0fad455 100755 --- a/packages/strapi-plugin-users-permissions/admin/src/translations/en.json +++ b/packages/strapi-plugin-users-permissions/admin/src/translations/en.json @@ -168,6 +168,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 b4fbbae6f1..e8e034196c 100644 --- a/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js +++ b/packages/strapi-plugin-users-permissions/config/functions/bootstrap.js @@ -77,6 +77,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 da8f651186..e278a1eadf 100644 --- a/packages/strapi-plugin-users-permissions/services/Providers.js +++ b/packages/strapi-plugin-users-permissions/services/Providers.js @@ -208,6 +208,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',