diff --git a/models/users.js b/models/users.js index 7889a48b5..8a3ac6ded 100644 --- a/models/users.js +++ b/models/users.js @@ -2474,6 +2474,55 @@ if (Meteor.isServer) { }); } }); + + /** + * @operation delete_user_token + * + * @summary Delete one or all user token. + * + * @description Only the admin user (the first user) can call the REST API. + * + * @param {string} userId the user ID + * @param {string} token the user token + * @return_type {message: string} + */ + JsonRoutes.add('POST', '/api/deletetoken', function (req, res) { + try { + const { userId, token } = req.body; + Authentication.checkUserId(req.userId); + + let data = { + message: 'Expected a userId to be set but received none.', + }; + + if (token && userId) { + Accounts.destroyToken(userId, token); + data.message = 'Delete token: [' + token + '] from user: ' + userId; + } else if (userId) { + Users.update( + { + _id: userId, + }, + { + $set: { + 'services.resume.loginTokens': '', + }, + }, + ); + data.message = 'Delete all token from user: ' + userId; + } + + JsonRoutes.sendResult(res, { + code: 200, + data, + }); + } catch (error) { + JsonRoutes.sendResult(res, { + code: 200, + data: error, + }); + } + }); } export default Users;