@dbs-portal/module-identity
Version:
Identity management module for user and role management
223 lines • 4.86 kB
TypeScript
/**
* Identity module type definitions
*/
import type { BaseEntity, PaginatedResponse, PaginationParams } from '@dbs-portal/core-shared';
/**
* User entity
*/
export interface User extends BaseEntity {
userName: string;
email: string;
emailConfirmed: boolean;
phoneNumber?: string;
phoneNumberConfirmed: boolean;
firstName?: string;
lastName?: string;
displayName?: string;
avatar?: string;
isActive: boolean;
lockoutEnabled: boolean;
lockoutEnd?: Date;
accessFailedCount: number;
twoFactorEnabled: boolean;
roles: string[];
permissions: string[];
lastLoginAt?: Date;
metadata?: Record<string, unknown>;
}
/**
* Role entity
*/
export interface Role extends BaseEntity {
name: string;
displayName?: string;
description?: string;
isDefault: boolean;
isStatic: boolean;
permissions: string[];
userCount?: number;
}
/**
* User creation request
*/
export interface CreateUserRequest {
userName: string;
email: string;
password: string;
firstName?: string;
lastName?: string;
phoneNumber?: string;
isActive?: boolean;
roleNames?: string[];
sendActivationEmail?: boolean;
}
/**
* User update request
*/
export interface UpdateUserRequest {
id: string;
userName?: string;
email?: string;
firstName?: string;
lastName?: string;
phoneNumber?: string;
isActive?: boolean;
roleNames?: string[];
}
/**
* Role creation request
*/
export interface CreateRoleRequest {
name: string;
displayName?: string;
description?: string;
isDefault?: boolean;
permissions?: string[];
}
/**
* Role update request
*/
export interface UpdateRoleRequest {
id: string;
displayName?: string;
description?: string;
permissions?: string[];
}
/**
* User filters for list queries
*/
export interface UserFilters extends Partial<PaginationParams> {
keyword?: string;
isActive?: boolean;
roleNames?: string[];
emailConfirmed?: boolean;
lockoutEnabled?: boolean;
createdAfter?: Date;
createdBefore?: Date;
}
/**
* Role filters for list queries
*/
export interface RoleFilters extends Partial<PaginationParams> {
keyword?: string;
isDefault?: boolean;
isStatic?: boolean;
}
/**
* User list response
*/
export type UserListResponse = PaginatedResponse<User>;
/**
* Role list response
*/
export type RoleListResponse = PaginatedResponse<Role>;
/**
* Password change request
*/
export interface ChangePasswordRequest {
userId: string;
currentPassword?: string;
newPassword: string;
}
/**
* User lock/unlock request
*/
export interface LockUserRequest {
userId: string;
lockoutEnd?: Date;
}
/**
* Two-factor authentication setup
*/
export interface TwoFactorSetupResponse {
sharedKey: string;
authenticatorUri: string;
qrCodeUri: string;
recoveryCodes: string[];
}
/**
* Two-factor authentication verification
*/
export interface VerifyTwoFactorRequest {
userId: string;
code: string;
recoveryCode?: string;
}
/**
* User permission assignment
*/
export interface UserPermission {
userId: string;
permissionName: string;
isGranted: boolean;
}
/**
* Role permission assignment
*/
export interface RolePermission {
roleId: string;
permissionName: string;
isGranted: boolean;
}
export interface UserFormData {
userName: string;
email: string;
firstName?: string;
lastName?: string;
phoneNumber?: string;
isActive?: boolean;
roleNames?: string[];
}
export interface CreateUserFormData extends UserFormData {
password: string;
confirmPassword: string;
sendActivationEmail?: boolean;
}
export interface RoleFormData {
name: string;
displayName?: string;
description?: string;
isDefault?: boolean;
permissions?: string[];
}
export interface UserCreateProps {
onSubmit?: (data: CreateUserFormData) => void;
loading?: boolean;
error?: string;
className?: string;
}
export interface UserEditProps {
user: User;
onSubmit?: (data: UserFormData) => void;
loading?: boolean;
error?: string;
className?: string;
}
export interface UserDetailsProps {
user: User;
onEdit?: () => void;
onDelete?: () => void;
onLock?: () => void;
onUnlock?: () => void;
className?: string;
}
export interface RoleCreateProps {
onSubmit?: (data: RoleFormData) => void;
loading?: boolean;
error?: string;
className?: string;
}
export interface RoleEditProps {
role: Role;
onSubmit?: (data: RoleFormData) => void;
loading?: boolean;
error?: string;
className?: string;
}
export interface RoleDetailsProps {
role: Role;
onEdit?: () => void;
onDelete?: () => void;
className?: string;
}
//# sourceMappingURL=types.d.ts.map