first commit
This commit is contained in:
25
libs/api/identity/domain/src/lib/factories/user.factory.ts
Normal file
25
libs/api/identity/domain/src/lib/factories/user.factory.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { assertThat } from '@task-stream/api/shared/domain';
|
||||
import { User, UserSnapshot } from '../user';
|
||||
|
||||
type UserProps = Omit<UserSnapshot, 'roles' | 'appRoles'> &
|
||||
Partial<Pick<UserSnapshot, 'roles' | 'appRoles'>>;
|
||||
|
||||
/** Users are never created here (Pireon owns them): they are only (re)built. */
|
||||
@Injectable()
|
||||
export class UserFactory {
|
||||
create(props: UserProps): User {
|
||||
assertThat(props.id.length > 0, 'User id is required');
|
||||
const user = new User(props.id);
|
||||
user.name = props.name;
|
||||
user.email = props.email;
|
||||
user.isActive = props.isActive;
|
||||
user.roles = [...(props.roles ?? [])];
|
||||
user.appRoles = [...(props.appRoles ?? [])];
|
||||
return user;
|
||||
}
|
||||
|
||||
restore(snapshot: UserProps): User {
|
||||
return this.create(snapshot);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user