Merge pull request #131 from vatesfr/abhamonr-delete-user-with-tokens
remove tokens on user deletion
This commit is contained in:
33
src/xo.js
33
src/xo.js
@@ -207,25 +207,6 @@ export default class Xo extends EventEmitter {
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
// Proxies tokens/users related events to XO and removes tokens
|
||||
// when their related user is removed.
|
||||
this._tokens.on('remove', ids => {
|
||||
for (let id of ids) {
|
||||
this.emit(`token.revoked:${id}`)
|
||||
}
|
||||
})
|
||||
this._users.on('remove', async function (ids) {
|
||||
for (let id of ids) {
|
||||
this.emit(`user.revoked:${id}`)
|
||||
const tokens = await this._tokens.get({ user_id: id })
|
||||
for (let token of tokens) {
|
||||
this._tokens.remove(token.id)
|
||||
}
|
||||
}
|
||||
}.bind(this))
|
||||
|
||||
// ---------------------------------------------------------------
|
||||
|
||||
// Connects to existing servers.
|
||||
const servers = await this._servers.get()
|
||||
for (let server of servers) {
|
||||
@@ -344,6 +325,16 @@ export default class Xo extends EventEmitter {
|
||||
|
||||
await this._users.remove(id)
|
||||
|
||||
// Remove tokens of user.
|
||||
this._getAuthenticationTokensForUser(id)
|
||||
.then(tokens => {
|
||||
forEach(tokens, token => {
|
||||
this._tokens.remove(token.id)
|
||||
.catch(noop)
|
||||
})
|
||||
})
|
||||
.catch(noop) // Ignore any failures.
|
||||
|
||||
// Remove the user from all its groups.
|
||||
forEach(user.groups, groupId => {
|
||||
this.getGroup(groupId)
|
||||
@@ -930,6 +921,10 @@ export default class Xo extends EventEmitter {
|
||||
return token.properties
|
||||
}
|
||||
|
||||
async _getAuthenticationTokensForUser (userId) {
|
||||
return this._tokens.get({ user_id: userId })
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
|
||||
async registerXenServer ({host, username, password}) {
|
||||
|
||||
Reference in New Issue
Block a user