argos/dmp-frontend/src/app/core/model/user/user.ts

82 lines
1.6 KiB
TypeScript

import { ContactInfoType } from "@app/core/common/enum/contact-info-type";
import { RoleOrganizationType } from "@app/core/common/enum/role-organization-type";
import { BaseEntity, BaseEntityPersist } from "@common/base/base-entity.model";
import { Guid } from "@common/types/guid";
import { Reference } from "../reference/reference";
export interface User extends BaseEntity {
name: string;
additionalInfo: UserAdditionalInfo;
contacts: UserContactInfo[];
roles: UserRole[];
credentials: UserCredential[];
}
export interface UserPersist extends BaseEntityPersist {
name: String;
additionalInfo: UserAdditionalInfoPersist;
}
export interface UserAdditionalInfoPersist {
avatarUrl: String;
timezone: String;
culture: String;
language: String;
roleOrganization: String;
organizationId: Guid;
}
export interface UserAdditionalInfo {
avatarUrl: String;
timezone: String;
culture: String;
language: String;
roleOrganization: RoleOrganizationType;
organization: Reference;
}
export interface UserContactInfo {
id: Guid;
value: String;
type: ContactInfoType;
ordinal: number;
user: User;
createdAt: Date;
}
export interface UserRole {
id: Guid;
role: String;
user: User;
createdAt: Date;
}
export interface UserRolePatchPersist {
id: Guid;
roles: String[];
hash: string;
}
export interface UserCredential {
id: Guid;
externalId: String;
user: User;
createdAt: Date;
data: UserCredentialData
}
export interface UserCredentialData {
externalProviderNames: String[];
email: String;
}
export interface DmpAssociatedUser {
id: Guid;
name: string;
email: string;
}
export interface UserMergeRequestPersist {
email: string;
}