From 9520d222ae3f001bb106b195e5301d608886194e Mon Sep 17 00:00:00 2001 From: Julien Oculi Date: Mon, 17 Jun 2024 18:38:57 +0200 Subject: [PATCH] refactor(model): :recycle: update references to credentials --- src/models/src/credential.ts | 7 ++++--- src/models/src/user.ts | 21 ++++++++++----------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/models/src/credential.ts b/src/models/src/credential.ts index d014ec7..f171dfe 100644 --- a/src/models/src/credential.ts +++ b/src/models/src/credential.ts @@ -77,9 +77,10 @@ export interface Credential extends Ressource { store: Readonly> } -type CredentialCategory = 'password' | 'ssh' | 'passkey' +export type CredentialCategory = 'password' | 'ssh' | 'passkey' -type CredentialStore = T extends 'password' ? { +export type CredentialStore = T extends 'password' + ? { store: { hash: Base64String alg: string @@ -97,7 +98,7 @@ type CredentialStore = T extends 'password' ? { : never /** Passkey store */ -type Passkey = { +export type Passkey = { /** User UUID */ user: UUID /** WebAuthn registration key id */ diff --git a/src/models/src/user.ts b/src/models/src/user.ts index fcc50bf..f9ba41b 100644 --- a/src/models/src/user.ts +++ b/src/models/src/user.ts @@ -1,7 +1,7 @@ import { Ref } from '@/src/models/utils/ref.ts' -import type { Login, MailAddress, Posix, ToJson } from '@/types.ts' +import type { Login, MailAddress, Posix, ToJson, UrlString } from '@/types.ts' import { regex, toLogin } from '@/utils.ts' -import type { Credential } from '@models/credential.ts' +import type { Credential, CredentialCategory } from '@models/credential.ts' import type { Group } from '@models/group.ts' import { Ressource } from '@models/ressource.ts' @@ -35,16 +35,15 @@ export class User extends Ressource { const credentials = Object.freeze( json.credentials.map((credential) => - Ref.fromString(credential) + Ref.fromString>(credential) ), ) const groups = Object.freeze( json.groups.map((group) => Ref.fromString(group)), ) - const avatar = new URL(json.avatar) const posix = json.posix ?? undefined - return new User({ ...json, posix, credentials, groups, avatar }) + return new User({ ...json, posix, credentials, groups }) } static create({ @@ -71,8 +70,8 @@ export class User extends Ressource { #mail: MailAddress #groups: readonly Ref[] #posix?: Posix - #avatar: URL - #credentials: readonly Ref[] + #avatar: UrlString + #credentials: readonly Ref>[] private constructor({ lastname, @@ -113,7 +112,7 @@ export class User extends Ressource { } } this.#posix = posix - this.#avatar = avatar + this.#avatar = new URL(avatar).href as UrlString this.#login = toLogin({ firstname, lastname }) this.#credentials = Object.freeze(credentials) } @@ -161,7 +160,7 @@ export class User extends Ressource { mail: this.mail, groups: this.groups.map((group) => group.toJSON()), posix: this.posix ?? null, - avatar: this.avatar.toJSON(), + avatar: this.avatar, credentials: this.credentials.map((credential) => credential.toJSON()), } as const } @@ -179,6 +178,6 @@ export interface User extends Ressource { mail: MailAddress groups: readonly Ref[] posix: Posix | undefined - avatar: URL - credentials: readonly Ref[] + avatar: UrlString + credentials: readonly Ref>[] }