chore(xo-server/user): use builtin (un)serialize
This commit is contained in:
parent
5a9812c492
commit
f1fa811e5c
@ -6,25 +6,23 @@ import { parseProp } from './utils.mjs'
|
|||||||
|
|
||||||
// ===================================================================
|
// ===================================================================
|
||||||
|
|
||||||
const serialize = user => {
|
|
||||||
let tmp
|
|
||||||
return {
|
|
||||||
...user,
|
|
||||||
authProviders: isEmpty((tmp = user.authProviders)) ? undefined : JSON.stringify(tmp),
|
|
||||||
groups: isEmpty((tmp = user.groups)) ? undefined : JSON.stringify(tmp),
|
|
||||||
preferences: isEmpty((tmp = user.preferences)) ? undefined : JSON.stringify(tmp),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const deserialize = user => ({
|
|
||||||
permission: 'none',
|
|
||||||
...user,
|
|
||||||
authProviders: parseProp('user', user, 'authProviders', undefined),
|
|
||||||
groups: parseProp('user', user, 'groups', []),
|
|
||||||
preferences: parseProp('user', user, 'preferences', {}),
|
|
||||||
})
|
|
||||||
|
|
||||||
export class Users extends Collection {
|
export class Users extends Collection {
|
||||||
|
_serialize(user) {
|
||||||
|
let tmp
|
||||||
|
user.authProviders = isEmpty((tmp = user.authProviders)) ? undefined : JSON.stringify(tmp)
|
||||||
|
user.groups = isEmpty((tmp = user.groups)) ? undefined : JSON.stringify(tmp)
|
||||||
|
user.preferences = isEmpty((tmp = user.preferences)) ? undefined : JSON.stringify(tmp)
|
||||||
|
}
|
||||||
|
|
||||||
|
_unserialize(user) {
|
||||||
|
if (user.permission === undefined) {
|
||||||
|
user.permission = 'none'
|
||||||
|
}
|
||||||
|
user.authProviders = parseProp('user', user, 'authProviders', undefined)
|
||||||
|
user.groups = parseProp('user', user, 'groups', [])
|
||||||
|
user.preferences = parseProp('user', user, 'preferences', {})
|
||||||
|
}
|
||||||
|
|
||||||
async create(properties) {
|
async create(properties) {
|
||||||
const { email } = properties
|
const { email } = properties
|
||||||
|
|
||||||
@ -34,14 +32,6 @@ export class Users extends Collection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Adds the user to the collection.
|
// Adds the user to the collection.
|
||||||
return /* await */ this.add(serialize(properties))
|
return /* await */ this.add(properties)
|
||||||
}
|
|
||||||
|
|
||||||
async save(user) {
|
|
||||||
return /* await */ this.update(serialize(user))
|
|
||||||
}
|
|
||||||
|
|
||||||
async get(properties) {
|
|
||||||
return (await super.get(properties)).map(deserialize)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ export default class {
|
|||||||
if (!isEmpty(conflictUsers)) {
|
if (!isEmpty(conflictUsers)) {
|
||||||
await Promise.all(conflictUsers.map(({ id }) => id !== userId && this.deleteUser(id)))
|
await Promise.all(conflictUsers.map(({ id }) => id !== userId && this.deleteUser(id)))
|
||||||
}
|
}
|
||||||
return usersDb.save(user)
|
return usersDb.update(user)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -196,7 +196,7 @@ export default class {
|
|||||||
user.email = user.name
|
user.email = user.name
|
||||||
delete user.name
|
delete user.name
|
||||||
|
|
||||||
await this._users.save(user)
|
await this._users.update(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Merge this method in getUser() when plain objects.
|
// Merge this method in getUser() when plain objects.
|
||||||
@ -390,7 +390,7 @@ export default class {
|
|||||||
user.groups = addToArraySet(user.groups, groupId)
|
user.groups = addToArraySet(user.groups, groupId)
|
||||||
group.users = addToArraySet(group.users, userId)
|
group.users = addToArraySet(group.users, userId)
|
||||||
|
|
||||||
await Promise.all([this._users.save(user), this._groups.update(group)])
|
await Promise.all([this._users.update(user), this._groups.update(group)])
|
||||||
}
|
}
|
||||||
|
|
||||||
async _removeUserFromGroup(userId, group) {
|
async _removeUserFromGroup(userId, group) {
|
||||||
@ -400,7 +400,7 @@ export default class {
|
|||||||
|
|
||||||
async _removeGroupFromUser(groupId, user) {
|
async _removeGroupFromUser(groupId, user) {
|
||||||
user.groups = removeFromArraySet(user.groups, groupId)
|
user.groups = removeFromArraySet(user.groups, groupId)
|
||||||
return this._users.save(user)
|
return this._users.update(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
async removeUserFromGroup(userId, groupId) {
|
async removeUserFromGroup(userId, groupId) {
|
||||||
@ -438,10 +438,10 @@ export default class {
|
|||||||
|
|
||||||
group.users = userIds
|
group.users = userIds
|
||||||
|
|
||||||
const saveUser = ::this._users.save
|
const updateUser = ::this._users.update
|
||||||
await Promise.all([
|
await Promise.all([
|
||||||
Promise.all(newUsers.map(saveUser)),
|
Promise.all(newUsers.map(updateUser)),
|
||||||
Promise.all(oldUsers.map(saveUser)),
|
Promise.all(oldUsers.map(updateUser)),
|
||||||
this._groups.update(group),
|
this._groups.update(group),
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user