mirror of
https://github.com/strapi/strapi.git
synced 2025-08-12 10:48:12 +00:00
commit
39dacd63bf
@ -71,12 +71,17 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Connect the user thanks to the third-party provider.
|
// Connect the user thanks to the third-party provider.
|
||||||
|
let user, error;
|
||||||
try {
|
try {
|
||||||
const [user, error] = await strapi.plugins['users-permissions'].services.providers.connect(provider, ctx.query);
|
[user, error] = await strapi.plugins['users-permissions'].services.providers.connect(provider, ctx.query);
|
||||||
} catch([user, error]) {
|
} catch([user, error]) {
|
||||||
return ctx.badRequest(null, (error === 'array') ? (ctx.request.admin ? error[0] : error[1]) : error);
|
return ctx.badRequest(null, (error === 'array') ? (ctx.request.admin ? error[0] : error[1]) : error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!user) {
|
||||||
|
return ctx.badRequest(null, (error === 'array') ? (ctx.request.admin ? error[0] : error[1]) : error);
|
||||||
|
}
|
||||||
|
|
||||||
ctx.send({
|
ctx.send({
|
||||||
jwt: strapi.plugins['users-permissions'].services.jwt.issue(user),
|
jwt: strapi.plugins['users-permissions'].services.jwt.issue(user),
|
||||||
user: _.omit(user.toJSON ? user.toJSON() : user, ['password', 'resetPasswordToken'])
|
user: _.omit(user.toJSON ? user.toJSON() : user, ['password', 'resetPasswordToken'])
|
||||||
|
@ -11,27 +11,6 @@ const request = require('request');
|
|||||||
// Purest strategies.
|
// Purest strategies.
|
||||||
const Purest = require('purest');
|
const Purest = require('purest');
|
||||||
|
|
||||||
const facebook = new Purest({
|
|
||||||
provider: 'facebook'
|
|
||||||
});
|
|
||||||
|
|
||||||
const github = new Purest({
|
|
||||||
provider: 'github',
|
|
||||||
defaults: {
|
|
||||||
headers: {
|
|
||||||
'user-agent': 'strapi'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const google = new Purest({
|
|
||||||
provider: 'google'
|
|
||||||
});
|
|
||||||
|
|
||||||
const twitter = new Purest({
|
|
||||||
provider: 'twitter'
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connect thanks to a third-party provider.
|
* Connect thanks to a third-party provider.
|
||||||
*
|
*
|
||||||
@ -73,7 +52,7 @@ exports.connect = (provider, query) => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (user && user.provider === provider) {
|
if (user && user.provider === provider) {
|
||||||
return resolve([null, [{ messages: [{ id: 'Auth.form.error.email.taken' }] }], 'Email is already taken.']);
|
return resolve([user, null]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user && user.provider !== provider && strapi.plugins['users-permissions'].config.advanced.unique_email) {
|
if (user && user.provider !== provider && strapi.plugins['users-permissions'].config.advanced.unique_email) {
|
||||||
@ -111,6 +90,10 @@ const getProfile = (provider, query, callback) => {
|
|||||||
|
|
||||||
switch (provider) {
|
switch (provider) {
|
||||||
case 'facebook':
|
case 'facebook':
|
||||||
|
const facebook = new Purest({
|
||||||
|
provider: 'facebook'
|
||||||
|
});
|
||||||
|
|
||||||
facebook.query().get('me?fields=name,email').auth(access_token).request((err, res, body) => {
|
facebook.query().get('me?fields=name,email').auth(access_token).request((err, res, body) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
@ -123,18 +106,31 @@ const getProfile = (provider, query, callback) => {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'google':
|
case 'google':
|
||||||
|
const google = new Purest({
|
||||||
|
provider: 'google'
|
||||||
|
});
|
||||||
|
|
||||||
google.query('plus').get('people/me').auth(access_token).request((err, res, body) => {
|
google.query('plus').get('people/me').auth(access_token).request((err, res, body) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
callback(null, {
|
callback(null, {
|
||||||
username: body.displayName,
|
username: body.displayName || body.emails[0].value,
|
||||||
email: body.emails[0].value
|
email: body.emails[0].value
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'github':
|
case 'github':
|
||||||
|
const github = new Purest({
|
||||||
|
provider: 'github',
|
||||||
|
defaults: {
|
||||||
|
headers: {
|
||||||
|
'user-agent': 'strapi'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
request.post({
|
request.post({
|
||||||
url: 'https://github.com/login/oauth/access_token',
|
url: 'https://github.com/login/oauth/access_token',
|
||||||
form: {
|
form: {
|
||||||
@ -156,7 +152,13 @@ const getProfile = (provider, query, callback) => {
|
|||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case 'twitter':
|
case 'twitter':
|
||||||
twitter.query().get('account/verify_credentials').auth(access_token, query.access_secret).qs({screen_name: query['raw[screen_name]']}).qs({include_email: 'true'}).request((err, res, body) => {
|
const twitter = new Purest({
|
||||||
|
provider: 'twitter',
|
||||||
|
key: strapi.plugins['users-permissions'].config.grant.twitter.key,
|
||||||
|
secret: strapi.plugins['users-permissions'].config.grant.twitter.secret
|
||||||
|
});
|
||||||
|
|
||||||
|
twitter.query().get('account/verify_credentials').auth(access_token, query.access_secret).qs({screen_name: query['raw[screen_name]'], include_email: 'true'}).request((err, res, body) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user