ФУНКЦИИ - МЕЖПРОЕКТНАЯ КОММУНИКАЦИЯ: открытый контур и self-service инвайты
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import type { ClientMembershipRole } from "../user/types";
|
||||
|
||||
export type AccessRequestStatus = "new" | "approved" | "rejected";
|
||||
|
||||
export interface AccessRequest {
|
||||
id: string;
|
||||
email: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
middleName: string;
|
||||
phone: string;
|
||||
company: string;
|
||||
status: AccessRequestStatus;
|
||||
targetClientId: string;
|
||||
role: ClientMembershipRole;
|
||||
approvedInviteId?: string | null;
|
||||
reviewedByUserId?: string | null;
|
||||
reviewedAt?: string | null;
|
||||
comment?: string | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface CreateAccessRequestCommand {
|
||||
email: string;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
middleName: string;
|
||||
phone: string;
|
||||
company: string;
|
||||
}
|
||||
@@ -8,6 +8,11 @@ export interface Invite {
|
||||
email: string;
|
||||
role: ClientMembershipRole;
|
||||
invitedByUserId: string;
|
||||
source?: "launcher" | "access_request" | "tasker_workspace_invite";
|
||||
sourceTaskerInviteRequestId?: string | null;
|
||||
sourceTaskerInviteId?: string | null;
|
||||
sourceWorkspaceSlug?: string | null;
|
||||
sourceWorkspaceName?: string | null;
|
||||
token: string;
|
||||
expiresAt: string;
|
||||
status: InviteStatus;
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
import type { Client } from "../client/types";
|
||||
|
||||
export const PUBLIC_POOL_CLIENT_ID = "client_public_pool";
|
||||
export const PUBLIC_POOL_CONTEXT_LABEL = "Открытый контур";
|
||||
export const PUBLIC_POOL_CONTEXT_DESCRIPTION = "Public access pool";
|
||||
|
||||
export const PUBLIC_POOL_CLIENT: Client = {
|
||||
id: PUBLIC_POOL_CLIENT_ID,
|
||||
type: "person",
|
||||
name: PUBLIC_POOL_CONTEXT_LABEL,
|
||||
legalName: PUBLIC_POOL_CONTEXT_DESCRIPTION,
|
||||
status: "active",
|
||||
contractStartsAt: null,
|
||||
contractEndsAt: null,
|
||||
paidUntil: null,
|
||||
demoEndsAt: null,
|
||||
contactName: "NODE.DC",
|
||||
contactEmail: null,
|
||||
avatarUrl: null,
|
||||
notes: "Системный контур для публичных заявок, публичных инвайтов и self-service пользователей.",
|
||||
createdAt: "2026-05-09T00:00:00.000Z",
|
||||
updatedAt: "2026-05-09T00:00:00.000Z",
|
||||
};
|
||||
|
||||
export function isPublicPoolClientId(clientId: string | null | undefined): boolean {
|
||||
return clientId === PUBLIC_POOL_CLIENT_ID;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
export type TaskerInviteRequestStatus = "new" | "approved" | "rejected" | "cancelled";
|
||||
export type TaskerInviteRequestRole = "guest" | "member" | "admin";
|
||||
|
||||
export interface TaskerInviteRequest {
|
||||
id: string;
|
||||
taskerInviteId: string;
|
||||
workspaceId?: string | null;
|
||||
workspaceSlug: string;
|
||||
workspaceName: string;
|
||||
inviteeEmail: string;
|
||||
role: TaskerInviteRequestRole;
|
||||
inviterUserId?: string | null;
|
||||
inviterPlaneUserId?: string | null;
|
||||
inviterEmail: string;
|
||||
inviterName: string;
|
||||
status: TaskerInviteRequestStatus;
|
||||
taskerInviteLink?: string | null;
|
||||
platformInviteId?: string | null;
|
||||
platformInviteToken?: string | null;
|
||||
reviewedByUserId?: string | null;
|
||||
reviewedAt?: string | null;
|
||||
comment?: string | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
@@ -30,6 +30,10 @@ export interface ClientMembership {
|
||||
userId: string;
|
||||
role: ClientMembershipRole;
|
||||
status: ClientMembershipStatus;
|
||||
invitedByUserId?: string | null;
|
||||
inviteId?: string | null;
|
||||
source?: "launcher" | "access_request" | "tasker_workspace_invite" | null;
|
||||
sourceTaskerInviteRequestId?: string | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user