Merge pull request #131 from vatesfr/abhamonr-delete-user-with-tokens

remove tokens on user deletion
This commit is contained in:
Julien Fontanet
2015-11-19 12:55:38 +01:00

View File

@@ -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}) {