From d1372d7ad11926fc0490b02b4cae253e49585cf7 Mon Sep 17 00:00:00 2001 From: Marcos Spessatto Defendi Date: Thu, 8 Aug 2019 16:20:13 -0300 Subject: [PATCH] Fix custom auth (#15141) --- app/custom-oauth/server/custom_oauth_server.js | 5 ++--- app/lib/server/oauth/facebook.js | 3 +-- app/lib/server/oauth/google.js | 2 +- app/lib/server/oauth/twitter.js | 3 +-- app/models/server/models/Users.js | 10 ++++++++++ 5 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/custom-oauth/server/custom_oauth_server.js b/app/custom-oauth/server/custom_oauth_server.js index 5becea434c0..660685296f9 100644 --- a/app/custom-oauth/server/custom_oauth_server.js +++ b/app/custom-oauth/server/custom_oauth_server.js @@ -365,7 +365,7 @@ export class CustomOAuth { } if (serviceData.username) { - const user = Users.findOneByUsernameIgnoringCase(serviceData.username); + const user = Users.findOneByUsernameAndServiceNameIgnoringCase(serviceData.username, serviceName); if (!user) { return; } @@ -430,10 +430,9 @@ export class CustomOAuth { check(options, Match.ObjectIncluding({ accessToken: String, expiresIn: Match.Integer, - identity: Match.Maybe(Object), })); - const identity = options.identity || self.getIdentity(options.accessToken); + const identity = self.getIdentity(options.accessToken); const serviceData = { accessToken: options.accessToken, diff --git a/app/lib/server/oauth/facebook.js b/app/lib/server/oauth/facebook.js index f19aa01c622..547eee346eb 100644 --- a/app/lib/server/oauth/facebook.js +++ b/app/lib/server/oauth/facebook.js @@ -45,10 +45,9 @@ registerAccessTokenService('facebook', function(options) { accessToken: String, secret: String, expiresIn: Match.Integer, - identity: Match.Maybe(Object), })); - const identity = options.identity || getIdentity(options.accessToken, whitelisted, options.secret); + const identity = getIdentity(options.accessToken, whitelisted, options.secret); const serviceData = { accessToken: options.accessToken, diff --git a/app/lib/server/oauth/google.js b/app/lib/server/oauth/google.js index 848aa1c1c1b..98b920a2355 100644 --- a/app/lib/server/oauth/google.js +++ b/app/lib/server/oauth/google.js @@ -35,7 +35,7 @@ registerAccessTokenService('google', function(options) { identity: Match.Maybe(Object), })); - const identity = options.identity || getIdentity(options.accessToken); + const identity = getIdentity(options.accessToken); const serviceData = { accessToken: options.accessToken, diff --git a/app/lib/server/oauth/twitter.js b/app/lib/server/oauth/twitter.js index d93499fb57f..132af472a03 100644 --- a/app/lib/server/oauth/twitter.js +++ b/app/lib/server/oauth/twitter.js @@ -38,10 +38,9 @@ registerAccessTokenService('twitter', function(options) { appId: String, accessTokenSecret: String, expiresIn: Match.Integer, - identity: Match.Maybe(Object), })); - const identity = options.identity || getIdentity(options.accessToken, options.appId, options.appSecret, options.accessTokenSecret); + const identity = getIdentity(options.accessToken, options.appId, options.appSecret, options.accessTokenSecret); const serviceData = { accessToken: options.accessToken, diff --git a/app/models/server/models/Users.js b/app/models/server/models/Users.js index 7149c11ec01..e558c017790 100644 --- a/app/models/server/models/Users.js +++ b/app/models/server/models/Users.js @@ -376,6 +376,16 @@ export class Users extends Base { return this.findOne(query, options); } + findOneByUsernameAndServiceNameIgnoringCase(username, serviceName, options) { + if (typeof username === 'string') { + username = new RegExp(`^${ s.escapeRegExp(username) }$`, 'i'); + } + + const query = { username, [`services.${ serviceName }.id`]: serviceName }; + + return this.findOne(query, options); + } + findOneByUsername(username, options) { const query = { username };