diff --git a/packages/xo-server/src/models/group.mjs b/packages/xo-server/src/models/group.mjs index 16456b4bd..3e07309d7 100644 --- a/packages/xo-server/src/models/group.mjs +++ b/packages/xo-server/src/models/group.mjs @@ -2,33 +2,21 @@ import isEmpty from 'lodash/isEmpty.js' import Collection from '../collection/redis.mjs' -import { forEach } from '../utils.mjs' - import { parseProp } from './utils.mjs' // =================================================================== export class Groups extends Collection { + _serialize(group) { + let tmp + group.users = isEmpty((tmp = group.users)) ? undefined : JSON.stringify(tmp) + } + + _unserialize(group) { + group.users = parseProp('group', group, 'users', []) + } + create(name, provider, providerGroupId) { return this.add({ name, provider, providerGroupId }) } - - async save(group) { - // Serializes. - let tmp - group.users = isEmpty((tmp = group.users)) ? undefined : JSON.stringify(tmp) - - return /* await */ this.update(group) - } - - async get(properties) { - const groups = await super.get(properties) - - // Deserializes. - forEach(groups, group => { - group.users = parseProp('group', group, 'users', []) - }) - - return groups - } } diff --git a/packages/xo-server/src/xo-mixins/subjects.mjs b/packages/xo-server/src/xo-mixins/subjects.mjs index 0dbe21491..2703337c9 100644 --- a/packages/xo-server/src/xo-mixins/subjects.mjs +++ b/packages/xo-server/src/xo-mixins/subjects.mjs @@ -39,7 +39,7 @@ export default class { app.addConfigManager( 'groups', () => groupsDb.get(), - groups => Promise.all(groups.map(group => groupsDb.save(group))), + groups => Promise.all(groups.map(group => groupsDb.update(group))), ['users'] ) app.addConfigManager( @@ -368,7 +368,7 @@ export default class { if (name) group.name = name - await this._groups.save(group) + await this._groups.update(group) } async getGroup(id) { @@ -390,12 +390,12 @@ export default class { user.groups = addToArraySet(user.groups, groupId) group.users = addToArraySet(group.users, userId) - await Promise.all([this._users.save(user), this._groups.save(group)]) + await Promise.all([this._users.save(user), this._groups.update(group)]) } async _removeUserFromGroup(userId, group) { group.users = removeFromArraySet(group.users, userId) - return this._groups.save(group) + return this._groups.update(group) } async _removeGroupFromUser(groupId, user) { @@ -442,7 +442,7 @@ export default class { await Promise.all([ Promise.all(newUsers.map(saveUser)), Promise.all(oldUsers.map(saveUser)), - this._groups.save(group), + this._groups.update(group), ]) } }