From a579e71b9b36bf673e99fb3f4f6f851b81b049df Mon Sep 17 00:00:00 2001 From: DCCONSTRUCTIONS Date: Sat, 9 May 2026 22:56:43 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=A3=D0=9D=D0=9A=D0=A6=D0=98=D0=98=20-?= =?UTF-8?q?=20=D0=9C=D0=95=D0=96=D0=9F=D0=A0=D0=9E=D0=95=D0=9A=D0=A2=D0=9D?= =?UTF-8?q?=D0=90=D0=AF=20=D0=9A=D0=9E=D0=9C=D0=9C=D0=A3=D0=9D=D0=98=D0=9A?= =?UTF-8?q?=D0=90=D0=A6=D0=98=D0=AF:=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B?= =?UTF-8?q?=D1=82=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=BD=D1=82=D1=83=D1=80=20?= =?UTF-8?q?=D0=B8=20self-service=20=D0=B8=D0=BD=D0=B2=D0=B0=D0=B9=D1=82?= =?UTF-8?q?=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/storage/launcher-data.json | 870 +++++++++++++++++- ...e-31e1669e-28da-428a-9e2a-d51a781f041f.jpg | Bin 0 -> 295412 bytes server/authentik-sync.mjs | 20 +- server/control-plane-store.mjs | 751 ++++++++++++++- server/dev-server.mjs | 261 +++++- src/app/LauncherApp.tsx | 420 +++++++-- src/entities/access-request/types.ts | 31 + src/entities/invite/types.ts | 5 + src/entities/public-pool/constants.ts | 27 + src/entities/tasker-invite-request/types.ts | 25 + src/entities/user/types.ts | 4 + src/shared/api/accessRequestApi.ts | 40 + src/shared/api/adminApi.ts | 83 ++ src/shared/api/inviteApi.ts | 8 +- src/shared/api/mockApi.ts | 15 + src/shared/api/mockData.ts | 5 + src/styles/globals.css | 245 ++++- src/widgets/admin-overlay/AdminOverlay.tsx | 688 +++++++++++++- src/widgets/top-bar/TopBar.tsx | 7 +- 19 files changed, 3406 insertions(+), 99 deletions(-) create mode 100644 public/storage/uploads/1778326544251-ddfabfce-31e1669e-28da-428a-9e2a-d51a781f041f.jpg create mode 100644 src/entities/access-request/types.ts create mode 100644 src/entities/public-pool/constants.ts create mode 100644 src/entities/tasker-invite-request/types.ts create mode 100644 src/shared/api/accessRequestApi.ts diff --git a/public/storage/launcher-data.json b/public/storage/launcher-data.json index 24a5da6..b348d71 100644 --- a/public/storage/launcher-data.json +++ b/public/storage/launcher-data.json @@ -23,12 +23,14 @@ { "slug": "nodedc", "name": "NODE DC", - "isPrimary": true + "isPrimary": true, + "managedBy": "launcher" }, { "slug": "dcabramov", "name": "DCABRAMOV", - "isPrimary": false + "isPrimary": false, + "managedBy": "launcher" } ] } @@ -128,6 +130,45 @@ "globalStatus": "active", "createdAt": "2026-05-06T01:06:48.113Z", "updatedAt": "2026-05-06T01:28:06.887Z" + }, + { + "id": "user_ayo_ayo_ae_gmail_com", + "authentikUserId": "529588a1-48fa-44f7-a2a7-dc24f9b6626b", + "name": "Anna Ayo", + "email": "ayo.ayo.ae@gmail.com", + "phone": null, + "position": null, + "notes": "Создан через публичную регистрацию по инвайту клиента Открытый контур.", + "avatarUrl": "/storage/uploads/1778326544251-ddfabfce-31e1669e-28da-428a-9e2a-d51a781f041f.jpg", + "globalStatus": "active", + "createdAt": "2026-05-09T11:33:58.892Z", + "updatedAt": "2026-05-09T12:34:39.358Z" + }, + { + "id": "user_alah_gmail_com", + "authentikUserId": "1a3e1273-8d77-4747-947a-295f8ac89418", + "name": "ALAH", + "email": "alah@gmail.com", + "phone": null, + "position": null, + "notes": "Создан через публичную регистрацию по инвайту клиента Открытый контур.", + "avatarUrl": null, + "globalStatus": "active", + "createdAt": "2026-05-09T17:26:58.823Z", + "updatedAt": "2026-05-09T18:58:28.494Z" + }, + { + "id": "user_pupa_mail_ru", + "authentikUserId": "a2a1b489-f492-45a0-a5bd-04f6c1ede80d", + "name": "PUPA", + "email": "pupa@mail.ru", + "phone": null, + "position": null, + "notes": "Создан через публичную регистрацию по инвайту клиента Открытый контур.", + "avatarUrl": null, + "globalStatus": "active", + "createdAt": "2026-05-09T19:37:43.521Z", + "updatedAt": "2026-05-09T19:37:43.533Z" } ], "memberships": [ @@ -193,6 +234,41 @@ "status": "active", "createdAt": "2026-05-06T01:06:48.113Z", "updatedAt": "2026-05-06T01:06:48.113Z" + }, + { + "id": "mem_client_public_pool_ayo_ayo_ae_gmail_com", + "clientId": "client_public_pool", + "userId": "user_ayo_ayo_ae_gmail_com", + "role": "member", + "status": "active", + "createdAt": "2026-05-09T11:33:58.892Z", + "updatedAt": "2026-05-09T11:33:58.892Z" + }, + { + "id": "mem_client_public_pool_alah_gmail_com", + "clientId": "client_public_pool", + "userId": "user_alah_gmail_com", + "role": "member", + "status": "active", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "inviteId": "invite_ayoyoyo_alah_gmail_com_2", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_alah_gmail_com_2", + "createdAt": "2026-05-09T17:26:58.823Z", + "updatedAt": "2026-05-09T18:58:27.834Z" + }, + { + "id": "mem_client_public_pool_pupa_mail_ru", + "clientId": "client_public_pool", + "userId": "user_pupa_mail_ru", + "role": "member", + "status": "active", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "inviteId": "invite_ayoyoyo_pupa_mail_ru", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_pupa_mail_ru", + "createdAt": "2026-05-09T19:37:43.521Z", + "updatedAt": "2026-05-09T19:37:43.521Z" } ], "groups": [ @@ -439,6 +515,36 @@ "status": "active", "createdAt": "2026-05-05T16:04:52.709Z", "updatedAt": "2026-05-08T10:14:37.303Z" + }, + { + "id": "grant_task_manager_user_ayo_ayo_ae_gmail_com", + "serviceId": "service_task_manager", + "targetType": "user", + "targetId": "user_ayo_ayo_ae_gmail_com", + "appRole": "admin", + "status": "active", + "createdAt": "2026-05-09T12:34:38.766Z", + "updatedAt": "2026-05-09T12:34:38.766Z" + }, + { + "id": "grant_task_manager_user_alah_gmail_com", + "serviceId": "service_task_manager", + "targetType": "user", + "targetId": "user_alah_gmail_com", + "appRole": "member", + "status": "active", + "createdAt": "2026-05-09T18:58:27.834Z", + "updatedAt": "2026-05-09T18:58:27.834Z" + }, + { + "id": "grant_task_manager_user_pupa_mail_ru", + "serviceId": "service_task_manager", + "targetType": "user", + "targetId": "user_pupa_mail_ru", + "appRole": "member", + "status": "active", + "createdAt": "2026-05-09T19:37:43.521Z", + "updatedAt": "2026-05-09T19:37:43.521Z" } ], "exceptions": [], @@ -502,6 +608,90 @@ "status": "accepted", "createdAt": "2026-05-06T01:04:54.007Z", "updatedAt": "2026-05-06T01:06:48.113Z" + }, + { + "id": "invite_ayo_ayo_ae_gmail_com", + "clientId": "client_public_pool", + "email": "ayo.ayo.ae@gmail.com", + "role": "member", + "invitedByUserId": "user_root", + "token": "2555c4e6-6a84-429c-8f21-bb41a5e51c28", + "expiresAt": "2026-05-16T11:32:40.371Z", + "status": "accepted", + "createdAt": "2026-05-09T11:32:40.370Z", + "updatedAt": "2026-05-09T11:33:58.892Z" + }, + { + "id": "invite_ayoyoyo_alah_mail_ru", + "clientId": "client_public_pool", + "email": "alah@mail.ru", + "role": "member", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_alah_mail_ru_2", + "sourceTaskerInviteId": "bcb82953-f277-4f0c-a61a-1b0791a8a381", + "sourceWorkspaceSlug": "ayoyoyo", + "sourceWorkspaceName": "AYOYOYO", + "sourceTaskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=bcb82953-f277-4f0c-a61a-1b0791a8a381&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzM2NjcxLjIzNTc3fQ.wyKAbnfPd2NasrAEbmg8KaYo-nOGFKHgC0nERaekuys", + "token": "e0726f74-82c0-49d8-bd08-e6df097bde44", + "expiresAt": "2026-05-16T17:08:10.886Z", + "status": "revoked", + "createdAt": "2026-05-09T17:08:10.886Z", + "updatedAt": "2026-05-09T17:25:17.778Z" + }, + { + "id": "invite_ayoyoyo_alah_gmail_com", + "clientId": "client_public_pool", + "email": "alah@gmail.com", + "role": "member", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_alah_gmail_com", + "sourceTaskerInviteId": "359913f5-80e6-4772-82f9-19e653cf1147", + "sourceWorkspaceSlug": "ayoyoyo", + "sourceWorkspaceName": "AYOYOYO", + "sourceTaskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=359913f5-80e6-4772-82f9-19e653cf1147&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAZ21haWwuY29tIiwicm9sZSI6MTV9LCJ0aW1lc3RhbXAiOjE3NzgzNDc1NTQuMzg3MTV9.ECLpdg1RAaCll_GfNZEx1OTI3sf3bfuRxmJShpEZruM", + "token": "410184c9-926b-4e6a-8649-3c0178c7d248", + "expiresAt": "2026-05-16T17:26:04.673Z", + "status": "accepted", + "createdAt": "2026-05-09T17:26:04.673Z", + "updatedAt": "2026-05-09T17:26:58.823Z" + }, + { + "id": "invite_ayoyoyo_alah_gmail_com_2", + "clientId": "client_public_pool", + "email": "alah@gmail.com", + "role": "member", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_alah_gmail_com_2", + "sourceTaskerInviteId": "c6cc5c82-641a-4cf8-aa3d-c28fb76ee83c", + "sourceWorkspaceSlug": "ayoyoyo", + "sourceWorkspaceName": "AYOYOYO", + "sourceTaskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=c6cc5c82-641a-4cf8-aa3d-c28fb76ee83c&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAZ21haWwuY29tIiwicm9sZSI6MTV9LCJ0aW1lc3RhbXAiOjE3NzgzNTMwNTIuMzYxODc5fQ.NtsQ5-48bXpOCgU7Z4u4QxLHZZvgiWVXtJ6e_yUrpfg", + "token": "c8ca208c-7a8b-4d32-8559-81bf6fd360d9", + "expiresAt": "2026-05-16T18:58:00.118Z", + "status": "accepted", + "createdAt": "2026-05-09T18:58:00.118Z", + "updatedAt": "2026-05-09T18:58:27.834Z" + }, + { + "id": "invite_ayoyoyo_pupa_mail_ru", + "clientId": "client_public_pool", + "email": "pupa@mail.ru", + "role": "member", + "invitedByUserId": "user_ayo_ayo_ae_gmail_com", + "source": "tasker_workspace_invite", + "sourceTaskerInviteRequestId": "tasker_invite_request_ayoyoyo_pupa_mail_ru", + "sourceTaskerInviteId": "9b470198-5685-4ebf-b330-75b357363e97", + "sourceWorkspaceSlug": "ayoyoyo", + "sourceWorkspaceName": "AYOYOYO", + "sourceTaskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=9b470198-5685-4ebf-b330-75b357363e97&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6InB1cGFAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzU1Mzc5LjI4MDg0MX0.q9fLuUBLXNYK9XZk0y02zjc55uixPfKTMiS92oOfEoU", + "token": "dee0814c-917a-456c-be5d-f8da468136c9", + "expiresAt": "2026-05-16T19:36:41.118Z", + "status": "accepted", + "createdAt": "2026-05-09T19:36:41.118Z", + "updatedAt": "2026-05-09T19:37:43.521Z" } ], "syncStatuses": [ @@ -746,9 +936,97 @@ "lastSyncAt": null, "error": null, "updatedAt": "2026-05-06T01:28:06.516Z" + }, + { + "id": "sync_invite_invite_ayo_ayo_ae_gmail_com", + "objectId": "invite_ayo_ayo_ae_gmail_com", + "objectName": "ayo.ayo.ae@gmail.com", + "objectType": "invite", + "target": "authentik", + "state": "pending", + "lastSyncAt": null, + "error": null, + "updatedAt": "2026-05-09T11:32:51.152Z" + }, + { + "id": "sync_user_user_ayo_ayo_ae_gmail_com", + "objectId": "user_ayo_ayo_ae_gmail_com", + "objectName": "ayo.ayo.ae@gmail.com", + "objectType": "user", + "target": "authentik", + "state": "synced", + "lastSyncAt": "2026-05-09T12:34:39.358Z", + "error": null, + "updatedAt": "2026-05-09T12:34:39.358Z" + }, + { + "id": "sync_grant_service_task_manager_user_ayo_ayo_ae_gmail_com", + "objectId": "service_task_manager:user_ayo_ayo_ae_gmail_com", + "objectName": "task-manager:ayo.ayo.ae@gmail.com", + "objectType": "grant", + "target": "authentik", + "state": "pending", + "lastSyncAt": null, + "error": null, + "updatedAt": "2026-05-09T12:34:38.766Z" + }, + { + "id": "sync_grant_service_task_manager_user_alah_gmail_com", + "objectId": "service_task_manager:user_alah_gmail_com", + "objectName": "task-manager:alah@gmail.com", + "objectType": "grant", + "target": "authentik", + "state": "pending", + "lastSyncAt": null, + "error": null, + "updatedAt": "2026-05-09T18:58:27.834Z" + }, + { + "id": "sync_user_user_alah_gmail_com", + "objectId": "user_alah_gmail_com", + "objectName": "alah@gmail.com", + "objectType": "user", + "target": "authentik", + "state": "synced", + "lastSyncAt": "2026-05-09T18:58:28.494Z", + "error": null, + "updatedAt": "2026-05-09T18:58:28.494Z" + }, + { + "id": "sync_grant_service_task_manager_user_pupa_mail_ru", + "objectId": "service_task_manager:user_pupa_mail_ru", + "objectName": "task-manager:pupa@mail.ru", + "objectType": "grant", + "target": "authentik", + "state": "pending", + "lastSyncAt": null, + "error": null, + "updatedAt": "2026-05-09T19:37:43.521Z" + }, + { + "id": "sync_user_user_pupa_mail_ru", + "objectId": "user_pupa_mail_ru", + "objectName": "pupa@mail.ru", + "objectType": "user", + "target": "authentik", + "state": "synced", + "lastSyncAt": "2026-05-09T19:37:43.533Z", + "error": null, + "updatedAt": "2026-05-09T19:37:43.533Z" } ], "auditEvents": [ + { + "id": "audit_1778336274475_tasker_invite_cancelled", + "createdAt": "2026-05-09T14:17:54.470Z", + "actorUserId": null, + "actorName": "Operational Core", + "action": "Отозвана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "result": "warning", + "details": "Отозвано в Operational Core" + }, { "id": "audit_live_seed_control_plane", "at": "2026-05-04T12:55:13.842Z", @@ -2920,6 +3198,462 @@ "clientId": "client_2", "result": "warning", "details": null + }, + { + "id": "audit_ayo_ayo_ae_gmail_com", + "at": "2026-05-09T11:01:08.503Z", + "actorUserId": "public", + "actorName": "DC", + "action": "Создана публичная заявка", + "objectType": "access_request", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "DC" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_2", + "at": "2026-05-09T11:32:40.371Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена публичная заявка", + "objectType": "access_request", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Invite: invite_ayo_ayo_ae_gmail_com; target: Открытый контур; role: member" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_3", + "at": "2026-05-09T11:32:51.152Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Обновлён инвайт", + "objectType": "invite", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": null + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_4", + "at": "2026-05-09T11:33:58.892Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Регистрация по инвайту", + "objectType": "invite", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_5", + "at": "2026-05-09T11:33:58.934Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_6", + "at": "2026-05-09T11:35:48.963Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Обновлён профиль пользователя", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": null + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_7", + "at": "2026-05-09T11:35:49.157Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_task_manager", + "at": "2026-05-09T12:23:47.333Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Обновлён доступ пользователя к сервису", + "objectType": "grant", + "objectName": "ayo.ayo.ae@gmail.com / task-manager", + "clientId": null, + "result": "success", + "details": "Value: admin" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_8", + "at": "2026-05-09T12:23:50.206Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user, nodedc:taskmanager:user, nodedc:taskmanager:admin" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_task_manager_2", + "at": "2026-05-09T12:24:41.929Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Обновлён доступ пользователя к сервису", + "objectType": "grant", + "objectName": "ayo.ayo.ae@gmail.com / task-manager", + "clientId": null, + "result": "success", + "details": "Value: deny" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_9", + "at": "2026-05-09T12:24:42.117Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_task_manager_3", + "at": "2026-05-09T12:34:38.766Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Обновлён доступ пользователя к сервису", + "objectType": "grant", + "objectName": "ayo.ayo.ae@gmail.com / task-manager", + "clientId": null, + "result": "success", + "details": "Value: admin" + }, + { + "id": "audit_ayo_ayo_ae_gmail_com_10", + "at": "2026-05-09T12:34:39.358Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "ayo.ayo.ae@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user, nodedc:taskmanager:user, nodedc:taskmanager:admin" + }, + { + "id": "audit_ayoyoyo_alah_mail_ru", + "at": "2026-05-09T13:43:17.849Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Создана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "clientId": null, + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_ayoyoyo_alah_mail_ru_2", + "at": "2026-05-09T13:43:47.185Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "clientId": null, + "result": "success", + "details": "http://task.local.nodedc/workspace-invitations/?invitation_id=af8c6a1c-9ac2-44c8-9023-f27bc93d76d8&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzM0MTk3Ljc4NjAyMX0.iup2nsWz2r0LCbOv8vH6INI0fo7dWdLfN2Jtxz76E-I" + }, + { + "id": "audit_ayoyoyo_alah_mail_ru_3", + "at": "2026-05-09T14:24:31.257Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Создана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "clientId": null, + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_ayoyoyo_alah_mail_ru_4", + "at": "2026-05-09T14:24:41.276Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "clientId": null, + "result": "success", + "details": "http://task.local.nodedc/workspace-invitations/?invitation_id=bcb82953-f277-4f0c-a61a-1b0791a8a381&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzM2NjcxLjIzNTc3fQ.wyKAbnfPd2NasrAEbmg8KaYo-nOGFKHgC0nERaekuys" + }, + { + "id": "audit_alah_mail_ru", + "at": "2026-05-09T17:08:10.887Z", + "actorUserId": "system", + "actorName": "NODE.DC Root", + "action": "Создан platform-инвайт для workspace-инвайта", + "objectType": "invite", + "objectName": "alah@mail.ru", + "clientId": "client_public_pool", + "result": "success", + "details": "ayoyoyo; inviter: ayo.ayo.ae@gmail.com" + }, + { + "id": "audit_ayoyoyo_alah_mail_ru_5", + "at": "2026-05-09T17:25:17.781Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Отозвана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@mail.ru", + "clientId": null, + "result": "warning", + "details": "Отозвано в Operational Core" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com", + "at": "2026-05-09T17:25:54.406Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Создана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_alah_gmail_com", + "at": "2026-05-09T17:26:04.674Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Создан platform-инвайт для workspace-инвайта", + "objectType": "invite", + "objectName": "alah@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": "ayoyoyo; inviter: ayo.ayo.ae@gmail.com" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com_2", + "at": "2026-05-09T17:26:04.726Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "success", + "details": "http://task.local.nodedc/workspace-invitations/?invitation_id=359913f5-80e6-4772-82f9-19e653cf1147&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAZ21haWwuY29tIiwicm9sZSI6MTV9LCJ0aW1lc3RhbXAiOjE3NzgzNDc1NTQuMzg3MTV9.ECLpdg1RAaCll_GfNZEx1OTI3sf3bfuRxmJShpEZruM" + }, + { + "id": "audit_alah_gmail_com_2", + "at": "2026-05-09T17:26:58.823Z", + "actorUserId": "user_alah_gmail_com", + "actorName": "ALAH", + "action": "Регистрация по инвайту", + "objectType": "invite", + "objectName": "alah@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_alah_gmail_com_3", + "at": "2026-05-09T17:26:58.829Z", + "actorUserId": "user_alah_gmail_com", + "actorName": "ALAH", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "alah@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user, nodedc:taskmanager:user" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com_3", + "at": "2026-05-09T18:01:41.568Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Отозвана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "warning", + "details": "Отозвано в Operational Core" + }, + { + "id": "audit_alah_gmail_com_task_manager", + "at": "2026-05-09T18:22:48.238Z", + "actorUserId": "user_alah_gmail_com", + "actorName": "ALAH", + "action": "Снят доступ Operational Core по workspace-инвайту", + "objectType": "grant", + "objectName": "alah@gmail.com / task-manager", + "clientId": null, + "result": "warning", + "details": "Workspace invite: ayoyoyo; cancelled at: 2026-05-09T18:22:48.238Z" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com_4", + "at": "2026-05-09T18:22:48.238Z", + "actorUserId": "system", + "actorName": "NODE.DC cleanup", + "action": "Отозвана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "warning", + "details": "Пользователь удалён из workspace Operational Core." + }, + { + "id": "audit_alah_gmail_com_4", + "at": "2026-05-09T18:26:10.793Z", + "actorUserId": "system", + "actorName": "NODE.DC sync cleanup", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "alah@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com_5", + "at": "2026-05-09T18:57:32.381Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Создана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_alah_gmail_com_5", + "at": "2026-05-09T18:58:00.118Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Создан platform-инвайт для workspace-инвайта", + "objectType": "invite", + "objectName": "alah@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": "ayoyoyo; inviter: ayo.ayo.ae@gmail.com" + }, + { + "id": "audit_ayoyoyo_alah_gmail_com_6", + "at": "2026-05-09T18:58:00.166Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:alah@gmail.com", + "clientId": null, + "result": "success", + "details": "http://task.local.nodedc/workspace-invitations/?invitation_id=c6cc5c82-641a-4cf8-aa3d-c28fb76ee83c&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAZ21haWwuY29tIiwicm9sZSI6MTV9LCJ0aW1lc3RhbXAiOjE3NzgzNTMwNTIuMzYxODc5fQ.NtsQ5-48bXpOCgU7Z4u4QxLHZZvgiWVXtJ6e_yUrpfg" + }, + { + "id": "audit_alah_gmail_com_6", + "at": "2026-05-09T18:58:27.834Z", + "actorUserId": "user_alah_gmail_com", + "actorName": "ALAH", + "action": "Инвайт принят", + "objectType": "invite", + "objectName": "alah@gmail.com", + "clientId": "client_public_pool", + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_alah_gmail_com_7", + "at": "2026-05-09T18:58:28.494Z", + "actorUserId": "user_alah_gmail_com", + "actorName": "ALAH", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "alah@gmail.com", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user, nodedc:taskmanager:user" + }, + { + "id": "audit_ayoyoyo_pupa_mail_ru", + "at": "2026-05-09T19:36:19.366Z", + "actorUserId": "user_ayo_ayo_ae_gmail_com", + "actorName": "Anna Ayo", + "action": "Создана заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:pupa@mail.ru", + "clientId": null, + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_pupa_mail_ru", + "at": "2026-05-09T19:36:41.118Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Создан platform-инвайт для workspace-инвайта", + "objectType": "invite", + "objectName": "pupa@mail.ru", + "clientId": "client_public_pool", + "result": "success", + "details": "ayoyoyo; inviter: ayo.ayo.ae@gmail.com" + }, + { + "id": "audit_ayoyoyo_pupa_mail_ru_2", + "at": "2026-05-09T19:36:41.170Z", + "actorUserId": "user_root", + "actorName": "DC SUDO", + "action": "Подтверждена заявка workspace-инвайта", + "objectType": "tasker_invite_request", + "objectName": "ayoyoyo:pupa@mail.ru", + "clientId": null, + "result": "success", + "details": "http://task.local.nodedc/workspace-invitations/?invitation_id=9b470198-5685-4ebf-b330-75b357363e97&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6InB1cGFAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzU1Mzc5LjI4MDg0MX0.q9fLuUBLXNYK9XZk0y02zjc55uixPfKTMiS92oOfEoU" + }, + { + "id": "audit_pupa_mail_ru_2", + "at": "2026-05-09T19:37:43.521Z", + "actorUserId": "user_pupa_mail_ru", + "actorName": "PUPA", + "action": "Регистрация по инвайту", + "objectType": "invite", + "objectName": "pupa@mail.ru", + "clientId": "client_public_pool", + "result": "success", + "details": "Role: member" + }, + { + "id": "audit_pupa_mail_ru_3", + "at": "2026-05-09T19:37:43.533Z", + "actorUserId": "user_pupa_mail_ru", + "actorName": "PUPA", + "action": "Пользователь синхронизирован в Authentik", + "objectType": "user", + "objectName": "pupa@mail.ru", + "clientId": null, + "result": "success", + "details": "Groups: nodedc:launcher:user, nodedc:taskmanager:user" } ], "settings": { @@ -3049,5 +3783,137 @@ "planeRole": 15, "updatedAt": "2026-05-08T11:52:50.104Z" } + ], + "accessRequests": [ + { + "id": "access_request_ayo_ayo_ae_gmail_com", + "email": "ayo.ayo.ae@gmail.com", + "firstName": "Anna", + "lastName": "Ayo", + "middleName": "Ayo", + "phone": "+7 (925) 420-88-84", + "company": "DC", + "status": "approved", + "targetClientId": "client_public_pool", + "role": "member", + "approvedInviteId": "invite_ayo_ayo_ae_gmail_com", + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T11:32:40.370Z", + "comment": null, + "createdAt": "2026-05-09T11:01:08.481Z", + "updatedAt": "2026-05-09T11:32:40.370Z" + } + ], + "taskerInviteRequests": [ + { + "id": "tasker_invite_request_ayoyoyo_alah_mail_ru", + "taskerInviteId": "af8c6a1c-9ac2-44c8-9023-f27bc93d76d8", + "workspaceId": "9554ef6f-afa0-424b-b27f-16cca437f2d2", + "workspaceSlug": "ayoyoyo", + "workspaceName": "AYOYOYO", + "inviteeEmail": "alah@mail.ru", + "role": "member", + "inviterUserId": "user_ayo_ayo_ae_gmail_com", + "inviterPlaneUserId": "b91bd701-9e50-41e7-a8de-255041772a39", + "inviterEmail": "ayo.ayo.ae@gmail.com", + "inviterName": "Anna Ayo", + "status": "cancelled", + "taskerInviteLink": null, + "platformInviteId": null, + "platformInviteToken": null, + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T13:43:47.185Z", + "comment": "Отозвано в Operational Core", + "createdAt": "2026-05-09T13:43:17.845Z", + "updatedAt": "2026-05-09T14:17:54.470Z" + }, + { + "id": "tasker_invite_request_ayoyoyo_alah_mail_ru_2", + "taskerInviteId": "bcb82953-f277-4f0c-a61a-1b0791a8a381", + "workspaceId": "9554ef6f-afa0-424b-b27f-16cca437f2d2", + "workspaceSlug": "ayoyoyo", + "workspaceName": "AYOYOYO", + "inviteeEmail": "alah@mail.ru", + "role": "member", + "inviterUserId": "user_ayo_ayo_ae_gmail_com", + "inviterPlaneUserId": "b91bd701-9e50-41e7-a8de-255041772a39", + "inviterEmail": "ayo.ayo.ae@gmail.com", + "inviterName": "Anna Ayo", + "status": "cancelled", + "taskerInviteLink": null, + "platformInviteId": "invite_ayoyoyo_alah_mail_ru", + "platformInviteToken": "e0726f74-82c0-49d8-bd08-e6df097bde44", + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T14:24:41.276Z", + "comment": "Отозвано в Operational Core", + "createdAt": "2026-05-09T14:24:31.256Z", + "updatedAt": "2026-05-09T17:25:17.778Z" + }, + { + "id": "tasker_invite_request_ayoyoyo_alah_gmail_com", + "taskerInviteId": "359913f5-80e6-4772-82f9-19e653cf1147", + "workspaceId": "9554ef6f-afa0-424b-b27f-16cca437f2d2", + "workspaceSlug": "ayoyoyo", + "workspaceName": "AYOYOYO", + "inviteeEmail": "alah@gmail.com", + "role": "member", + "inviterUserId": "user_ayo_ayo_ae_gmail_com", + "inviterPlaneUserId": "b91bd701-9e50-41e7-a8de-255041772a39", + "inviterEmail": "ayo.ayo.ae@gmail.com", + "inviterName": "Anna Ayo", + "status": "cancelled", + "taskerInviteLink": null, + "platformInviteId": "invite_ayoyoyo_alah_gmail_com", + "platformInviteToken": "410184c9-926b-4e6a-8649-3c0178c7d248", + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T17:26:04.726Z", + "comment": "Пользователь удалён из workspace Operational Core.", + "createdAt": "2026-05-09T17:25:54.405Z", + "updatedAt": "2026-05-09T18:22:48.238Z" + }, + { + "id": "tasker_invite_request_ayoyoyo_alah_gmail_com_2", + "taskerInviteId": "c6cc5c82-641a-4cf8-aa3d-c28fb76ee83c", + "workspaceId": "9554ef6f-afa0-424b-b27f-16cca437f2d2", + "workspaceSlug": "ayoyoyo", + "workspaceName": "AYOYOYO", + "inviteeEmail": "alah@gmail.com", + "role": "member", + "inviterUserId": "user_ayo_ayo_ae_gmail_com", + "inviterPlaneUserId": "b91bd701-9e50-41e7-a8de-255041772a39", + "inviterEmail": "ayo.ayo.ae@gmail.com", + "inviterName": "Anna Ayo", + "status": "approved", + "taskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=c6cc5c82-641a-4cf8-aa3d-c28fb76ee83c&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6ImFsYWhAZ21haWwuY29tIiwicm9sZSI6MTV9LCJ0aW1lc3RhbXAiOjE3NzgzNTMwNTIuMzYxODc5fQ.NtsQ5-48bXpOCgU7Z4u4QxLHZZvgiWVXtJ6e_yUrpfg", + "platformInviteId": "invite_ayoyoyo_alah_gmail_com_2", + "platformInviteToken": "c8ca208c-7a8b-4d32-8559-81bf6fd360d9", + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T18:58:00.166Z", + "comment": null, + "createdAt": "2026-05-09T18:57:32.379Z", + "updatedAt": "2026-05-09T18:58:00.166Z" + }, + { + "id": "tasker_invite_request_ayoyoyo_pupa_mail_ru", + "taskerInviteId": "9b470198-5685-4ebf-b330-75b357363e97", + "workspaceId": "9554ef6f-afa0-424b-b27f-16cca437f2d2", + "workspaceSlug": "ayoyoyo", + "workspaceName": "AYOYOYO", + "inviteeEmail": "pupa@mail.ru", + "role": "member", + "inviterUserId": "user_ayo_ayo_ae_gmail_com", + "inviterPlaneUserId": "b91bd701-9e50-41e7-a8de-255041772a39", + "inviterEmail": "ayo.ayo.ae@gmail.com", + "inviterName": "Anna Ayo", + "status": "approved", + "taskerInviteLink": "http://task.local.nodedc/workspace-invitations/?invitation_id=9b470198-5685-4ebf-b330-75b357363e97&slug=ayoyoyo&token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6eyJlbWFpbCI6InB1cGFAbWFpbC5ydSIsInJvbGUiOjE1fSwidGltZXN0YW1wIjoxNzc4MzU1Mzc5LjI4MDg0MX0.q9fLuUBLXNYK9XZk0y02zjc55uixPfKTMiS92oOfEoU", + "platformInviteId": "invite_ayoyoyo_pupa_mail_ru", + "platformInviteToken": "dee0814c-917a-456c-be5d-f8da468136c9", + "reviewedByUserId": "user_root", + "reviewedAt": "2026-05-09T19:36:41.169Z", + "comment": null, + "createdAt": "2026-05-09T19:36:19.353Z", + "updatedAt": "2026-05-09T19:36:41.169Z" + } ] } diff --git a/public/storage/uploads/1778326544251-ddfabfce-31e1669e-28da-428a-9e2a-d51a781f041f.jpg b/public/storage/uploads/1778326544251-ddfabfce-31e1669e-28da-428a-9e2a-d51a781f041f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e816b3752e20f42cdb5c889dd809b2cb0df09a82 GIT binary patch literal 295412 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 >8XzR46 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 cA1*Py)C_Z$KX<-rp)Ox}>}yR membership.userId === userId && membership.clientId === publicPoolClientId + ); + + if (hasPublicPoolMembership) { + clients.push(publicPoolClient); + } + + return clients; +} + function generatePasswordValue() { return `NDC-${randomBytes(15).toString("base64url")}`; } diff --git a/server/control-plane-store.mjs b/server/control-plane-store.mjs index 82f9f91..2023b94 100644 --- a/server/control-plane-store.mjs +++ b/server/control-plane-store.mjs @@ -12,6 +12,8 @@ const collectionKeys = [ "grants", "exceptions", "invites", + "accessRequests", + "taskerInviteRequests", "syncStatuses", "auditEvents", "taskManagerMemberships", @@ -28,6 +30,27 @@ const grantStatuses = new Set(["active", "disabled"]); const exceptionTypes = new Set(["deny", "allow"]); const serviceStatuses = new Set(["active", "maintenance", "hidden", "disabled"]); const taskManagerWorkspaceManagedByValues = new Set(["launcher", "tasker"]); +const accessRequestStatuses = new Set(["new", "approved", "rejected"]); +const taskerInviteRequestStatuses = new Set(["new", "approved", "rejected", "cancelled"]); +const taskManagerInviteRoles = new Set(["guest", "member", "admin"]); +const publicPoolClientId = "client_public_pool"; +const publicPoolClient = { + id: publicPoolClientId, + type: "person", + name: "Открытый контур", + legalName: "Public access pool", + 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", +}; const defaultSettings = { brand: { logoLinkUrl: "/", @@ -386,7 +409,7 @@ export function createControlPlaneStore({ projectRoot }) { const actor = resolveActor(data, identity); const now = isoNow(); const clientId = requireString(payload?.clientId, "clientId"); - const client = findById(data.clients, clientId, "client"); + const client = findClientById(data, clientId); const email = requireString(payload?.email, "email").toLowerCase(); const existingUser = data.users.find((item) => item.email.toLowerCase() === email); const user = @@ -429,6 +452,10 @@ export function createControlPlaneStore({ projectRoot }) { userId: user.id, role: pickEnum(payload?.role, membershipRoles, "member"), status: pickEnum(payload?.membershipStatus, new Set(["active", "disabled"]), "active"), + invitedByUserId: actor.id, + inviteId: null, + source: "launcher", + sourceTaskerInviteRequestId: null, createdAt: now, updatedAt: now, }; @@ -519,7 +546,7 @@ export function createControlPlaneStore({ projectRoot }) { const actor = resolveActor(data, identity); const now = isoNow(); const clientId = requireString(payload?.clientId, "clientId"); - const client = findById(data.clients, clientId, "client"); + const client = findClientById(data, clientId); const email = requireString(payload?.email, "email").toLowerCase(); const role = pickEnum(payload?.role, membershipRoles, "member"); const expiresAt = optionalString(payload?.expiresAt, new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString()); @@ -529,6 +556,11 @@ export function createControlPlaneStore({ projectRoot }) { email, role, invitedByUserId: actor.id, + source: "launcher", + sourceTaskerInviteRequestId: null, + sourceTaskerInviteId: null, + sourceWorkspaceSlug: null, + sourceWorkspaceName: null, token: randomUUID(), expiresAt, status: "created", @@ -551,6 +583,407 @@ export function createControlPlaneStore({ projectRoot }) { return { invite, data }; } + async function createAccessRequest(payload) { + const data = readData(); + const now = isoNow(); + const requestPayload = sanitizeAccessRequestPayload(payload); + const email = requestPayload.email.toLowerCase(); + const existingRequest = data.accessRequests.find( + (candidate) => candidate.email.toLowerCase() === email && candidate.status === "new" + ); + + if (existingRequest) { + Object.assign(existingRequest, { + ...requestPayload, + email, + updatedAt: now, + }); + addAuditEvent(data, { id: "public", name: requestPayload.company, email, source: "public" }, { + action: "Обновлена публичная заявка", + objectType: "access_request", + objectName: email, + clientId: null, + result: "success", + details: requestPayload.company, + }); + + await writeData(data); + return { accessRequest: existingRequest, data }; + } + + const accessRequest = { + id: uniqueId(data.accessRequests, "access_request", email), + ...requestPayload, + email, + status: "new", + targetClientId: publicPoolClientId, + role: "member", + approvedInviteId: null, + reviewedByUserId: null, + reviewedAt: null, + comment: null, + createdAt: now, + updatedAt: now, + }; + + data.accessRequests.push(accessRequest); + addAuditEvent(data, { id: "public", name: requestPayload.company, email, source: "public" }, { + action: "Создана публичная заявка", + objectType: "access_request", + objectName: email, + clientId: null, + result: "success", + details: requestPayload.company, + }); + + await writeData(data); + return { accessRequest, data }; + } + + async function updateAccessRequest(accessRequestId, payload, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const accessRequest = findAccessRequestById(data, accessRequestId); + + if (payload?.targetClientId !== undefined) { + accessRequest.targetClientId = resolveAccessRequestTargetClientId(data, payload.targetClientId, accessRequest.targetClientId); + } + + accessRequest.role = pickEnum(payload?.role, membershipRoles, accessRequest.role); + accessRequest.comment = nullableStringWithFallback(payload?.comment, accessRequest.comment ?? null); + accessRequest.updatedAt = isoNow(); + + addAuditEvent(data, actor, { + action: "Обновлена публичная заявка", + objectType: "access_request", + objectName: accessRequest.email, + clientId: accessRequest.targetClientId === publicPoolClientId ? null : accessRequest.targetClientId, + result: "success", + details: `Target: ${accessRequest.targetClientId}; role: ${accessRequest.role}`, + }); + + await writeData(data); + return { accessRequest, data }; + } + + async function approveAccessRequest(accessRequestId, payload, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const now = isoNow(); + const accessRequest = findAccessRequestById(data, accessRequestId); + + if (accessRequest.status === "rejected") { + throw new Error("Отклонённую заявку нельзя подтвердить без повторного запроса"); + } + + if (payload?.targetClientId !== undefined) { + accessRequest.targetClientId = resolveAccessRequestTargetClientId(data, payload.targetClientId, accessRequest.targetClientId); + } else { + accessRequest.targetClientId = resolveAccessRequestTargetClientId(data, accessRequest.targetClientId, publicPoolClientId); + } + + accessRequest.role = pickEnum(payload?.role, membershipRoles, accessRequest.role); + accessRequest.comment = nullableStringWithFallback(payload?.comment, accessRequest.comment ?? null); + + if (accessRequest.status === "approved" && accessRequest.approvedInviteId) { + const existingInvite = findById(data.invites, accessRequest.approvedInviteId, "invite"); + return { accessRequest, invite: existingInvite, data }; + } + + const client = findClientById(data, accessRequest.targetClientId); + const invite = { + id: uniqueId(data.invites, "invite", accessRequest.email), + clientId: client.id, + email: accessRequest.email, + role: accessRequest.role, + invitedByUserId: actor.id, + source: "access_request", + sourceTaskerInviteRequestId: null, + sourceTaskerInviteId: null, + sourceWorkspaceSlug: null, + sourceWorkspaceName: null, + token: randomUUID(), + expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(), + status: "created", + createdAt: now, + updatedAt: now, + }; + + data.invites.push(invite); + accessRequest.status = "approved"; + accessRequest.approvedInviteId = invite.id; + accessRequest.reviewedByUserId = actor.id; + accessRequest.reviewedAt = now; + accessRequest.updatedAt = now; + + addAuditEvent(data, actor, { + action: "Подтверждена публичная заявка", + objectType: "access_request", + objectName: accessRequest.email, + clientId: client.id === publicPoolClientId ? null : client.id, + result: "success", + details: `Invite: ${invite.id}; target: ${client.name}; role: ${invite.role}`, + }); + markPendingSync(data, invite, "invite", invite.email); + + await writeData(data); + return { accessRequest, invite, data }; + } + + async function rejectAccessRequest(accessRequestId, payload, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const accessRequest = findAccessRequestById(data, accessRequestId); + const now = isoNow(); + + if (accessRequest.status === "approved") { + throw new Error("Подтверждённую заявку нельзя отклонить"); + } + + accessRequest.status = "rejected"; + accessRequest.comment = nullableStringWithFallback(payload?.comment, accessRequest.comment ?? null); + accessRequest.reviewedByUserId = actor.id; + accessRequest.reviewedAt = now; + accessRequest.updatedAt = now; + + addAuditEvent(data, actor, { + action: "Отклонена публичная заявка", + objectType: "access_request", + objectName: accessRequest.email, + clientId: accessRequest.targetClientId === publicPoolClientId ? null : accessRequest.targetClientId, + result: "warning", + details: accessRequest.comment, + }); + + await writeData(data); + return { accessRequest, data }; + } + + async function createTaskerInviteRequest(payload, identity = { name: "Operational Core", source: "tasker" }) { + const data = readData(); + const now = isoNow(); + const actor = resolveActor(data, identity); + const taskerInviteId = requireString(payload?.taskerInviteId, "taskerInviteId"); + const workspaceSlug = requireString(payload?.workspaceSlug, "workspaceSlug"); + const workspaceName = optionalString(payload?.workspaceName, workspaceSlug); + const inviteeEmail = requireString(payload?.inviteeEmail, "inviteeEmail").toLowerCase(); + const role = normalizeTaskManagerInviteRole(payload?.role); + const existingRequest = data.taskerInviteRequests.find( + (request) => + request.taskerInviteId === taskerInviteId || + (request.status === "new" && request.workspaceSlug === workspaceSlug && request.inviteeEmail.toLowerCase() === inviteeEmail) + ); + const request = + existingRequest ?? + { + id: uniqueId(data.taskerInviteRequests, "tasker_invite_request", `${workspaceSlug}-${inviteeEmail}`), + taskerInviteId, + createdAt: now, + }; + + Object.assign(request, { + taskerInviteId, + workspaceId: nullableStringWithFallback(payload?.workspaceId, request.workspaceId ?? null), + workspaceSlug, + workspaceName, + inviteeEmail, + role, + inviterUserId: nullableStringWithFallback(payload?.inviterUserId, request.inviterUserId ?? null), + inviterPlaneUserId: nullableStringWithFallback(payload?.inviterPlaneUserId, request.inviterPlaneUserId ?? null), + inviterEmail: requireString(payload?.inviterEmail, "inviterEmail").toLowerCase(), + inviterName: optionalString(payload?.inviterName, payload?.inviterEmail ?? "Operational Core user"), + status: existingRequest?.status && existingRequest.status !== "rejected" ? existingRequest.status : "new", + taskerInviteLink: existingRequest?.taskerInviteLink ?? null, + reviewedByUserId: existingRequest?.reviewedByUserId ?? null, + reviewedAt: existingRequest?.reviewedAt ?? null, + comment: nullableStringWithFallback(payload?.comment, existingRequest?.comment ?? null), + updatedAt: now, + }); + + if (!existingRequest) { + data.taskerInviteRequests.push(request); + } + + addAuditEvent(data, actor, { + action: existingRequest ? "Обновлена заявка workspace-инвайта" : "Создана заявка workspace-инвайта", + objectType: "tasker_invite_request", + objectName: `${workspaceSlug}:${inviteeEmail}`, + result: "success", + details: `Role: ${role}`, + }); + + await writeData(data); + return { taskerInviteRequest: request, data }; + } + + async function approveTaskerInviteRequest(taskerInviteRequestId, payload, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const request = findTaskerInviteRequestById(data, taskerInviteRequestId); + const now = isoNow(); + + if (request.status === "rejected") { + throw new Error("Отклонённую заявку workspace-инвайта нельзя подтвердить"); + } + + request.status = "approved"; + request.taskerInviteLink = nullableStringWithFallback(payload?.taskerInviteLink, request.taskerInviteLink ?? null); + request.platformInviteId = nullableStringWithFallback(payload?.platformInviteId, request.platformInviteId ?? null); + request.platformInviteToken = nullableStringWithFallback(payload?.platformInviteToken, request.platformInviteToken ?? null); + request.comment = nullableStringWithFallback(payload?.comment, request.comment ?? null); + request.reviewedByUserId = actor.id; + request.reviewedAt = now; + request.updatedAt = now; + + if (request.platformInviteId) { + const invite = data.invites.find((candidate) => candidate.id === request.platformInviteId); + if (invite) { + invite.sourceTaskerInviteLink = request.taskerInviteLink ?? invite.sourceTaskerInviteLink ?? null; + invite.updatedAt = now; + } + } + + addAuditEvent(data, actor, { + action: "Подтверждена заявка workspace-инвайта", + objectType: "tasker_invite_request", + objectName: `${request.workspaceSlug}:${request.inviteeEmail}`, + result: "success", + details: request.taskerInviteLink ?? null, + }); + + await writeData(data); + return { taskerInviteRequest: request, data }; + } + + async function ensureTaskerInvitePlatformInvite(taskerInviteRequestId, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const request = findTaskerInviteRequestById(data, taskerInviteRequestId); + const now = isoNow(); + const client = findClientById(data, publicPoolClientId); + let invite = request.platformInviteId ? data.invites.find((candidate) => candidate.id === request.platformInviteId) : null; + + if (!invite) { + invite = data.invites.find( + (candidate) => + candidate.source === "tasker_workspace_invite" && + candidate.sourceTaskerInviteRequestId === request.id && + candidate.email.toLowerCase() === request.inviteeEmail.toLowerCase() + ); + } + + if (!invite) { + invite = { + id: uniqueId(data.invites, "invite", `${request.workspaceSlug}-${request.inviteeEmail}`), + clientId: client.id, + email: request.inviteeEmail, + role: "member", + invitedByUserId: request.inviterUserId || actor.id, + source: "tasker_workspace_invite", + sourceTaskerInviteRequestId: request.id, + sourceTaskerInviteId: request.taskerInviteId, + sourceWorkspaceSlug: request.workspaceSlug, + sourceWorkspaceName: request.workspaceName, + sourceTaskerInviteLink: request.taskerInviteLink ?? null, + token: randomUUID(), + expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(), + status: "created", + createdAt: now, + updatedAt: now, + }; + data.invites.push(invite); + addAuditEvent(data, actor, { + action: "Создан platform-инвайт для workspace-инвайта", + objectType: "invite", + objectName: invite.email, + clientId: client.id, + result: "success", + details: `${request.workspaceSlug}; inviter: ${request.inviterEmail}`, + }); + } else { + invite.clientId = client.id; + invite.role = "member"; + invite.invitedByUserId = request.inviterUserId || invite.invitedByUserId || actor.id; + invite.source = "tasker_workspace_invite"; + invite.sourceTaskerInviteRequestId = request.id; + invite.sourceTaskerInviteId = request.taskerInviteId; + invite.sourceWorkspaceSlug = request.workspaceSlug; + invite.sourceWorkspaceName = request.workspaceName; + invite.status = invite.status === "revoked" || invite.status === "expired" ? "created" : invite.status; + invite.updatedAt = now; + } + + request.platformInviteId = invite.id; + request.platformInviteToken = invite.token; + request.updatedAt = now; + + await writeData(data); + return { taskerInviteRequest: request, invite, data }; + } + + async function rejectTaskerInviteRequest(taskerInviteRequestId, payload, identity) { + const data = readData(); + const actor = resolveActor(data, identity); + const request = findTaskerInviteRequestById(data, taskerInviteRequestId); + const now = isoNow(); + + if (request.status === "approved") { + throw new Error("Подтверждённую заявку workspace-инвайта нельзя отклонить"); + } + + request.status = "rejected"; + request.comment = nullableStringWithFallback(payload?.comment, request.comment ?? null); + request.reviewedByUserId = actor.id; + request.reviewedAt = now; + request.updatedAt = now; + + addAuditEvent(data, actor, { + action: "Отклонена заявка workspace-инвайта", + objectType: "tasker_invite_request", + objectName: `${request.workspaceSlug}:${request.inviteeEmail}`, + result: "warning", + details: request.comment ?? null, + }); + + await writeData(data); + return { taskerInviteRequest: request, data }; + } + + async function cancelTaskerInviteRequest(payload, identity = { name: "Operational Core", source: "tasker" }) { + const data = readData(); + const actor = resolveActor(data, identity); + const request = findTaskerInviteRequestForCancellation(data, payload); + + if (!request) { + return { taskerInviteRequest: null, affectedUserIds: [], data }; + } + + request.status = "cancelled"; + request.taskerInviteLink = null; + request.comment = nullableStringWithFallback(payload?.comment, "Отозвано в Operational Core"); + request.updatedAt = isoNow(); + const affectedUserIds = revokeTaskerInviteServiceAccessIfOrphaned(data, request, request.updatedAt); + + if (request.platformInviteId) { + const invite = data.invites.find((candidate) => candidate.id === request.platformInviteId); + if (invite && invite.status !== "accepted") { + invite.status = "revoked"; + invite.updatedAt = request.updatedAt; + } + } + + addAuditEvent(data, actor, { + action: "Отозвана заявка workspace-инвайта", + objectType: "tasker_invite_request", + objectName: `${request.workspaceSlug}:${request.inviteeEmail}`, + result: "warning", + details: request.comment, + }); + + await writeData(data); + return { taskerInviteRequest: request, affectedUserIds, data }; + } + async function updateInvite(inviteId, payload, identity) { const data = readData(); const actor = resolveActor(data, identity); @@ -597,11 +1030,17 @@ export function createControlPlaneStore({ projectRoot }) { function getInviteByToken(token) { const data = readData(); const invite = findInviteByToken(data, token); - const client = findById(data.clients, invite.clientId, "client"); + const client = findClientById(data, invite.clientId); + const existingUser = data.users.find((user) => user.email.toLowerCase() === invite.email.toLowerCase()) ?? null; return { invite: toPublicInvite(invite), client: toPublicClient(client), + redirectUrl: resolvePublicInviteRedirectUrl(invite), + account: { + exists: Boolean(existingUser?.authentikUserId), + email: invite.email, + }, }; } @@ -623,7 +1062,7 @@ export function createControlPlaneStore({ projectRoot }) { async function acceptInvite(token, identity) { const data = readData(); const invite = findInviteByToken(data, token); - const client = findById(data.clients, invite.clientId, "client"); + const client = findClientById(data, invite.clientId); const email = requireInviteIdentityEmail(identity); const now = isoNow(); @@ -641,6 +1080,7 @@ export function createControlPlaneStore({ projectRoot }) { await writeData(data); throw new Error("Срок действия инвайта истёк"); } + validateTaskerInviteSourceCanBeAccepted(data, invite); const actor = resolveActor(data, identity); let user = data.users.find((item) => item.email.toLowerCase() === email); @@ -673,6 +1113,10 @@ export function createControlPlaneStore({ projectRoot }) { if (membership) { membership.role = invite.role; membership.status = "active"; + membership.invitedByUserId = invite.invitedByUserId ?? membership.invitedByUserId ?? null; + membership.inviteId = invite.id; + membership.source = invite.source ?? membership.source ?? "launcher"; + membership.sourceTaskerInviteRequestId = invite.sourceTaskerInviteRequestId ?? membership.sourceTaskerInviteRequestId ?? null; membership.updatedAt = now; } else { membership = { @@ -681,12 +1125,17 @@ export function createControlPlaneStore({ projectRoot }) { userId: user.id, role: invite.role, status: "active", + invitedByUserId: invite.invitedByUserId ?? null, + inviteId: invite.id, + source: invite.source ?? "launcher", + sourceTaskerInviteRequestId: invite.sourceTaskerInviteRequestId ?? null, createdAt: now, updatedAt: now, }; data.memberships.push(membership); } + ensureTaskerInviteServiceAccess(data, invite, user, now); invite.status = "accepted"; invite.updatedAt = now; @@ -1144,7 +1593,12 @@ export function createControlPlaneStore({ projectRoot }) { } return { + approveAccessRequest, + approveTaskerInviteRequest, buildAuthentikSyncPlan, + cancelTaskerInviteRequest, + createAccessRequest, + createTaskerInviteRequest, createClient, createGroup, createInvite, @@ -1155,10 +1609,13 @@ export function createControlPlaneStore({ projectRoot }) { deleteInvite, deleteMembership, deleteService, + rejectAccessRequest, + rejectTaskerInviteRequest, acceptInvite, commitInviteRegistration, getInviteByToken, getSnapshot, + ensureTaskerInvitePlatformInvite, prepareInviteRegistration, readData, replaceData, @@ -1170,6 +1627,7 @@ export function createControlPlaneStore({ projectRoot }) { removeTaskManagerProjectMembership, removeTaskManagerWorkspaceMembership, setUserServiceAccess, + updateAccessRequest, updateClient, updateGroup, updateInvite, @@ -1197,9 +1655,77 @@ function normalizeData(payload) { ...client, integrations: normalizeClientIntegrations(client.integrations), })); + data.accessRequests = data.accessRequests.map(normalizeAccessRequest).filter(Boolean); + data.taskerInviteRequests = data.taskerInviteRequests.map(normalizeTaskerInviteRequest).filter(Boolean); return data; } +function normalizeAccessRequest(payload) { + if (typeof payload !== "object" || payload === null) return null; + const now = isoNow(); + const email = typeof payload.email === "string" ? payload.email.trim().toLowerCase() : ""; + const firstName = optionalString(payload.firstName, ""); + const lastName = optionalString(payload.lastName, ""); + const middleName = optionalString(payload.middleName, ""); + const phone = optionalString(payload.phone, ""); + const company = optionalString(payload.company, ""); + + if (!email || !firstName || !lastName || !middleName || !phone || !company) return null; + + return { + id: optionalString(payload.id, `access_request_${slugify(email)}`), + email, + firstName, + lastName, + middleName, + phone, + company, + status: pickEnum(payload.status, accessRequestStatuses, "new"), + targetClientId: typeof payload.targetClientId === "string" && payload.targetClientId.trim() ? payload.targetClientId.trim() : publicPoolClientId, + role: pickEnum(payload.role, membershipRoles, "member"), + approvedInviteId: nullableStringWithFallback(payload.approvedInviteId, null), + reviewedByUserId: nullableStringWithFallback(payload.reviewedByUserId, null), + reviewedAt: nullableStringWithFallback(payload.reviewedAt, null), + comment: nullableStringWithFallback(payload.comment, null), + createdAt: optionalString(payload.createdAt, now), + updatedAt: optionalString(payload.updatedAt, now), + }; +} + +function normalizeTaskerInviteRequest(payload) { + if (typeof payload !== "object" || payload === null) return null; + const now = isoNow(); + const taskerInviteId = typeof payload.taskerInviteId === "string" ? payload.taskerInviteId.trim() : ""; + const workspaceSlug = typeof payload.workspaceSlug === "string" ? payload.workspaceSlug.trim() : ""; + const inviteeEmail = typeof payload.inviteeEmail === "string" ? payload.inviteeEmail.trim().toLowerCase() : ""; + const inviterEmail = typeof payload.inviterEmail === "string" ? payload.inviterEmail.trim().toLowerCase() : ""; + + if (!taskerInviteId || !workspaceSlug || !inviteeEmail || !inviterEmail) return null; + + return { + id: optionalString(payload.id, `tasker_invite_request_${slugify(`${workspaceSlug}-${inviteeEmail}`)}`), + taskerInviteId, + workspaceId: nullableStringWithFallback(payload.workspaceId, null), + workspaceSlug, + workspaceName: optionalString(payload.workspaceName, workspaceSlug), + inviteeEmail, + role: normalizeTaskManagerInviteRole(payload.role), + inviterUserId: nullableStringWithFallback(payload.inviterUserId, null), + inviterPlaneUserId: nullableStringWithFallback(payload.inviterPlaneUserId, null), + inviterEmail, + inviterName: optionalString(payload.inviterName, inviterEmail), + status: pickEnum(payload.status, taskerInviteRequestStatuses, "new"), + taskerInviteLink: nullableStringWithFallback(payload.taskerInviteLink, null), + platformInviteId: nullableStringWithFallback(payload.platformInviteId, null), + platformInviteToken: nullableStringWithFallback(payload.platformInviteToken, null), + reviewedByUserId: nullableStringWithFallback(payload.reviewedByUserId, null), + reviewedAt: nullableStringWithFallback(payload.reviewedAt, null), + comment: nullableStringWithFallback(payload.comment, null), + createdAt: optionalString(payload.createdAt, now), + updatedAt: optionalString(payload.updatedAt, now), + }; +} + function normalizeSettings(payload) { const settings = typeof payload === "object" && payload !== null ? payload : {}; const brand = typeof settings.brand === "object" && settings.brand !== null ? settings.brand : {}; @@ -1430,7 +1956,7 @@ async function writeJsonAtomically(filePath, payload) { function assertGrantTargetExists(data, targetType, targetId) { if (targetType === "client") { - findById(data.clients, targetId, "client"); + findClientById(data, targetId); } else if (targetType === "group") { findById(data.groups, targetId, "group"); } else { @@ -1467,12 +1993,24 @@ function isInviteExpired(invite) { function toPublicInvite(invite) { return { id: invite.id, + email: invite.email, role: invite.role, expiresAt: invite.expiresAt, status: isInviteExpired(invite) && invite.status !== "accepted" && invite.status !== "revoked" ? "expired" : invite.status, + source: invite.source ?? "launcher", + sourceWorkspaceName: invite.sourceWorkspaceName ?? null, + sourceWorkspaceSlug: invite.sourceWorkspaceSlug ?? null, }; } +function resolvePublicInviteRedirectUrl(invite) { + if (invite?.source === "tasker_workspace_invite" && invite.sourceTaskerInviteRequestId) { + return `/tasker-workspace-invite/${encodeURIComponent(invite.sourceTaskerInviteRequestId)}`; + } + + return "/"; +} + function toPublicClient(client) { return { id: client.id, @@ -1481,15 +2019,139 @@ function toPublicClient(client) { }; } +function ensureTaskerInviteServiceAccess(data, invite, user, now) { + if (invite.source !== "tasker_workspace_invite") { + return null; + } + + const service = data.services.find((candidate) => candidate.slug === "task-manager"); + if (!service) { + return null; + } + + const taskerInviteRequest = invite.sourceTaskerInviteRequestId + ? data.taskerInviteRequests.find((request) => request.id === invite.sourceTaskerInviteRequestId) + : null; + const requestedAppRole = taskerInviteRequest?.role === "guest" ? "viewer" : "member"; + const existingGrant = data.grants.find( + (grant) => grant.serviceId === service.id && grant.targetType === "user" && grant.targetId === user.id + ); + const existingException = data.exceptions.find((exception) => exception.serviceId === service.id && exception.userId === user.id); + + if (existingException?.type === "deny") { + return null; + } + + if (existingGrant) { + existingGrant.status = "active"; + existingGrant.appRole = + existingGrant.appRole === "admin" || existingGrant.appRole === "owner" ? existingGrant.appRole : requestedAppRole; + existingGrant.updatedAt = now; + markPendingSync(data, { id: `${service.id}:${user.id}` }, "grant", `${service.slug}:${user.email}`); + return existingGrant; + } + + const grant = { + id: uniqueId(data.grants, "grant", `${service.slug}-user-${user.email}`), + serviceId: service.id, + targetType: "user", + targetId: user.id, + appRole: requestedAppRole, + status: "active", + createdAt: now, + updatedAt: now, + }; + data.grants.push(grant); + markPendingSync(data, { id: `${service.id}:${user.id}` }, "grant", `${service.slug}:${user.email}`); + return grant; +} + +function findTaskerInviteRequestForCancellation(data, payload) { + const requestId = nullableString(payload?.requestId); + const taskerInviteId = nullableString(payload?.taskerInviteId); + const workspaceSlug = nullableString(payload?.workspaceSlug); + const inviteeEmail = nullableString(payload?.inviteeEmail)?.toLowerCase() ?? null; + + if (requestId || taskerInviteId) { + const request = data.taskerInviteRequests.find( + (candidate) => (requestId && candidate.id === requestId) || (taskerInviteId && candidate.taskerInviteId === taskerInviteId) + ); + if (request) return request; + } + + if (!workspaceSlug || !inviteeEmail) { + return null; + } + + return data.taskerInviteRequests + .filter( + (candidate) => + candidate.workspaceSlug === workspaceSlug && + candidate.inviteeEmail.toLowerCase() === inviteeEmail + ) + .sort((left, right) => { + if (left.status !== "cancelled" && right.status === "cancelled") return -1; + if (left.status === "cancelled" && right.status !== "cancelled") return 1; + return Date.parse(right.updatedAt ?? right.createdAt ?? 0) - Date.parse(left.updatedAt ?? left.createdAt ?? 0); + })[0] ?? null; +} + +function revokeTaskerInviteServiceAccessIfOrphaned(data, request, now) { + const user = data.users.find((candidate) => candidate.email.toLowerCase() === request.inviteeEmail.toLowerCase()); + const service = data.services.find((candidate) => candidate.slug === "task-manager"); + + if (!user || !service) { + return []; + } + + const hasAnotherAcceptedWorkspaceInvite = data.taskerInviteRequests.some((candidate) => { + if (candidate.id === request.id) return false; + if (candidate.status !== "approved") return false; + if (candidate.inviteeEmail.toLowerCase() !== request.inviteeEmail.toLowerCase()) return false; + + const platformInvite = candidate.platformInviteId + ? data.invites.find((invite) => invite.id === candidate.platformInviteId) + : null; + return platformInvite?.status === "accepted"; + }); + + if (hasAnotherAcceptedWorkspaceInvite) { + return []; + } + + const directGrant = data.grants.find( + (grant) => grant.serviceId === service.id && grant.targetType === "user" && grant.targetId === user.id && grant.status === "active" + ); + + if (!directGrant || directGrant.appRole === "admin" || directGrant.appRole === "owner") { + return []; + } + + data.grants = data.grants.filter((grant) => grant.id !== directGrant.id); + markPendingSync(data, { id: `${service.id}:${user.id}` }, "grant", `${service.slug}:${user.email}`); + markPendingSync(data, user, "user", user.email); + + addAuditEvent(data, { id: user.id, name: user.name, email: user.email, source: "tasker" }, { + action: "Снят доступ Operational Core по workspace-инвайту", + objectType: "grant", + objectName: `${user.email} / ${service.slug}`, + result: "warning", + details: `Workspace invite: ${request.workspaceSlug}; cancelled at: ${now}`, + }); + + return [user.id]; +} + function applyInviteRegistration(data, token, payload, { commit, provisioning = null } = {}) { const invite = findInviteByToken(data, token); - const client = findById(data.clients, invite.clientId, "client"); + const client = findClientById(data, invite.clientId); const now = isoNow(); const requestedEmail = normalizeInviteRegistrationEmail(payload?.email); const email = invite.email.toLowerCase(); const name = optionalString(payload?.name, requestedEmail.split("@")[0]); validateInviteCanBeRegistered(invite); + validateTaskerInviteSourceCanBeAccepted(data, invite); if (!requestedEmail || requestedEmail !== email) { throw new Error("Для этой почты нет активного инвайта"); @@ -1528,6 +2190,10 @@ function applyInviteRegistration(data, token, payload, { commit, provisioning = if (membership) { membership.role = invite.role; membership.status = "active"; + membership.invitedByUserId = invite.invitedByUserId ?? membership.invitedByUserId ?? null; + membership.inviteId = invite.id; + membership.source = invite.source ?? membership.source ?? "launcher"; + membership.sourceTaskerInviteRequestId = invite.sourceTaskerInviteRequestId ?? membership.sourceTaskerInviteRequestId ?? null; membership.updatedAt = now; } else { membership = { @@ -1536,12 +2202,17 @@ function applyInviteRegistration(data, token, payload, { commit, provisioning = userId: user.id, role: invite.role, status: "active", + invitedByUserId: invite.invitedByUserId ?? null, + inviteId: invite.id, + source: invite.source ?? "launcher", + sourceTaskerInviteRequestId: invite.sourceTaskerInviteRequestId ?? null, createdAt: now, updatedAt: now, }; data.memberships.push(membership); } + ensureTaskerInviteServiceAccess(data, invite, user, now); invite.status = "accepted"; invite.updatedAt = now; markPendingSync(data, user, "user", email); @@ -1578,6 +2249,20 @@ function validateInviteCanBeRegistered(invite) { } } +function validateTaskerInviteSourceCanBeAccepted(data, invite) { + if (invite.source !== "tasker_workspace_invite") { + return; + } + + const request = invite.sourceTaskerInviteRequestId + ? data.taskerInviteRequests.find((candidate) => candidate.id === invite.sourceTaskerInviteRequestId) + : null; + + if (!request || request.status !== "approved") { + throw new Error("Workspace-инвайт больше не активен"); + } +} + function findById(items, id, label) { const item = items.find((candidate) => candidate.id === id); @@ -1588,6 +2273,60 @@ function findById(items, id, label) { return item; } +function findClientById(data, clientId) { + if (clientId === publicPoolClientId) { + return publicPoolClient; + } + + return findById(data.clients, clientId, "client"); +} + +function findAccessRequestById(data, accessRequestId) { + return findById(data.accessRequests, accessRequestId, "access_request"); +} + +function findTaskerInviteRequestById(data, taskerInviteRequestId) { + return findById(data.taskerInviteRequests, taskerInviteRequestId, "tasker_invite_request"); +} + +function resolveAccessRequestTargetClientId(data, value, fallback = publicPoolClientId) { + const clientId = optionalString(value, fallback || publicPoolClientId); + findClientById(data, clientId); + return clientId; +} + +function sanitizeAccessRequestPayload(payload) { + const email = requireString(payload?.email, "email").toLowerCase(); + + if (!isValidEmail(email)) { + throw new Error("Введите корректную электронную почту"); + } + + return { + email, + firstName: requireString(payload?.firstName, "firstName").slice(0, 80), + lastName: requireString(payload?.lastName, "lastName").slice(0, 80), + middleName: requireString(payload?.middleName, "middleName").slice(0, 80), + phone: requireString(payload?.phone, "phone").slice(0, 80), + company: requireString(payload?.company, "company").slice(0, 160), + }; +} + +function normalizeTaskManagerInviteRole(value) { + const normalized = typeof value === "string" ? value.trim().toLowerCase() : value; + + if (normalized === "viewer") return "guest"; + if (normalized === "owner") return "admin"; + if (normalized === 5) return "guest"; + if (normalized === 15) return "member"; + if (normalized === 20) return "admin"; + return taskManagerInviteRoles.has(normalized) ? normalized : "member"; +} + +function isValidEmail(email) { + return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); +} + function requireString(value, fieldName) { if (typeof value !== "string" || !value.trim()) { throw new Error(`Field ${fieldName} is required`); diff --git a/server/dev-server.mjs b/server/dev-server.mjs index f2a6b8c..7959d77 100644 --- a/server/dev-server.mjs +++ b/server/dev-server.mjs @@ -20,6 +20,7 @@ const oidcStateCookieName = "nodedc_oidc_state"; const maxOidcStateCookieEntries = 8; const sessionCookieName = "nodedc_session"; const noStoreCacheControl = "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; +const publicPoolClientId = "client_public_pool"; loadEnvFiles([ process.env.NODEDC_PLATFORM_ENV, @@ -67,6 +68,16 @@ app.get("/api/public/brand", (_req, res) => { res.json(buildPublicBrandResponse(snapshot.data.settings)); }); +app.post("/api/access-requests", asyncRoute(async (req, res) => { + try { + const result = await controlPlaneStore.createAccessRequest(req.body); + publishControlPlaneEvent("access-request.created"); + res.status(201).json({ accessRequest: result.accessRequest }); + } catch (error) { + sendAccessRequestApiError(res, error); + } +})); + app.get("/auth/login", asyncRoute(async (req, res) => { ensureOidcConfigured(); @@ -395,6 +406,84 @@ app.post("/api/internal/access/check", (req, res) => { }); }); +app.post("/api/internal/tasker/invite-requests", asyncRoute(async (req, res) => { + if (!isInternalRequestAuthorized(req)) { + res.status(config.internalAccessToken ? 401 : 503).json({ + ok: false, + error: config.internalAccessToken ? "internal_access_unauthorized" : "internal_access_not_configured", + }); + return; + } + + const snapshot = controlPlaneStore.getSnapshot({ name: "NODE.DC tasker invite request" }); + const inviterPayload = typeof req.body?.inviter === "object" && req.body.inviter !== null ? req.body.inviter : req.body; + const inviter = findInternalAccessUser(snapshot.data, { + subject: inviterPayload.subject, + email: inviterPayload.email, + userId: inviterPayload.userId, + }); + + if (!inviter) { + res.status(404).json({ ok: false, error: "inviter_not_found" }); + return; + } + + const groups = resolveRequiredGroups(snapshot.data, inviter); + const app = getAppsForUser(groups).find((candidate) => candidate.slug === "task-manager"); + const workspacePolicy = resolveTaskManagerWorkspacePolicy(snapshot.data, groups, Boolean(app?.hasAccess), inviter); + + if (!app?.hasAccess || workspacePolicy.inviteApproval !== "nodedc") { + res.status(403).json({ ok: false, error: "nodedc_tasker_invite_approval_not_allowed", workspacePolicy }); + return; + } + + const result = await controlPlaneStore.createTaskerInviteRequest({ + taskerInviteId: req.body?.taskerInviteId, + workspaceId: req.body?.workspace?.id ?? req.body?.workspaceId, + workspaceSlug: req.body?.workspace?.slug ?? req.body?.workspaceSlug, + workspaceName: req.body?.workspace?.name ?? req.body?.workspaceName, + inviteeEmail: req.body?.invitee?.email ?? req.body?.inviteeEmail, + role: req.body?.invitee?.role ?? req.body?.role, + inviterUserId: inviter.id, + inviterPlaneUserId: inviterPayload.planeUserId, + inviterEmail: inviter.email, + inviterName: inviter.name, + }, inviter); + + publishControlPlaneEvent("tasker.invite-request.created", [inviter.id]); + res.json({ ok: true, taskerInviteRequest: result.taskerInviteRequest }); +})); + +app.post("/api/internal/tasker/invite-requests/cancel", asyncRoute(async (req, res) => { + if (!isInternalRequestAuthorized(req)) { + res.status(config.internalAccessToken ? 401 : 503).json({ + ok: false, + error: config.internalAccessToken ? "internal_access_unauthorized" : "internal_access_not_configured", + }); + return; + } + + const result = await controlPlaneStore.cancelTaskerInviteRequest(req.body, { + name: req.body?.cancelledBy?.name ?? req.body?.cancelledBy?.email ?? "Operational Core", + email: req.body?.cancelledBy?.email, + source: "tasker", + }); + const syncResult = await syncUsersToAuthentik(result.data, result.affectedUserIds ?? [], { + name: req.body?.cancelledBy?.name ?? req.body?.cancelledBy?.email ?? "Operational Core", + email: req.body?.cancelledBy?.email, + source: "tasker", + }); + + if (result.taskerInviteRequest) { + publishControlPlaneEvent("tasker.invite-request.cancelled", [ + result.taskerInviteRequest.inviterUserId, + ...syncResult.userIds, + ]); + } + + res.json({ ok: true, taskerInviteRequest: result.taskerInviteRequest }); +})); + app.patch("/api/profile", requireSession, asyncRoute(async (req, res) => { const { actor } = getLauncherProfileContext(req.nodedcSession); const result = await controlPlaneStore.updateUserProfile(actor.id, sanitizeSelfProfilePatch(req.body), req.nodedcSession.user); @@ -478,13 +567,14 @@ app.post("/api/invites/:token/register", asyncRoute(async (req, res) => { ); publishControlPlaneEvent("invite.registered", [result.user.id]); + const redirectUrl = resolveInviteRedirectUrl(result.invite); res.json({ ...result, user: storeResult.user, data: storeResult.data, provisioning: toProvisioningResponse(provisionedUser), - loginUrl: buildLoginRedirectUrl("/", { forceLogin: true, includeReturnTo: true }), - redirectUrl: "/", + loginUrl: buildLoginRedirectUrl(redirectUrl, { forceLogin: true, includeReturnTo: true }), + redirectUrl, authenticated: true, }); })); @@ -502,9 +592,44 @@ app.post("/api/invites/:token/accept", requireSession, asyncRoute(async (req, re const syncResult = await syncUsersToAuthentik(result.data, [result.user.id], req.nodedcSession.user); publishControlPlaneEvent("invite.accepted", syncResult.userIds); - res.json({ ...result, data: syncResult.data }); + res.json({ ...result, data: syncResult.data, redirectUrl: resolveInviteRedirectUrl(result.invite) }); })); +app.get("/tasker-workspace-invite/:taskerInviteRequestId", (req, res) => { + const session = getCurrentSession(req); + + if (!session) { + res.redirect(buildLoginRedirectUrl(req.originalUrl, { forceLogin: true })); + return; + } + + const runtimeContext = getRuntimeSessionContext(session); + const request = controlPlaneStore + .getSnapshot({ name: "NODE.DC tasker invite redirect" }) + .data.taskerInviteRequests.find((candidate) => candidate.id === req.params.taskerInviteRequestId); + + if (!request || request.status !== "approved") { + res.status(404).send("Workspace-инвайт не найден или ещё не подтверждён NODE.DC."); + return; + } + + if (session.user.email?.toLowerCase() !== request.inviteeEmail.toLowerCase()) { + res.status(403).send("Этот workspace-инвайт выписан на другую почту."); + return; + } + + const handoffToken = createServiceHandoff("task-manager", runtimeContext.user); + const taskBaseUrl = getTaskBaseUrl(); + const targetUrl = new URL("/auth/nodedc/handoff/", taskBaseUrl); + targetUrl.searchParams.set("token", handoffToken); + targetUrl.searchParams.set( + "next_path", + `/auth/nodedc/workspace-invite/accept/${encodeURIComponent(request.id)}/` + ); + + res.redirect(targetUrl.toString()); +}); + app.get("/api/admin/control-plane", requireLauncherAdmin, (req, res) => { res.json(scopeAdminSnapshot(req)); }); @@ -974,6 +1099,94 @@ app.delete("/api/admin/invites/:inviteId", requireLauncherAdmin, asyncRoute(asyn res.json(scopeAdminMutationResult(req, result)); })); +app.patch("/api/admin/access-requests/:accessRequestId", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { + try { + const result = await controlPlaneStore.updateAccessRequest(req.params.accessRequestId, req.body, req.nodedcSession.user); + publishControlPlaneEvent("admin.access-request.updated"); + res.json(scopeAdminMutationResult(req, result)); + } catch (error) { + sendAccessRequestApiError(res, error); + } +})); + +app.post("/api/admin/access-requests/:accessRequestId/approve", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { + try { + const result = await controlPlaneStore.approveAccessRequest(req.params.accessRequestId, req.body, req.nodedcSession.user); + publishControlPlaneEvent("admin.access-request.approved"); + res.json(scopeAdminMutationResult(req, result)); + } catch (error) { + sendAccessRequestApiError(res, error); + } +})); + +app.post("/api/admin/access-requests/:accessRequestId/reject", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { + try { + const result = await controlPlaneStore.rejectAccessRequest(req.params.accessRequestId, req.body, req.nodedcSession.user); + publishControlPlaneEvent("admin.access-request.rejected"); + res.json(scopeAdminMutationResult(req, result)); + } catch (error) { + sendAccessRequestApiError(res, error); + } +})); + +app.post("/api/admin/tasker-invite-requests/:taskerInviteRequestId/approve", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { + const snapshot = controlPlaneStore.getSnapshot(req.nodedcSession.user); + const taskerInviteRequest = snapshot.data.taskerInviteRequests.find((request) => request.id === req.params.taskerInviteRequestId); + + if (!taskerInviteRequest) { + res.status(404).json({ error: "tasker_invite_request_not_found" }); + return; + } + + const platformInviteResult = await controlPlaneStore.ensureTaskerInvitePlatformInvite( + req.params.taskerInviteRequestId, + req.nodedcSession.user + ); + const platformInviteLink = buildPlatformInviteUrl(platformInviteResult.invite); + const taskerResult = await requestTaskManagerInternalJson("/api/internal/nodedc/workspace-invite-requests/approve/", { + body: { + taskerInviteId: taskerInviteRequest.taskerInviteId, + requestId: taskerInviteRequest.id, + platformInviteLink, + }, + }); + const result = await controlPlaneStore.approveTaskerInviteRequest( + req.params.taskerInviteRequestId, + { + taskerInviteLink: taskerResult.invite?.taskerInviteLink ?? taskerResult.invite?.tasker_invite_link ?? taskerResult.invite?.inviteLink ?? null, + platformInviteId: platformInviteResult.invite.id, + platformInviteToken: platformInviteResult.invite.token, + comment: req.body?.comment, + }, + req.nodedcSession.user + ); + + publishControlPlaneEvent("admin.tasker-invite-request.approved", [result.taskerInviteRequest.inviterUserId]); + res.json(scopeAdminMutationResult(req, { ...result, tasker: taskerResult })); +})); + +app.post("/api/admin/tasker-invite-requests/:taskerInviteRequestId/reject", requireLauncherAdmin, requireRootLauncherAdmin, asyncRoute(async (req, res) => { + const snapshot = controlPlaneStore.getSnapshot(req.nodedcSession.user); + const taskerInviteRequest = snapshot.data.taskerInviteRequests.find((request) => request.id === req.params.taskerInviteRequestId); + + if (!taskerInviteRequest) { + res.status(404).json({ error: "tasker_invite_request_not_found" }); + return; + } + + const taskerResult = await requestTaskManagerInternalJson("/api/internal/nodedc/workspace-invite-requests/reject/", { + body: { + taskerInviteId: taskerInviteRequest.taskerInviteId, + requestId: taskerInviteRequest.id, + comment: req.body?.comment, + }, + }); + const result = await controlPlaneStore.rejectTaskerInviteRequest(req.params.taskerInviteRequestId, req.body, req.nodedcSession.user); + + publishControlPlaneEvent("admin.tasker-invite-request.rejected", [result.taskerInviteRequest.inviterUserId]); + res.json(scopeAdminMutationResult(req, { ...result, tasker: taskerResult })); +})); + app.post("/api/admin/groups", requireLauncherAdmin, asyncRoute(async (req, res) => { if (!assertAdminCanManageClient(req, res, req.body?.clientId)) { return; @@ -1381,6 +1594,20 @@ function sendInviteApiError(res, error) { res.status(status).json({ error: message }); } +function sendAccessRequestApiError(res, error) { + const message = error instanceof Error ? error.message : "Заявка недоступна"; + const status = + message.includes("Unknown access_request") || message.includes("не найден") + ? 404 + : message.includes("нельзя") + ? 409 + : message.includes("required") || message.includes("Введите") + ? 400 + : 400; + + res.status(status).json({ error: message }); +} + function sanitizeSelfProfilePatch(payload) { return { name: payload?.name, @@ -1760,13 +1987,19 @@ function resolveTaskManagerWorkspacePolicy(data, groups, hasTaskManagerAccess, u const isTaskManagerAdmin = groupSet.has("nodedc:taskmanager:admin"); const workspaces = resolveTaskManagerWorkspaceAssignments(data, user); const hasLauncherManagedWorkspace = workspaces.some((workspace) => workspace.managedBy === "launcher"); + const isPublicPoolUser = data.memberships.some( + (membership) => membership.userId === user?.id && membership.clientId === publicPoolClientId && membership.status === "active" + ); const defaultManagedBy = hasLauncherManagedWorkspace && !isSuperAdmin ? "launcher" : "tasker"; + const defaultInviteApproval = hasLauncherManagedWorkspace && !isSuperAdmin ? "launcher" : isPublicPoolUser ? "nodedc" : "tasker"; if (!hasTaskManagerAccess) { return { mode, managedBy: defaultManagedBy, defaultManagedBy, + inviteApproval: "disabled", + defaultInviteApproval, workspaces, canCreateWorkspace: false, reason: "Нет доступа к Operational Core.", @@ -1778,6 +2011,8 @@ function resolveTaskManagerWorkspacePolicy(data, groups, hasTaskManagerAccess, u mode, managedBy: defaultManagedBy, defaultManagedBy, + inviteApproval: "disabled", + defaultInviteApproval, workspaces, canCreateWorkspace: false, reason: "Создание рабочих пространств отключено на уровне платформы.", @@ -1789,6 +2024,8 @@ function resolveTaskManagerWorkspacePolicy(data, groups, hasTaskManagerAccess, u mode, managedBy: "launcher", defaultManagedBy: "launcher", + inviteApproval: "launcher", + defaultInviteApproval: "launcher", workspaces, canCreateWorkspace: false, reason: "Рабочие пространства этого пользователя управляются через Launcher.", @@ -1800,6 +2037,8 @@ function resolveTaskManagerWorkspacePolicy(data, groups, hasTaskManagerAccess, u mode, managedBy: defaultManagedBy, defaultManagedBy, + inviteApproval: defaultInviteApproval, + defaultInviteApproval, workspaces, canCreateWorkspace: false, reason: "Создание рабочих пространств доступно только администраторам Operational Core.", @@ -1810,6 +2049,8 @@ function resolveTaskManagerWorkspacePolicy(data, groups, hasTaskManagerAccess, u mode, managedBy: "tasker", defaultManagedBy: "tasker", + inviteApproval: defaultInviteApproval, + defaultInviteApproval, workspaces, canCreateWorkspace: true, reason: "Создание рабочих пространств разрешено платформенной policy.", @@ -2441,6 +2682,8 @@ function scopeControlPlaneData(data, scope) { memberships, groups: data.groups.filter((group) => clientIds.has(group.clientId)), invites: data.invites.filter((invite) => clientIds.has(invite.clientId)), + accessRequests: [], + taskerInviteRequests: [], grants: data.grants.filter((grant) => { if (grant.targetType === "client") return clientIds.has(grant.targetId); if (grant.targetType === "group") return groupIds.has(grant.targetId); @@ -2550,6 +2793,18 @@ function buildLoginRedirectUrl(returnTo, { forceLogin = false, includeReturnTo = return loginUrl.toString(); } +function buildPlatformInviteUrl(invite) { + return new URL(`/invite/${encodeURIComponent(invite.token)}`, config.appBaseUrl).toString(); +} + +function resolveInviteRedirectUrl(invite) { + if (invite?.source === "tasker_workspace_invite" && invite.sourceTaskerInviteRequestId) { + return `/tasker-workspace-invite/${encodeURIComponent(invite.sourceTaskerInviteRequestId)}`; + } + + return "/"; +} + function buildOidcLogoutUrl(discovery, returnTo = "/", idToken = null) { const issuerUrl = new URL(discovery.issuer || config.issuer); const logoutUrl = new URL("/if/flow/default-invalidation-flow/", issuerUrl.origin); diff --git a/src/app/LauncherApp.tsx b/src/app/LauncherApp.tsx index b20398c..77db55d 100644 --- a/src/app/LauncherApp.tsx +++ b/src/app/LauncherApp.tsx @@ -1,10 +1,12 @@ -import { useEffect, useMemo, useState } from "react"; +import { useCallback, useEffect, useMemo, useRef, useState } from "react"; import type { Client } from "../entities/client/types"; import type { Invite } from "../entities/invite/types"; import { syncServiceLaunchLink } from "../entities/service/links"; import type { LauncherServiceView, Service } from "../entities/service/types"; import type { ClientGroup, ClientMembership, LauncherUser } from "../entities/user/types"; import { + approveAdminAccessRequest, + approveAdminTaskerInviteRequest, createAdminClient, createAdminGroup, createAdminInvite, @@ -21,10 +23,13 @@ import { fetchControlPlaneSnapshot, reorderAdminServices, retryAdminSync, + rejectAdminAccessRequest, + rejectAdminTaskerInviteRequest, removeAdminTaskManagerProjectMembership, removeAdminTaskManagerWorkspaceMembership, setAdminUserServiceAccess, updateAdminClient, + updateAdminAccessRequest, updateAdminGroup, updateAdminInvite, updateAdminMembership, @@ -35,6 +40,7 @@ import { type TaskManagerWorkspaceMemberRole, type TaskManagerWorkspaceSummary, } from "../shared/api/adminApi"; +import { createAccessRequest, type CreateAccessRequestResponse } from "../shared/api/accessRequestApi"; import { buildLauncherServices, buildMe, @@ -53,6 +59,7 @@ import { } from "../shared/api/authApi"; import { updateOwnPassword, updateOwnProfile } from "../shared/api/profileApi"; import { acceptInvite, fetchPublicInvite, registerInvite, type PublicInviteResponse, type RegisterInviteCommand } from "../shared/api/inviteApi"; +import type { CreateAccessRequestCommand } from "../entities/access-request/types"; import { subscribeToNodeDCLogoutEvents } from "../shared/session/sessionSync"; import { loadPersistedLauncherData } from "../shared/api/storageApi"; import { @@ -80,6 +87,7 @@ type InviteFlowState = export function LauncherApp() { const inviteToken = useMemo(() => parseInviteToken(window.location.pathname), []); + const isAccessRequestRoute = useMemo(() => isAccessRequestPath(window.location.pathname), []); const [data, setData] = useState(() => syncLauncherServiceLinks(initialLauncherData)); const [activeProfileId, setActiveProfileId] = useState(profileOptions[0].userId); const [activeClientId, setActiveClientId] = useState(profileOptions[0].defaultClientId); @@ -95,6 +103,15 @@ export function LauncherApp() { const [taskManagerWorkspacesLoading, setTaskManagerWorkspacesLoading] = useState(false); const [taskManagerWorkspacesError, setTaskManagerWorkspacesError] = useState(null); const [inviteFlow, setInviteFlow] = useState(() => (inviteToken ? { status: "loading" } : null)); + const runtimeDataRef = useRef(data); + const runtimeProfileIdRef = useRef(activeProfileId); + const runtimeClientIdRef = useRef(activeClientId); + + useEffect(() => { + runtimeDataRef.current = data; + runtimeProfileIdRef.current = activeProfileId; + runtimeClientIdRef.current = activeClientId; + }, [activeClientId, activeProfileId, data]); const me = useMemo(() => buildMe(data, activeProfileId, activeClientId), [data, activeProfileId, activeClientId]); const activeProfileUser = data.users.find((user) => user.id === activeProfileId) ?? data.users[0]; @@ -218,10 +235,10 @@ export function LauncherApp() { useEffect(() => { if (!authSession || authSession.authenticated) return; - if (inviteToken) return; + if (inviteToken || isAccessRequestRoute) return; redirectToLogin(authSession.loginUrl); - }, [authSession, inviteToken]); + }, [authSession, inviteToken, isAccessRequestRoute]); useEffect(() => { if (!inviteToken) return; @@ -266,6 +283,7 @@ export function LauncherApp() { if (!isMounted) return; if (!session.authenticated) { + if (inviteToken || isAccessRequestRoute) return; redirectToLogin(session.loginUrl); return; } @@ -273,7 +291,7 @@ export function LauncherApp() { setAuthSession(session); }) .catch(() => { - if (isMounted) { + if (isMounted && !inviteToken && !isAccessRequestRoute) { redirectToLogin("/auth/login"); } }); @@ -285,7 +303,7 @@ export function LauncherApp() { isMounted = false; window.removeEventListener("pageshow", validateRestoredSession); }; - }, []); + }, [inviteToken, isAccessRequestRoute]); useEffect(() => { if (!authSession?.authenticated) return; @@ -341,49 +359,60 @@ export function LauncherApp() { void refreshTaskManagerWorkspaces(); }, [adminOpen, canOpenAdminApi]); + const refreshRuntimeState = useCallback(async () => { + try { + const nextSession = await fetchAuthSession(); + + setAuthSession(nextSession); + + if (!nextSession.authenticated) { + setAuthApps([]); + return; + } + + const currentData = runtimeDataRef.current; + const nextContext = resolveAuthenticatedContext( + currentData, + nextSession, + runtimeProfileIdRef.current, + runtimeClientIdRef.current + ); + const nextMe = buildMe(currentData, nextContext.profileId, nextContext.clientId); + const [persistedData, apps] = await Promise.all([ + nextSession.isSuperAdmin || nextMe.permissions.canOpenAdmin + ? fetchControlPlaneSnapshot().then((snapshot) => snapshot.data) + : loadPersistedLauncherData(), + fetchAvailableApps(), + ]); + + if (persistedData) { + setData(syncLauncherServiceLinks(persistedData)); + } + + setAuthApps(apps); + } catch (error: unknown) { + console.warn(error instanceof Error ? error.message : "Не удалось обновить runtime состояние Launcher"); + } + }, []); + useEffect(() => { if (!authSession?.authenticated) return; let isMounted = true; - const refreshRuntimeState = async () => { - try { - const nextSession = await fetchAuthSession(); - - if (!isMounted) return; - - setAuthSession(nextSession); - - if (!nextSession.authenticated) { - setAuthApps([]); - return; - } - - const nextContext = resolveAuthenticatedContext(data, nextSession, activeProfileId, activeClientId); - const nextMe = buildMe(data, nextContext.profileId, nextContext.clientId); - const [persistedData, apps] = await Promise.all([ - nextMe.permissions.canOpenAdmin - ? fetchControlPlaneSnapshot().then((snapshot) => snapshot.data) - : loadPersistedLauncherData(), - fetchAvailableApps(), - ]); - - if (!isMounted) return; - - if (persistedData) { - setData(syncLauncherServiceLinks(persistedData)); - } - - setAuthApps(apps); - } catch (error: unknown) { - console.warn(error instanceof Error ? error.message : "Не удалось обновить runtime состояние Launcher"); - } + const refreshMountedRuntimeState = async () => { + await refreshRuntimeState(); + if (!isMounted) return; }; const eventSource = new EventSource("/api/events"); + eventSource.addEventListener("nodedc-ready", () => { + void refreshMountedRuntimeState(); + }); + eventSource.addEventListener("nodedc-runtime", () => { - void refreshRuntimeState(); + void refreshMountedRuntimeState(); }); eventSource.onerror = () => { @@ -394,7 +423,25 @@ export function LauncherApp() { isMounted = false; eventSource.close(); }; - }, [authSession?.authenticated]); + }, [authSession?.authenticated, refreshRuntimeState]); + + useEffect(() => { + if (!authSession?.authenticated) return; + + const refreshVisibleRuntimeState = () => { + if (document.visibilityState === "visible") { + void refreshRuntimeState(); + } + }; + + window.addEventListener("focus", refreshVisibleRuntimeState); + document.addEventListener("visibilitychange", refreshVisibleRuntimeState); + + return () => { + window.removeEventListener("focus", refreshVisibleRuntimeState); + document.removeEventListener("visibilitychange", refreshVisibleRuntimeState); + }; + }, [authSession?.authenticated, refreshRuntimeState]); function handleProfileChange(userId: string) { const profile = profileOptions.find((option) => option.userId === userId); @@ -561,6 +608,10 @@ export function LauncherApp() { try { const result = await acceptInvite(inviteToken); setData(syncLauncherServiceLinks(result.data)); + if (result.redirectUrl && result.redirectUrl !== "/") { + window.location.assign(result.redirectUrl); + return; + } setInviteFlow({ status: "accepted", payload: inviteFlow.payload }); } catch (error) { setInviteFlow({ @@ -601,6 +652,32 @@ export function LauncherApp() { applyControlPlaneMutation(deleteAdminInvite(inviteId)); } + function handleUpdateAccessRequest(accessRequestId: string, patch: Parameters[1]) { + applyControlPlaneMutation(updateAdminAccessRequest(accessRequestId, patch)); + } + + function handleApproveAccessRequest(accessRequestId: string, patch: Parameters[1]) { + applyControlPlaneMutation(approveAdminAccessRequest(accessRequestId, patch)); + } + + function handleRejectAccessRequest(accessRequestId: string, patch: Parameters[1]) { + applyControlPlaneMutation(rejectAdminAccessRequest(accessRequestId, patch)); + } + + function handleApproveTaskerInviteRequest( + taskerInviteRequestId: string, + patch: Parameters[1] + ) { + applyControlPlaneMutation(approveAdminTaskerInviteRequest(taskerInviteRequestId, patch)); + } + + function handleRejectTaskerInviteRequest( + taskerInviteRequestId: string, + patch: Parameters[1] + ) { + applyControlPlaneMutation(rejectAdminTaskerInviteRequest(taskerInviteRequestId, patch)); + } + function handleRetrySync(syncId: string) { applyControlPlaneMutation(retryAdminSync(syncId)); } @@ -706,11 +783,20 @@ export function LauncherApp() { setSelectedServiceId((current) => (current === serviceId ? undefined : current)); } + if (isAccessRequestRoute) { + return ( + redirectToLogin(authSession?.authenticated ? "/auth/login?prompt=login" : authSession?.loginUrl)} + /> + ); + } + if (inviteToken) { return ( void handleAcceptInvite()} onRegister={(command) => void handleRegisterInvite(command)} onLogin={() => redirectToLogin(authSession?.authenticated ? "/auth/login?prompt=login" : authSession?.loginUrl)} @@ -774,6 +860,11 @@ export function LauncherApp() { onCreateInvite={handleCreateInvite} onUpdateInvite={handleUpdateInvite} onDeleteInvite={handleDeleteInvite} + onUpdateAccessRequest={handleUpdateAccessRequest} + onApproveAccessRequest={handleApproveAccessRequest} + onRejectAccessRequest={handleRejectAccessRequest} + onApproveTaskerInviteRequest={handleApproveTaskerInviteRequest} + onRejectTaskerInviteRequest={handleRejectTaskerInviteRequest} onRetrySync={handleRetrySync} onCreateClient={handleCreateClient} onUpdateClient={handleUpdateClient} @@ -828,6 +919,156 @@ function accessAssignmentKey(userId: string, serviceId: string) { return `${userId}:${serviceId}`; } +function AccessRequestScreen({ + onSubmit, + onLogin, +}: { + onSubmit: (command: CreateAccessRequestCommand) => Promise; + onLogin: () => void; +}) { + const [values, setValues] = useState({ + email: "", + firstName: "", + lastName: "", + middleName: "", + phone: "", + company: "", + }); + const [status, setStatus] = useState<"idle" | "submitting" | "submitted" | "error">("idle"); + const [message, setMessage] = useState(null); + const isSubmitted = status === "submitted"; + const normalizedEmail = values.email.trim().toLowerCase(); + const canSubmit = Boolean( + normalizedEmail.includes("@") && + values.firstName.trim() && + values.lastName.trim() && + values.middleName.trim() && + values.phone.trim() && + values.company.trim() && + status !== "submitting" + ); + + const updateField = (field: keyof CreateAccessRequestCommand, value: string) => { + setValues((current) => ({ ...current, [field]: value })); + }; + + return ( +

+ +
+
+
+

NODE.DC.

+

{isSubmitted ? "Вы запросили доступ." : "Работайте во всех измерениях."}

+
+ + {!isSubmitted ? ( +

+ Заполните обязательные поля. Заявка попадёт в очередь NODE.DC, после approve администратор передаст ссылку инвайта. +

+ ) : null} + {message ?

{message}

: null} + + {isSubmitted ? ( +
+ +
+ ) : ( +
{ + event.preventDefault(); + if (!canSubmit) return; + + setStatus("submitting"); + setMessage(null); + onSubmit({ + email: normalizedEmail, + firstName: values.firstName.trim(), + lastName: values.lastName.trim(), + middleName: values.middleName.trim(), + phone: values.phone.trim(), + company: values.company.trim(), + }) + .then(() => { + setStatus("submitted"); + setMessage("Заявка отправлена администратору. Администратор проверит данные. Дождитесь результатов."); + }) + .catch((error) => { + setStatus("error"); + setMessage(error instanceof Error ? error.message : "Не удалось отправить заявку."); + }); + }} + > + +
+ + +
+ + + + + +
+ )} +
+
+
+ ); +} + function resolveAuthenticatedContext( data: LauncherData, session: AuthenticatedSession, @@ -878,7 +1119,7 @@ function resolveDefaultClientId(data: LauncherData, userId: string, requestedCli function InviteFlowScreen({ state, - isAuthenticated, + authenticatedEmail, onAccept, onRegister, onLogin, @@ -886,7 +1127,7 @@ function InviteFlowScreen({ onGoHome, }: { state: InviteFlowState; - isAuthenticated: boolean; + authenticatedEmail: string | null; onAccept: () => void; onRegister: (command: RegisterInviteCommand) => void; onLogin: () => void; @@ -899,12 +1140,33 @@ function InviteFlowScreen({ const [passwordConfirm, setPasswordConfirm] = useState(""); const payload = "payload" in state ? state.payload : undefined; const inviteStatus = payload?.invite.status; + const inviteEmail = payload?.account.email ?? payload?.invite.email ?? ""; + const normalizedInviteEmail = inviteEmail.toLowerCase(); + const existingAccount = Boolean(payload?.account.exists); + const isAuthenticated = Boolean(authenticatedEmail); + const isAuthenticatedAsInvitee = Boolean( + authenticatedEmail && + normalizedInviteEmail && + authenticatedEmail.toLowerCase() === normalizedInviteEmail + ); + const isAuthenticatedAsDifferentUser = Boolean( + authenticatedEmail && + normalizedInviteEmail && + authenticatedEmail.toLowerCase() !== normalizedInviteEmail + ); const isAccepting = state.status === "accepting"; const isRegistering = state.status === "registering"; + const inviteTargetUrl = payload?.redirectUrl; + const canOpenInviteTarget = Boolean( + payload?.invite.source === "tasker_workspace_invite" && + inviteTargetUrl && + inviteTargetUrl !== "/" && + (state.status === "accepted" || inviteStatus === "accepted") + ); const requiresAccountSwitch = state.status === "error" && state.message.includes("другую почту"); const canAccept = Boolean( state.status === "ready" && - isAuthenticated && + isAuthenticatedAsInvitee && inviteStatus !== "accepted" && inviteStatus !== "expired" && inviteStatus !== "revoked" @@ -913,6 +1175,7 @@ function InviteFlowScreen({ const canShowRegistrationForm = Boolean( payload && !isAuthenticated && + !existingAccount && !isTerminalInvite && (state.status === "ready" || state.status === "registering" || state.status === "error") ); @@ -927,12 +1190,25 @@ function InviteFlowScreen({ password === passwordConfirm ); const details = payload - ? [ - `Рабочая область: ${payload.client.name}`, - `Роль: ${membershipRoleLabel(payload.invite.role)}`, - ] + ? payload.invite.source === "tasker_workspace_invite" + ? [ + `Контур: ${payload.client.name}`, + `Workspace: ${payload.invite.sourceWorkspaceName ?? payload.invite.sourceWorkspaceSlug ?? "Operational Core"}`, + `Роль: ${membershipRoleLabel(payload.invite.role)}`, + ] + : [ + `Рабочая область: ${payload.client.name}`, + `Роль: ${membershipRoleLabel(payload.invite.role)}`, + ] : ["Проверяем приглашение и платформенную сессию"]; - const statusMessage = resolveInviteStatusMessage(state, isAuthenticated, inviteStatus); + const statusMessage = resolveInviteStatusMessage(state, { + existingAccount, + inviteEmail, + inviteStatus, + isAuthenticated, + isAuthenticatedAsInvitee, + isAuthenticatedAsDifferentUser, + }); return (
@@ -1004,7 +1280,11 @@ function InviteFlowScreen({ Уже есть аккаунт - ) : requiresAccountSwitch ? ( + ) : existingAccount && !isAuthenticated && !isTerminalInvite ? ( + + ) : (existingAccount && isAuthenticatedAsDifferentUser && !isTerminalInvite) || requiresAccountSwitch ? ( @@ -1013,8 +1293,18 @@ function InviteFlowScreen({ Войти в NODE.DC ) : state.status === "error" || state.status === "accepted" || isTerminalInvite ? ( - ) : ( ); } return ( - {isPending ? accessAssignmentLabel(assignmentValue) : accessCellTitle(cell)} - {isPending ? "Сохраняем..." : sourceLabel(cell.effectiveAccess.source)} + {displayTitle} + {displaySource} )} /> @@ -2884,24 +3032,50 @@ function InvitesSection({ data, clientId, actorUserId, + isPublicPoolContext, onCreateInvite, onUpdateInvite, onDeleteInvite, + onUpdateAccessRequest, + onApproveAccessRequest, + onRejectAccessRequest, + onApproveTaskerInviteRequest, + onRejectTaskerInviteRequest, }: { data: LauncherData; clientId: string; actorUserId: string; + isPublicPoolContext: boolean; onCreateInvite: (invite: Pick) => void; onUpdateInvite: (inviteId: string, patch: Partial) => void; onDeleteInvite: (inviteId: string) => void; + onUpdateAccessRequest: ( + accessRequestId: string, + patch: Partial> + ) => void; + onApproveAccessRequest: ( + accessRequestId: string, + patch: Partial> + ) => void; + onRejectAccessRequest: (accessRequestId: string, patch: Partial>) => void; + onApproveTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; + onRejectTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; }) { const [email, setEmail] = useState(""); const [role, setRole] = useState("member"); const [deleteInviteId, setDeleteInviteId] = useState(null); const [copiedInviteId, setCopiedInviteId] = useState(null); + const [publicInviteTab, setPublicInviteTab] = useState<"incoming" | "outgoing">("incoming"); const invites = data.invites.filter((invite) => invite.clientId === clientId); + const pendingIncomingRequests = + data.accessRequests.filter((request) => request.status === "new").length + + data.taskerInviteRequests.filter((request) => request.status === "new").length; const deletingInvite = invites.find((invite) => invite.id === deleteInviteId) ?? null; const actor = getUser(data, actorUserId); + const clientOptions: Array> = [ + { value: PUBLIC_POOL_CLIENT_ID, label: PUBLIC_POOL_CONTEXT_LABEL, description: PUBLIC_POOL_CONTEXT_DESCRIPTION }, + ...data.clients.map((client) => ({ value: client.id, label: client.name, description: client.legalName ?? undefined })), + ]; function handleCreateInvite() { if (!email.trim()) return; @@ -2933,6 +3107,44 @@ function InvitesSection({ return (
+ {isPublicPoolContext ? ( + +
+ + +
+

+ Входящие — заявки из формы “Запросить доступ”. Исходящие — инвайты, которые root-admin выпускает руками без заявки. +

+
+ ) : null} + + {isPublicPoolContext && publicInviteTab === "incoming" ? ( + + ) : ( + <>
@@ -3064,6 +3276,386 @@ function InvitesSection({ setDeleteInviteId(null); }} /> + + )} +
+ ); +} + +function AccessRequestsPanel({ + data, + clientOptions, + copiedInviteId, + onCopyInvite, + onUpdateAccessRequest, + onApproveAccessRequest, + onRejectAccessRequest, + onApproveTaskerInviteRequest, + onRejectTaskerInviteRequest, +}: { + data: LauncherData; + clientOptions: Array>; + copiedInviteId: string | null; + onCopyInvite: (invite: Invite) => Promise; + onUpdateAccessRequest: ( + accessRequestId: string, + patch: Partial> + ) => void; + onApproveAccessRequest: ( + accessRequestId: string, + patch: Partial> + ) => void; + onRejectAccessRequest: (accessRequestId: string, patch: Partial>) => void; + onApproveTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; + onRejectTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; +}) { + const accessRequests = data.accessRequests.slice().sort((a, b) => b.createdAt.localeCompare(a.createdAt)); + const taskerInviteRequests = data.taskerInviteRequests + .filter((request) => request.status !== "cancelled") + .slice() + .sort((a, b) => b.createdAt.localeCompare(a.createdAt)); + + return ( + <> + +
+
+

Входящие запросы доступа

+

+ Перед approve выберите целевой контур: оставить пользователя в открытом пуле или направить его в enterprise-клиента. +

+
+
+ + {accessRequests.length === 0 ? ( +
+ Входящих заявок пока нет + Кнопка “Запросить доступ” на login будет отправлять пользователей в эту очередь. +
+ ) : ( +
+ + + + + + + + + + + + + + {accessRequests.map((accessRequest) => { + const approvedInvite = accessRequest.approvedInviteId + ? data.invites.find((invite) => invite.id === accessRequest.approvedInviteId) ?? null + : null; + const isTerminal = accessRequest.status !== "new"; + const isCopied = Boolean(approvedInvite && copiedInviteId === approvedInvite.id); + + return ( + + + + + + + + + + + ); + })} + +
ЗаявительКонтактыКомпанияНазначениеРольСтатусИнвайт +
+
+ {formatAccessRequestName(accessRequest)} + {formatDateTime(accessRequest.createdAt)} +
+
+
+ {accessRequest.email} + {accessRequest.phone} +
+
{accessRequest.company} + onUpdateAccessRequest(accessRequest.id, { targetClientId })} + /> + + onUpdateAccessRequest(accessRequest.id, { role })} + /> + + + + {approvedInvite ? ( +
+ {buildInviteUrl(approvedInvite.token)} + {isCopied ? Скопировано : null} + void onCopyInvite(approvedInvite)} + > + + +
+ ) : ( + + )} +
+ {accessRequest.status === "new" ? ( +
+ + +
+ ) : ( + + )} +
+
+ )} +
+ + + ); +} + +function TaskerInviteRequestsPanel({ + requests, + onApproveTaskerInviteRequest, + onRejectTaskerInviteRequest, +}: { + requests: TaskerInviteRequest[]; + onApproveTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; + onRejectTaskerInviteRequest: (taskerInviteRequestId: string, patch: Partial>) => void; +}) { + const [copiedRequestId, setCopiedRequestId] = useState(null); + + async function handleCopyTaskerInvite(request: TaskerInviteRequest) { + if (!request.platformInviteToken) return; + + try { + await copyToClipboard(buildInviteUrl(request.platformInviteToken)); + } catch { + return; + } + + setCopiedRequestId(request.id); + window.setTimeout(() => { + setCopiedRequestId((currentRequestId) => (currentRequestId === request.id ? null : currentRequestId)); + }, 1800); + } + + return ( + +
+
+

Запросы workspace-инвайтов

+

+ Self-service админы Operational Core создают эти заявки из настроек workspace. После approve ссылка становится доступна + пригласившему пользователю. +

+
+
+ + {requests.length === 0 ? ( +
+ Workspace-инвайтов пока нет + Когда self-service admin добавит участника в Operational Core, заявка появится здесь. +
+ ) : ( +
+ + + + + + + + + + + + + {requests.map((request) => { + const isCopied = copiedRequestId === request.id; + + return ( + + + + + + + + + + ); + })} + +
WorkspaceПриглашённыйИнициаторРольСтатусСсылка +
+
+ {request.workspaceName} + {request.workspaceSlug} +
+
+
+ {request.inviteeEmail} + {formatDateTime(request.createdAt)} +
+
+
+ {request.inviterName} + {request.inviterEmail} +
+
{taskerInviteRoleLabel(request.role)} + + + {request.platformInviteToken ? ( +
+ {buildInviteUrl(request.platformInviteToken)} + {isCopied ? Скопировано : null} + void handleCopyTaskerInvite(request)} + > + + +
+ ) : ( + + )} +
+ {request.status === "new" ? ( +
+ + +
+ ) : ( + + )} +
+
+ )} +
+ ); +} + +function formatAccessRequestName(accessRequest: AccessRequest) { + return [accessRequest.lastName, accessRequest.firstName, accessRequest.middleName].filter(Boolean).join(" "); +} + +function getMembershipInviterMeta(data: LauncherData, membership: ClientMembership) { + const inviter = membership.invitedByUserId ? getUser(data, membership.invitedByUserId) : null; + const taskerRequest = membership.sourceTaskerInviteRequestId + ? data.taskerInviteRequests.find((request) => request.id === membership.sourceTaskerInviteRequestId) + : null; + + if (membership.source === "tasker_workspace_invite") { + const title = inviter?.name ?? taskerRequest?.inviterName ?? "Operational Core"; + const subtitle = inviter?.email ?? taskerRequest?.inviterEmail ?? "Self-service invite"; + const workspaceLabel = taskerRequest?.workspaceName || taskerRequest?.workspaceSlug; + + return { + title, + subtitle, + sourceLabel: workspaceLabel ? `Operational Core · ${workspaceLabel}` : "Operational Core", + showInAccessMatrix: true, + }; + } + + if (membership.source === "access_request") { + return { + title: "Публичная заявка", + subtitle: inviter ? `approve: ${inviter.name}` : "NODE.DC", + sourceLabel: "Заявка доступа", + showInAccessMatrix: true, + }; + } + + if (membership.inviteId) { + return { + title: inviter?.name ?? "NODE.DC", + subtitle: inviter?.email ?? "Launcher invite", + sourceLabel: "Launcher invite", + showInAccessMatrix: true, + }; + } + + return { + title: inviter?.name ?? "NODE.DC", + subtitle: inviter?.email ?? "Ручное добавление", + sourceLabel: "Ручное добавление", + showInAccessMatrix: false, + }; +} + +function MembershipInviterCell({ data, membership }: { data: LauncherData; membership: ClientMembership }) { + const inviterMeta = getMembershipInviterMeta(data, membership); + + return ( +
+ {inviterMeta.title} + {inviterMeta.subtitle} + {inviterMeta.sourceLabel}
); } @@ -3324,6 +3916,16 @@ function roleLabel(role: string): string { return labels[role] ?? role; } +function taskerInviteRoleLabel(role: TaskerInviteRequest["role"]): string { + const labels: Record = { + guest: "Guest", + member: "Member", + admin: "Admin", + }; + + return labels[role] ?? role; +} + function sectionTitle(section: AdminSection): string { const labels: Record = { overview: "Обзор", @@ -3363,6 +3965,32 @@ function accessAssignmentRoleLabel(role?: ServiceAppRole | null): string { return accessAssignmentLabel(role === "owner" ? "admin" : role); } +function publicOperationalCoreCellTitle(cell: AccessMatrixCell): string { + if (!cell.effectiveAccess.allowed) return "—"; + if (cell.effectiveAccess.appRole === "admin" || cell.effectiveAccess.appRole === "owner") return "Service Admin"; + if (cell.effectiveAccess.appRole === "viewer") return "Workspace Guest"; + return "Workspace Member"; +} + +function publicOperationalCoreCellSubtitle(cell: AccessMatrixCell): string { + if (!cell.effectiveAccess.allowed) return "Не назначен"; + if (cell.effectiveAccess.appRole === "admin" || cell.effectiveAccess.appRole === "owner") return "Self-service"; + return "Workspace invite"; +} + +function publicAccessAssignmentLabel(value: AccessAssignmentValue): string { + if (value === "admin") return "Service Admin"; + if (value === "viewer") return "Workspace Guest"; + if (value === "member") return "Workspace Member"; + if (value === "deny") return "—"; + return accessAssignmentLabel(value); +} + +function publicOperationalCoreSelectValue(value: AccessAssignmentValue): AccessAssignmentValue { + if (value === "viewer" || value === "member" || value === "admin" || value === "deny") return value; + return "unset"; +} + function accessCellKey(userId: string, serviceId: string): string { return `${userId}:${serviceId}`; } diff --git a/src/widgets/top-bar/TopBar.tsx b/src/widgets/top-bar/TopBar.tsx index c0ad4a5..c8b60b3 100644 --- a/src/widgets/top-bar/TopBar.tsx +++ b/src/widgets/top-bar/TopBar.tsx @@ -1,5 +1,6 @@ import { Inbox } from "lucide-react"; import type { Client } from "../../entities/client/types"; +import { PUBLIC_POOL_CLIENT, isPublicPoolClientId } from "../../entities/public-pool/constants"; import type { MeResponse, ProfileOption } from "../../shared/api/mockApi"; import { initials } from "../../shared/lib/format"; import { NodeDcProfileMenu, NodeDcSelect } from "../../shared/nodedc-ui"; @@ -34,7 +35,11 @@ export function TopBar({ brandLinkUrl?: string; }) { const availableClientIds = new Set(me.memberships.map((membership) => membership.clientId)); - const availableClients = clients.filter((client) => availableClientIds.has(client.id)); + const clientsWithPublicPool = [ + ...clients, + availableClientIds.has(PUBLIC_POOL_CLIENT.id) && !clients.some((client) => isPublicPoolClientId(client.id)) ? PUBLIC_POOL_CLIENT : null, + ].filter((client): client is Client => Boolean(client)); + const availableClients = clientsWithPublicPool.filter((client) => availableClientIds.has(client.id)); const activeClient = availableClients.find((client) => client.id === activeClientId); const clientOptions = availableClients.map((client) => ({ value: client.id,