diff --git a/server/controllers/auth.js b/server/controllers/auth.js index 1b4103b..89efba4 100644 --- a/server/controllers/auth.js +++ b/server/controllers/auth.js @@ -86,6 +86,12 @@ module.exports = { const email = params.email ? params.email.trim().toLowerCase() : null; const context = params.context || {}; const username = params.username || null; + const keepParams = params.keepParams || []; + + const extraParams = keepParams.reduce((extra, param) => { + extra[param] = params[param]; + return extra; + }, {}); const isEmail = emailRegExp.test(email); @@ -95,7 +101,7 @@ module.exports = { let user; try { - user = await passwordless.user(email, username); + user = await passwordless.user(email, username, extraParams); } catch (e) { return ctx.badRequest('wrong.user') } diff --git a/server/services/passwordless.js b/server/services/passwordless.js index 95eb9eb..ce67535 100644 --- a/server/services/passwordless.js +++ b/server/services/passwordless.js @@ -55,14 +55,16 @@ module.exports = ( const newUser = { email: user.email, username: user.username || user.email, - role: {id: role.id} + role: {id: role.id}, + ...user.extraParams }; + return strapi .query('plugin::users-permissions.user') .create({data: newUser, populate: ['role']}); }, - async user(email, username) { + async user(email, username, extraParams) { const settings = await this.settings(); const {user: userService} = strapi.plugins['users-permissions'].services; const user = email ? await this.fetchUser({email}) : null; @@ -74,7 +76,7 @@ module.exports = ( return userByUsername } if (email && settings.createUserIfNotExists) { - return this.createUser({email, username}) + return this.createUser({email, username, extraParams}) } return false; },