From c079c9391c94e94a174ba38a5c0dc2aa4cebbdfc Mon Sep 17 00:00:00 2001 From: EthanHealy01 Date: Fri, 14 Nov 2025 13:32:06 +0000 Subject: [PATCH] lint --- frontend/src/core/services/teamService.ts | 58 ++++++++ .../core/services/userManagementService.ts | 140 ++++++++++++++++++ 2 files changed, 198 insertions(+) create mode 100644 frontend/src/core/services/teamService.ts create mode 100644 frontend/src/core/services/userManagementService.ts diff --git a/frontend/src/core/services/teamService.ts b/frontend/src/core/services/teamService.ts new file mode 100644 index 000000000..60202d830 --- /dev/null +++ b/frontend/src/core/services/teamService.ts @@ -0,0 +1,58 @@ +// Core shim for proprietary team service. +// This allows the core TypeScript project to resolve imports. +// Proprietary builds map to the real implementation via path aliases. + +export interface Team { + id: number; + name: string; + userCount?: number; +} + +export interface TeamMember { + id: number; + username: string; + email?: string; + roleName: string; + enabled: boolean; + team?: { + id: number; + name: string; + }; + lastRequest?: Date | null; +} + +export interface TeamDetailsResponse { + team: Team; + members: TeamMember[]; + availableUsers: TeamMember[]; +} + +function notAvailable(): never { + throw new Error('Team management is a proprietary feature and is not available in the core build.'); +} + +export const teamService = { + async getTeams(): Promise { + return notAvailable(); + }, + async getTeamDetails(_teamId: number): Promise { + return notAvailable(); + }, + async createTeam(_name: string): Promise { + return notAvailable(); + }, + async renameTeam(_teamId: number, _newName: string): Promise { + return notAvailable(); + }, + async deleteTeam(_teamId: number): Promise { + return notAvailable(); + }, + async addUserToTeam(_teamId: number, _userId: number): Promise { + return notAvailable(); + }, + async moveUserToTeam(_username: string, _currentRole: string, _teamId: number): Promise { + return notAvailable(); + }, +}; + + diff --git a/frontend/src/core/services/userManagementService.ts b/frontend/src/core/services/userManagementService.ts new file mode 100644 index 000000000..718ae8411 --- /dev/null +++ b/frontend/src/core/services/userManagementService.ts @@ -0,0 +1,140 @@ +// Core shim for proprietary user management service. +// This file exists so the core TypeScript project can resolve imports. +// In proprietary builds, the path alias maps to the real implementation. + +export interface User { + id: number; + username: string; + email?: string; + roleName: string; + rolesAsString?: string; + enabled: boolean; + isFirstLogin?: boolean; + authenticationType?: string; + team?: { + id: number; + name: string; + }; + createdAt?: string; + updatedAt?: string; + isActive?: boolean; + lastRequest?: number; +} + +export interface AdminSettingsData { + users: User[]; + userSessions: Record; + userLastRequest: Record; + totalUsers: number; + activeUsers: number; + disabledUsers: number; + currentUsername?: string; + roleDetails?: Record; + teams?: any[]; + maxPaidUsers?: number; + maxAllowedUsers: number; + availableSlots: number; + grandfatheredUserCount: number; + licenseMaxUsers: number; + premiumEnabled: boolean; +} + +export interface CreateUserRequest { + username: string; + password?: string; + role: string; + teamId?: number; + authType: 'password' | 'SSO'; + forceChange?: boolean; +} + +export interface UpdateUserRoleRequest { + username: string; + role: string; + teamId?: number; +} + +export interface InviteUsersRequest { + emails: string; + role: string; + teamId?: number; +} + +export interface InviteUsersResponse { + successCount: number; + failureCount: number; + message?: string; + errors?: string; + error?: string; +} + +export interface InviteLinkRequest { + email?: string; + role: string; + teamId?: number; + expiryHours?: number; + sendEmail?: boolean; +} + +export interface InviteLinkResponse { + token: string; + inviteUrl: string; + email: string; + expiresAt: string; + expiryHours: number; + emailSent?: boolean; + emailError?: string; + error?: string; +} + +export interface InviteToken { + id: number; + email: string; + role: string; + teamId?: number; + createdBy: string; + createdAt: string; + expiresAt: string; +} + +function notAvailable(): never { + throw new Error('User management is a proprietary feature and is not available in the core build.'); +} + +export const userManagementService = { + async getUsers(): Promise { + return notAvailable(); + }, + async getUsersWithoutTeam(): Promise { + return notAvailable(); + }, + async createUser(_data: CreateUserRequest): Promise { + return notAvailable(); + }, + async updateUserRole(_data: UpdateUserRoleRequest): Promise { + return notAvailable(); + }, + async toggleUserEnabled(_username: string, _enabled: boolean): Promise { + return notAvailable(); + }, + async deleteUser(_username: string): Promise { + return notAvailable(); + }, + async inviteUsers(_data: InviteUsersRequest): Promise { + return notAvailable(); + }, + async generateInviteLink(_data: InviteLinkRequest): Promise { + return notAvailable(); + }, + async getInviteLinks(): Promise { + return notAvailable(); + }, + async revokeInviteLink(_inviteId: number): Promise { + return notAvailable(); + }, + async cleanupExpiredInvites(): Promise<{ deletedCount: number }> { + return notAvailable(); + } +}; + +