Skip to content

Commit e826074

Browse files
committed
avoid having empty strings in accounts
1 parent 99b4ffa commit e826074

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

server/src/perm.ts

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,23 +131,27 @@ export function renameAccount(from: string, to: string) {
131131
}
132132
}
133133

134-
const assignableProps = ['redirect','ignore_limits','belongs','admin']
134+
// we consider all the following fields, when falsy, as equivalent to be missing. If this changes in the future, please adjust addAccount and setAccount
135+
const assignableProps: (keyof Account)[] = ['redirect','ignore_limits','belongs','admin']
135136

136137
export function addAccount(username: string, props: Partial<Account>) {
137138
if (!username || accounts[username])
138139
return
139-
const copy = { username, ..._.pick(props, assignableProps) }
140+
const copy = _.pickBy(_.pick(props, assignableProps), Boolean)
140141
setHidden(copy, { username })
141-
accounts[username] = copy
142+
accounts[username] = copy as typeof copy & { username: string }
142143
saveAccountsAsap()
143144
return copy
144145
}
145146

146147
export function setAccount(username: string, changes: Partial<Account>) {
147-
const { username: newU, ...rest } = changes
148-
if (newU)
149-
renameAccount(username, newU)
150-
Object.assign(getAccount(newU || username), _.pick(rest, assignableProps))
148+
const rest = _.pick(changes, assignableProps)
149+
for (const [k,v] of Object.entries(rest))
150+
if (!v)
151+
rest[k as keyof Account] = undefined
152+
Object.assign(getAccount(username), rest)
153+
if (changes.username)
154+
renameAccount(username, changes.username)
151155
saveAccountsAsap()
152156
return true
153157
}

0 commit comments

Comments
 (0)