mirror of
https://github.com/Gimanh/taskview-community.git
synced 2026-09-11 21:38:56 +00:00
125 lines
5.3 KiB
TypeScript
125 lines
5.3 KiB
TypeScript
import { AuthManager } from '../tv-modules/auth/AuthManager';
|
|
import { CollaborationManager } from '../tv-modules/collaboration/CollaborationManager';
|
|
import CollaborationRolesManager from '../tv-modules/collaboration-roles/CollaborationRolesManager';
|
|
import GoalsManager from '../tv-modules/goals/GoalsManager';
|
|
import { GraphManager } from '../tv-modules/graph/GraphManager';
|
|
import { KanbanManager } from '../tv-modules/kanban/KanbanManager';
|
|
import { GoalListManager } from '../tv-modules/lists/GoalListManager';
|
|
import { StartManager } from '../tv-modules/start/StartManager';
|
|
import { TagsManager } from '../tv-modules/tags/TagsManager';
|
|
import { IntegrationsManager } from '../tv-modules/integrations/IntegrationsManager';
|
|
import { NotificationsManager } from '../tv-modules/notifications/NotificationsManager';
|
|
import { OrganizationManager } from '../tv-modules/organizations/OrganizationManager';
|
|
import { SsoManager } from '../tv-modules/sso/SsoManager';
|
|
import { AnalyticsManager } from '../tv-modules/analytics/AnalyticsManager';
|
|
import { TasksManager } from '../tv-modules/tasks/TasksManager';
|
|
import { TimeTrackingManager } from '../tv-modules/time-tracking/TimeTrackingManager';
|
|
import { UiPreferencesManager } from '../tv-modules/ui-preferences/UiPreferencesManager';
|
|
import { SprintsManager } from '../tv-modules/sprints/SprintsManager';
|
|
import { RecurrenceManager } from '../tv-modules/recurrence/RecurrenceManager';
|
|
import type { UserDbRecord, UserJwtPayload } from '../types/auth.types';
|
|
import { GoalPermissionsFetcher } from './GoalPermissionsFetcher';
|
|
|
|
export class AppUser {
|
|
private readonly userData?: UserJwtPayload;
|
|
public readonly permissionsFetcher: GoalPermissionsFetcher;
|
|
public readonly goalsManager: GoalsManager;
|
|
public readonly goalListManager: GoalListManager;
|
|
public readonly tasksManager: TasksManager;
|
|
public readonly collaborationManager: CollaborationManager;
|
|
public readonly collaborationRolesManager: CollaborationRolesManager;
|
|
public readonly tagsManager: TagsManager;
|
|
public readonly authManager: AuthManager;
|
|
private hasActiveToken: boolean = false;
|
|
private apiTokenAuth: boolean = false;
|
|
private tokenPermissions?: string[];
|
|
private allowedGoalIds?: number[];
|
|
private userDataFromDb?: UserDbRecord;
|
|
public readonly startManager: StartManager;
|
|
public readonly kanbanManager: KanbanManager;
|
|
public readonly graphManager: GraphManager;
|
|
public readonly integrationsManager: IntegrationsManager;
|
|
public readonly notificationsManager: NotificationsManager;
|
|
public readonly organizationManager: OrganizationManager;
|
|
public readonly ssoManager: SsoManager;
|
|
public readonly analyticsManager: AnalyticsManager;
|
|
public readonly timeTrackingManager: TimeTrackingManager;
|
|
public readonly uiPreferencesManager: UiPreferencesManager;
|
|
public readonly sprintsManager: SprintsManager;
|
|
public readonly recurrenceManager: RecurrenceManager;
|
|
|
|
constructor(userData?: UserJwtPayload) {
|
|
this.userData = userData;
|
|
this.permissionsFetcher = new GoalPermissionsFetcher(this);
|
|
this.goalsManager = new GoalsManager(this);
|
|
this.goalListManager = new GoalListManager(this);
|
|
this.tasksManager = new TasksManager(this);
|
|
this.collaborationManager = new CollaborationManager(this);
|
|
this.collaborationRolesManager = new CollaborationRolesManager(this);
|
|
this.tagsManager = new TagsManager(this);
|
|
this.authManager = new AuthManager(this);
|
|
this.startManager = new StartManager(this);
|
|
this.kanbanManager = new KanbanManager(this);
|
|
this.graphManager = new GraphManager(this);
|
|
this.integrationsManager = new IntegrationsManager(this);
|
|
this.notificationsManager = new NotificationsManager(this);
|
|
this.organizationManager = new OrganizationManager(this);
|
|
this.ssoManager = new SsoManager(this);
|
|
this.analyticsManager = new AnalyticsManager(this);
|
|
this.timeTrackingManager = new TimeTrackingManager(this);
|
|
this.uiPreferencesManager = new UiPreferencesManager(this);
|
|
this.sprintsManager = new SprintsManager(this);
|
|
this.recurrenceManager = new RecurrenceManager(this);
|
|
}
|
|
|
|
getTokenId(): number | undefined {
|
|
return this.userData?.id;
|
|
}
|
|
|
|
getUserData(): UserJwtPayload['userData'] | undefined {
|
|
return this.userData?.userData;
|
|
}
|
|
|
|
setHasActiveToken(val: boolean) {
|
|
this.hasActiveToken = val;
|
|
}
|
|
|
|
getHasActiveToken() {
|
|
return this.hasActiveToken;
|
|
}
|
|
|
|
setUserDataFromDb(val: UserDbRecord) {
|
|
this.userDataFromDb = val;
|
|
}
|
|
|
|
getUserDataFromDb(): UserDbRecord | undefined {
|
|
return this.userDataFromDb;
|
|
}
|
|
|
|
isBlocked(): boolean {
|
|
return this.userDataFromDb?.block !== 0;
|
|
}
|
|
|
|
/**
|
|
* Use it for API token authentication.
|
|
* @param permissions Permissions that the API token has
|
|
*/
|
|
setApiTokenAuth(permissions: string[], goalIds: number[]) {
|
|
this.apiTokenAuth = true;
|
|
this.tokenPermissions = permissions;
|
|
this.allowedGoalIds = goalIds;
|
|
}
|
|
|
|
isApiTokenAuth(): boolean {
|
|
return this.apiTokenAuth;
|
|
}
|
|
|
|
getAllowedGoalIds(): number[] | undefined {
|
|
return this.allowedGoalIds;
|
|
}
|
|
|
|
getTokenPermissions(): string[] | undefined {
|
|
return this.tokenPermissions;
|
|
}
|
|
}
|