diff --git a/packages/core/admin/ee/server/controllers/authentication/middlewares.js b/packages/core/admin/ee/server/controllers/authentication/middlewares.js index 00dd7a3c03..5504f1e2a3 100644 --- a/packages/core/admin/ee/server/controllers/authentication/middlewares.js +++ b/packages/core/admin/ee/server/controllers/authentication/middlewares.js @@ -27,7 +27,7 @@ const authenticate = async (ctx, next) => { return ctx.redirect(redirectUrls.error); } - const user = await getService('user').findOne({ email: profile.email }); + const user = await getService('user').findOneByEmail(profile.email); const scenario = user ? existingUserScenario : nonExistingUserScenario; return scenario(ctx, next)(user || profile, provider); diff --git a/packages/core/admin/server/services/user.js b/packages/core/admin/server/services/user.js index 651c62a0c0..1ac92b0bb4 100644 --- a/packages/core/admin/server/services/user.js +++ b/packages/core/admin/server/services/user.js @@ -180,6 +180,19 @@ const findOne = async (id, populate = ['roles']) => { return strapi.entityService.findOne('admin::user', id, { populate }); }; +/** + * Find one user by its email + * @param {string} id email + * @param {string || string[] || object} populate + * @returns + */ +const findOneByEmail = async (email, populate = []) => { + return strapi.query('admin::user').findOne({ + where: { email }, + populate, + }); +}; + /** Find many users (paginated) * @param query * @returns {Promise} @@ -309,6 +322,7 @@ module.exports = { register, sanitizeUser, findOne, + findOneByEmail, findPage, deleteById, deleteByIds,