Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
128 lines
2.5 KiB
TypeScript
128 lines
2.5 KiB
TypeScript
/**
|
|
* Canonical User Interfaces
|
|
* These are the canonical definitions for user-related types used across the codebase.
|
|
* All references should use these definitions unless there's a specific reason not to.
|
|
*/
|
|
|
|
/**
|
|
* Core user entity interface
|
|
*/
|
|
export interface IUser {
|
|
user_id: string;
|
|
username: string;
|
|
first_name?: string;
|
|
last_name?: string;
|
|
email: string;
|
|
hashed_password?: string;
|
|
password?: string; // Some tables use 'password' field
|
|
image?: string;
|
|
created_at?: Date | string;
|
|
updated_at?: Date | string;
|
|
two_factor_enabled?: boolean;
|
|
two_factor_secret?: string;
|
|
two_factor_required_new_device?: boolean;
|
|
is_google_user?: boolean;
|
|
is_inactive: boolean;
|
|
tenant: string;
|
|
user_type: 'internal' | 'client';
|
|
reports_to?: string | null;
|
|
contact_id?: string;
|
|
phone?: string;
|
|
timezone?: string;
|
|
last_login_at?: Date | string;
|
|
last_login_method?: string;
|
|
}
|
|
|
|
/**
|
|
* Role entity interface
|
|
*/
|
|
export interface IRole {
|
|
role_id: string;
|
|
role_name: string;
|
|
description?: string;
|
|
msp: boolean;
|
|
client: boolean;
|
|
tenant?: string;
|
|
}
|
|
|
|
/**
|
|
* Permission entity interface
|
|
*/
|
|
export interface IPermission {
|
|
permission_id: string;
|
|
resource: string;
|
|
action: string;
|
|
msp: boolean;
|
|
client: boolean;
|
|
description?: string;
|
|
tenant?: string;
|
|
}
|
|
|
|
/**
|
|
* Role with permissions
|
|
*/
|
|
export interface IRoleWithPermissions extends IRole {
|
|
permissions: IPermission[];
|
|
}
|
|
|
|
/**
|
|
* User with roles
|
|
*/
|
|
export interface IUserWithRoles extends IUser {
|
|
roles: IRole[];
|
|
avatarUrl?: string | null;
|
|
}
|
|
|
|
/**
|
|
* User-role association
|
|
*/
|
|
export interface IUserRole {
|
|
user_id: string;
|
|
role_id: string;
|
|
tenant: string;
|
|
}
|
|
|
|
/**
|
|
* Input type for creating a portal user
|
|
*/
|
|
export interface CreatePortalUserInput {
|
|
email: string;
|
|
password: string;
|
|
contactId: string;
|
|
clientId: string;
|
|
tenantId: string;
|
|
firstName?: string;
|
|
lastName?: string;
|
|
roleId?: string; // Optional specific role ID
|
|
isClientAdmin?: boolean; // Whether the user should be a client admin
|
|
}
|
|
|
|
/**
|
|
* Result type for portal user creation
|
|
*/
|
|
export interface CreatePortalUserResult {
|
|
success: boolean;
|
|
userId?: string;
|
|
roleId?: string;
|
|
error?: string;
|
|
}
|
|
|
|
/**
|
|
* Portal user with additional context
|
|
*/
|
|
export interface PortalUserWithContext extends IUser {
|
|
client_id: string;
|
|
client_name?: string;
|
|
contact_name?: string;
|
|
roles: IRole[];
|
|
}
|
|
|
|
/**
|
|
* Options for determining portal user role
|
|
*/
|
|
export interface PortalRoleOptions {
|
|
isClientAdmin: boolean;
|
|
tenantId: string;
|
|
roleId?: string; // Optional override
|
|
}
|