@aiquants/auth-react-router 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin.d.mts +161 -26
- package/dist/admin.d.ts +161 -26
- package/dist/admin.js +1 -1
- package/dist/admin.js.map +1 -1
- package/dist/admin.mjs +1 -1
- package/dist/admin.mjs.map +1 -1
- package/package.json +3 -3
- package/src/admin/format.ts +33 -0
- package/src/admin/labels.ts +301 -91
- package/src/admin/server.ts +59 -23
- package/src/admin/ui.tsx +68 -8
- package/src/admin/views.tsx +532 -124
package/dist/admin.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as react_router from 'react-router';
|
|
1
2
|
import { AuthUser, AuthGroup, AuthGroupMember, AuthAllowlistEntry, AuthDirectoryMembershipMode, AuthDirectoryStatus } from '@aiquants/auth-core';
|
|
2
3
|
import React__default from 'react';
|
|
3
4
|
|
|
@@ -12,60 +13,123 @@ import React__default from 'react';
|
|
|
12
13
|
*/
|
|
13
14
|
type UserAdminLabels = {
|
|
14
15
|
title: string;
|
|
16
|
+
/**
|
|
17
|
+
* BCP 47 locale used to format dates. 日付整形に使う BCP 47 ロケール。
|
|
18
|
+
*
|
|
19
|
+
* 実行環境任せにするとサーバーとブラウザで別の文字列になり、水和が壊れる。
|
|
20
|
+
*/
|
|
21
|
+
locale: string;
|
|
22
|
+
/** IANA time zone used to format dates. 日付整形に使う IANA タイムゾーン。 */
|
|
23
|
+
timeZone: string;
|
|
24
|
+
/**
|
|
25
|
+
* Strings shared by more than one view. 複数のビューが共有する文言。
|
|
26
|
+
*
|
|
27
|
+
* ビューごとに同じ語を持たせると、ある画面の「削除」だけを言い換えることが **できなく
|
|
28
|
+
* なる** (実装がどのビューのキーを読んでいるかは呼び出し側から見えない)。共有する語は
|
|
29
|
+
* ここ 1 か所に置く。
|
|
30
|
+
*/
|
|
31
|
+
common: {
|
|
32
|
+
add: string;
|
|
33
|
+
create: string;
|
|
34
|
+
edit: string;
|
|
35
|
+
delete: string;
|
|
36
|
+
save: string;
|
|
37
|
+
cancel: string;
|
|
38
|
+
actions: string;
|
|
39
|
+
status: string;
|
|
40
|
+
id: string;
|
|
41
|
+
/** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
|
|
42
|
+
readOnly: string;
|
|
43
|
+
/** 上流所有のグループに出す編集不可の表示。 */
|
|
44
|
+
managedUpstream: string;
|
|
45
|
+
/** `#{id}` の表示。記号の位置は言語で変わる。 */
|
|
46
|
+
idTemplate: string;
|
|
47
|
+
/** 値が無いことの表示 (説明欄など)。 */
|
|
48
|
+
none: string;
|
|
49
|
+
};
|
|
50
|
+
/** アクションが拒否・失敗したときの文言。 */
|
|
51
|
+
errors: {
|
|
52
|
+
/**
|
|
53
|
+
* Shown when the actor lacks permission for the attempted operation.
|
|
54
|
+
* 操作の権限が無いときに出す文言。
|
|
55
|
+
*
|
|
56
|
+
* ガードの例外メッセージをそのまま返してはならない。テナント ID・アプリキー・
|
|
57
|
+
* 拒否理由といった内部の語彙が、権限を持たない相手にそのまま渡る。
|
|
58
|
+
*/
|
|
59
|
+
forbidden: string;
|
|
60
|
+
};
|
|
15
61
|
/** シェル (タブ枠) の見出し。 */
|
|
16
62
|
heading: string;
|
|
63
|
+
/** シェルが描く自己権限バッジの文言。 */
|
|
64
|
+
permissions: {
|
|
65
|
+
label: string;
|
|
66
|
+
canWrite: string;
|
|
67
|
+
canRead: string;
|
|
68
|
+
none: string;
|
|
69
|
+
/** 未結線・取得失敗・付与ゼロのいずれも「不明」であり、許可ではない。 */
|
|
70
|
+
unknown: string;
|
|
71
|
+
};
|
|
17
72
|
tabs: {
|
|
18
73
|
users: string;
|
|
19
74
|
groups: string;
|
|
20
75
|
groupMembers: string;
|
|
21
76
|
allowlist: string;
|
|
77
|
+
directory: string;
|
|
22
78
|
};
|
|
23
79
|
usersView: {
|
|
24
80
|
title: string;
|
|
25
81
|
searchPlaceholder: string;
|
|
82
|
+
/** 検索欄の読み上げ名。プレースホルダは入力すると消えるため名前にならない。 */
|
|
83
|
+
searchLabel: string;
|
|
26
84
|
addUser: string;
|
|
27
85
|
editUser: string;
|
|
28
|
-
id: string;
|
|
29
86
|
displayName: string;
|
|
30
87
|
email: string;
|
|
31
|
-
status: string;
|
|
32
88
|
active: string;
|
|
33
89
|
inactive: string;
|
|
34
|
-
actions: string;
|
|
35
|
-
edit: string;
|
|
36
90
|
activate: string;
|
|
37
91
|
deactivate: string;
|
|
92
|
+
/** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
|
|
93
|
+
editUserAria: string;
|
|
94
|
+
activateAria: string;
|
|
95
|
+
deactivateAria: string;
|
|
96
|
+
/** 無効化はサインインを止める。確認を取る。 */
|
|
97
|
+
confirmDeactivate: string;
|
|
38
98
|
empty: string;
|
|
39
|
-
save: string;
|
|
40
|
-
cancel: string;
|
|
41
99
|
};
|
|
42
100
|
groupsView: {
|
|
101
|
+
/** 検索語に一致しないときの説明。空状態と混ぜると「消えた」と誤読される。 */
|
|
102
|
+
emptyFiltered: string;
|
|
43
103
|
title: string;
|
|
44
104
|
searchPlaceholder: string;
|
|
105
|
+
searchLabel: string;
|
|
45
106
|
addGroup: string;
|
|
46
107
|
editGroup: string;
|
|
47
|
-
id: string;
|
|
48
108
|
groupKey: string;
|
|
49
109
|
name: string;
|
|
50
110
|
description: string;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
actions: string;
|
|
54
|
-
edit: string;
|
|
55
|
-
delete: string;
|
|
111
|
+
/** 所属人数。`{count}` を人数へ置換する。 */
|
|
112
|
+
memberCountTemplate: string;
|
|
56
113
|
confirmDelete: string;
|
|
57
114
|
noDescription: string;
|
|
58
115
|
groupKeyPlaceholder: string;
|
|
59
116
|
namePlaceholder: string;
|
|
60
117
|
empty: string;
|
|
61
|
-
save: string;
|
|
62
|
-
cancel: string;
|
|
63
118
|
};
|
|
64
119
|
groupMembersView: {
|
|
120
|
+
title: string;
|
|
65
121
|
selectGroup: string;
|
|
66
122
|
selectPrompt: string;
|
|
67
123
|
actionAdd: string;
|
|
68
124
|
actionRemove: string;
|
|
125
|
+
/** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
|
|
126
|
+
actionAddAria: string;
|
|
127
|
+
actionRemoveAria: string;
|
|
128
|
+
/** 上流所有グループで編集を出さない理由。押せない理由を書かないと故障に見える。 */
|
|
129
|
+
upstreamNotice: string;
|
|
130
|
+
/** 見出し。`{group}` をグループ名へ置換する。語順が言語で変わるため位置指定にする。 */
|
|
131
|
+
membersOfTemplate: string;
|
|
132
|
+
groupKeyLabel: string;
|
|
69
133
|
};
|
|
70
134
|
allowlistView: {
|
|
71
135
|
title: string;
|
|
@@ -82,30 +146,26 @@ type UserAdminLabels = {
|
|
|
82
146
|
/** 対象列の見出し。パターンとグループが混在するため「パターン」ではない。 */
|
|
83
147
|
target: string;
|
|
84
148
|
description: string;
|
|
85
|
-
actions: string;
|
|
86
|
-
/** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
|
|
87
|
-
readOnly: string;
|
|
88
149
|
/** 配備全体が所有する行 (環境変数由来) の所有者表示。 */
|
|
89
150
|
deploymentOwner: string;
|
|
90
|
-
|
|
151
|
+
/** 許可の取り消しはサインインを止める。確認を取る。 */
|
|
152
|
+
confirmDelete: string;
|
|
153
|
+
/** 行ごとの読み上げ名。`{target}` を対象へ置換する。 */
|
|
154
|
+
deleteAria: string;
|
|
91
155
|
empty: string;
|
|
92
|
-
save: string;
|
|
93
|
-
cancel: string;
|
|
94
156
|
};
|
|
95
157
|
directoryView: {
|
|
96
158
|
title: string;
|
|
97
159
|
/** 出所列。ローカル管理か、どの上流かを示す。 */
|
|
98
160
|
source: string;
|
|
99
161
|
localSource: string;
|
|
100
|
-
/** 上流所有のグループに出す編集不可の表示。 */
|
|
101
|
-
managedUpstream: string;
|
|
102
162
|
membershipMode: string;
|
|
103
163
|
directMode: string;
|
|
104
164
|
transitiveMode: string;
|
|
105
165
|
lastSynced: string;
|
|
106
166
|
neverSynced: string;
|
|
107
|
-
/**
|
|
108
|
-
|
|
167
|
+
/** 上流に居るがローカルユーザーへ解決できていない人数。`{count}` を人数へ置換する。 */
|
|
168
|
+
unresolvedTemplate: string;
|
|
109
169
|
syncPaused: string;
|
|
110
170
|
syncEnabled: string;
|
|
111
171
|
syncNow: string;
|
|
@@ -113,10 +173,53 @@ type UserAdminLabels = {
|
|
|
113
173
|
/** 同期が滞っていることの警告。停止はセキュリティ事象である。 */
|
|
114
174
|
staleWarning: string;
|
|
115
175
|
disabledWarning: string;
|
|
176
|
+
/** 停止件数。`{paused}` / `{total}` を件数へ置換する。 */
|
|
177
|
+
pausedTemplate: string;
|
|
178
|
+
/** 失敗したグループの列挙。`{groups}` を名前の並びへ置換する。 */
|
|
179
|
+
erroredTemplate: string;
|
|
180
|
+
/** 失敗理由付きの 1 件。`{group}` / `{reason}`。 */
|
|
181
|
+
erroredItemTemplate: string;
|
|
182
|
+
/** 列挙の区切り。言語で変わる。 */
|
|
183
|
+
listSeparator: string;
|
|
184
|
+
/** 滞留警告に添える最終成功時刻。`{at}`。 */
|
|
185
|
+
oldestSyncedTemplate: string;
|
|
186
|
+
/** 未処理の同期要求。`{count}`。 */
|
|
187
|
+
pendingTemplate: string;
|
|
188
|
+
/** 連携先が 1 つも残っていないときの説明。 */
|
|
189
|
+
nothingToLink: string;
|
|
190
|
+
/** 未結線の配備で操作を出さない理由。 */
|
|
191
|
+
notWiredNotice: string;
|
|
192
|
+
/** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
|
|
193
|
+
syncNowAria: string;
|
|
194
|
+
pauseAria: string;
|
|
195
|
+
resumeAria: string;
|
|
196
|
+
allowGroupAria: string;
|
|
197
|
+
disallowGroupAria: string;
|
|
198
|
+
unlinkAria: string;
|
|
199
|
+
/** グループ単位のサインイン許可を外す確認。 */
|
|
200
|
+
confirmDisallow: string;
|
|
116
201
|
link: string;
|
|
117
202
|
unlink: string;
|
|
118
203
|
externalKey: string;
|
|
119
204
|
empty: string;
|
|
205
|
+
/** 直近の同期が失敗したグループの見出し。件数だけでは何が起きたか判らない。 */
|
|
206
|
+
erroredWarning: string;
|
|
207
|
+
/** 同期有効なリンクのうち最も古い成功時刻。滞留の実際の深さを示す。 */
|
|
208
|
+
oldestSyncedAt: string;
|
|
209
|
+
/** 連携するグループを選ぶ欄。 */
|
|
210
|
+
selectGroup: string;
|
|
211
|
+
/** 上流グループのアドレス入力。 */
|
|
212
|
+
externalKeyPlaceholder: string;
|
|
213
|
+
/** 連携解除の確認。台帳と許可設定が消える。 */
|
|
214
|
+
confirmUnlink: string;
|
|
215
|
+
/** 同期の一時停止・再開。 */
|
|
216
|
+
pause: string;
|
|
217
|
+
resume: string;
|
|
218
|
+
/** 許可グループに加える / 外す。 */
|
|
219
|
+
allowGroup: string;
|
|
220
|
+
disallowGroup: string;
|
|
221
|
+
/** グループ名と鍵の併記。`{name}` / `{key}`。 */
|
|
222
|
+
groupOptionTemplate: string;
|
|
120
223
|
};
|
|
121
224
|
};
|
|
122
225
|
/**
|
|
@@ -132,7 +235,12 @@ declare const jaUserAdminLabels: UserAdminLabels;
|
|
|
132
235
|
/** セクション単位の部分上書き。 */
|
|
133
236
|
type PartialUserAdminLabels = {
|
|
134
237
|
title?: string;
|
|
238
|
+
locale?: string;
|
|
239
|
+
timeZone?: string;
|
|
240
|
+
common?: Partial<UserAdminLabels["common"]>;
|
|
241
|
+
errors?: Partial<UserAdminLabels["errors"]>;
|
|
135
242
|
heading?: string;
|
|
243
|
+
permissions?: Partial<UserAdminLabels["permissions"]>;
|
|
136
244
|
tabs?: Partial<UserAdminLabels["tabs"]>;
|
|
137
245
|
usersView?: Partial<UserAdminLabels["usersView"]>;
|
|
138
246
|
groupsView?: Partial<UserAdminLabels["groupsView"]>;
|
|
@@ -261,6 +369,17 @@ type UserAdminGuards = {
|
|
|
261
369
|
action: UserAdminAccess;
|
|
262
370
|
intent: string;
|
|
263
371
|
}) => Promise<void> | void;
|
|
372
|
+
/**
|
|
373
|
+
* Observes a denial that was converted into an in-page error. 画面内エラーへ変換した拒否の観測点。
|
|
374
|
+
*
|
|
375
|
+
* 拒否を画面内に返すと、既定のエラー経路が拾っていたログが消える。管理面への総当たりが
|
|
376
|
+
* 200 番台の列に紛れて見えなくなるため、宿主が記録できる口を開けておく。
|
|
377
|
+
*/
|
|
378
|
+
onDenied?: (context: {
|
|
379
|
+
intent: string;
|
|
380
|
+
actions: readonly UserAdminAccess[];
|
|
381
|
+
error: unknown;
|
|
382
|
+
}) => void;
|
|
264
383
|
};
|
|
265
384
|
/**
|
|
266
385
|
* Neutral per-resource permission summary the admin shell renders in its header badge.
|
|
@@ -318,7 +437,10 @@ declare function createUserAdminApp(config: UserAdminAppConfig): {
|
|
|
318
437
|
myPermissions: Record<string, UserAdminPermission | undefined> | null;
|
|
319
438
|
labels: UserAdminLabels;
|
|
320
439
|
}>;
|
|
321
|
-
action: ({ request }: RouteArgs) => Promise<{
|
|
440
|
+
action: ({ request }: RouteArgs) => Promise<react_router.UNSAFE_DataWithResponseInit<{
|
|
441
|
+
ok: boolean;
|
|
442
|
+
error: string;
|
|
443
|
+
}> | {
|
|
322
444
|
ok: boolean;
|
|
323
445
|
error?: undefined;
|
|
324
446
|
} | {
|
|
@@ -350,6 +472,10 @@ type UserAdminLoaderData = {
|
|
|
350
472
|
labels?: UserAdminLabels;
|
|
351
473
|
};
|
|
352
474
|
declare function UsersView(): React__default.JSX.Element;
|
|
475
|
+
/**
|
|
476
|
+
* View for managing user groups (create, edit, delete).
|
|
477
|
+
* ユーザーグループ管理ビュー (作成・編集・削除)。
|
|
478
|
+
*/
|
|
353
479
|
declare function GroupsView(): React__default.JSX.Element;
|
|
354
480
|
/**
|
|
355
481
|
* View for managing group member assignments.
|
|
@@ -361,6 +487,15 @@ declare function GroupMembersView(): React__default.JSX.Element;
|
|
|
361
487
|
* アクセス許可リスト (Allowlist) 管理ビュー。
|
|
362
488
|
*/
|
|
363
489
|
declare function AllowlistView(): React__default.JSX.Element;
|
|
490
|
+
/**
|
|
491
|
+
* View for the upstream directory: what is linked, how fresh it is, and the controls that change it.
|
|
492
|
+
* 上流ディレクトリのビュー。何が連携され、どれだけ新しく、それを変える操作を提供する。
|
|
493
|
+
*
|
|
494
|
+
* このタブが無いと、連携の作成・解除・一時停止・即時同期・グループ単位のサインイン許可という
|
|
495
|
+
* 5 つの操作にどこからも到達できない。実装されているのに押せる場所が無い状態は、実装が無いのと
|
|
496
|
+
* 変わらないうえ、「許可を消せるが作れない」という片肺の運用を強いる。
|
|
497
|
+
*/
|
|
498
|
+
declare function DirectoryView(): React__default.JSX.Element;
|
|
364
499
|
type AuthUserAdminAppViewProps = UserAdminShellProps;
|
|
365
500
|
/**
|
|
366
501
|
* Top-level application view component for the user administration UI (`/users/*`).
|
|
@@ -368,4 +503,4 @@ type AuthUserAdminAppViewProps = UserAdminShellProps;
|
|
|
368
503
|
*/
|
|
369
504
|
declare function AuthUserAdminAppView({ renderHeader }?: AuthUserAdminAppViewProps): React__default.JSX.Element;
|
|
370
505
|
|
|
371
|
-
export { AllowlistView, AuthUserAdminAppView, type AuthUserAdminAppViewProps, GroupMembersView, GroupsView, type PartialUserAdminLabels, type UserAdminAccess, type UserAdminAppConfig, type UserAdminGuards, type UserAdminLabels, type UserAdminLoaderData, type UserAdminPermission, UserAdminShell, type UserAdminShellProps, type UserAdminStore, UsersView, createInMemoryUserAdminStore, createUserAdminApp, defaultUserAdminLabels, jaUserAdminLabels, resolveUserAdminLabels };
|
|
506
|
+
export { AllowlistView, AuthUserAdminAppView, type AuthUserAdminAppViewProps, DirectoryView, GroupMembersView, GroupsView, type PartialUserAdminLabels, type UserAdminAccess, type UserAdminAppConfig, type UserAdminGuards, type UserAdminLabels, type UserAdminLoaderData, type UserAdminPermission, UserAdminShell, type UserAdminShellProps, type UserAdminStore, UsersView, createInMemoryUserAdminStore, createUserAdminApp, defaultUserAdminLabels, jaUserAdminLabels, resolveUserAdminLabels };
|
package/dist/admin.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import * as react_router from 'react-router';
|
|
1
2
|
import { AuthUser, AuthGroup, AuthGroupMember, AuthAllowlistEntry, AuthDirectoryMembershipMode, AuthDirectoryStatus } from '@aiquants/auth-core';
|
|
2
3
|
import React__default from 'react';
|
|
3
4
|
|
|
@@ -12,60 +13,123 @@ import React__default from 'react';
|
|
|
12
13
|
*/
|
|
13
14
|
type UserAdminLabels = {
|
|
14
15
|
title: string;
|
|
16
|
+
/**
|
|
17
|
+
* BCP 47 locale used to format dates. 日付整形に使う BCP 47 ロケール。
|
|
18
|
+
*
|
|
19
|
+
* 実行環境任せにするとサーバーとブラウザで別の文字列になり、水和が壊れる。
|
|
20
|
+
*/
|
|
21
|
+
locale: string;
|
|
22
|
+
/** IANA time zone used to format dates. 日付整形に使う IANA タイムゾーン。 */
|
|
23
|
+
timeZone: string;
|
|
24
|
+
/**
|
|
25
|
+
* Strings shared by more than one view. 複数のビューが共有する文言。
|
|
26
|
+
*
|
|
27
|
+
* ビューごとに同じ語を持たせると、ある画面の「削除」だけを言い換えることが **できなく
|
|
28
|
+
* なる** (実装がどのビューのキーを読んでいるかは呼び出し側から見えない)。共有する語は
|
|
29
|
+
* ここ 1 か所に置く。
|
|
30
|
+
*/
|
|
31
|
+
common: {
|
|
32
|
+
add: string;
|
|
33
|
+
create: string;
|
|
34
|
+
edit: string;
|
|
35
|
+
delete: string;
|
|
36
|
+
save: string;
|
|
37
|
+
cancel: string;
|
|
38
|
+
actions: string;
|
|
39
|
+
status: string;
|
|
40
|
+
id: string;
|
|
41
|
+
/** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
|
|
42
|
+
readOnly: string;
|
|
43
|
+
/** 上流所有のグループに出す編集不可の表示。 */
|
|
44
|
+
managedUpstream: string;
|
|
45
|
+
/** `#{id}` の表示。記号の位置は言語で変わる。 */
|
|
46
|
+
idTemplate: string;
|
|
47
|
+
/** 値が無いことの表示 (説明欄など)。 */
|
|
48
|
+
none: string;
|
|
49
|
+
};
|
|
50
|
+
/** アクションが拒否・失敗したときの文言。 */
|
|
51
|
+
errors: {
|
|
52
|
+
/**
|
|
53
|
+
* Shown when the actor lacks permission for the attempted operation.
|
|
54
|
+
* 操作の権限が無いときに出す文言。
|
|
55
|
+
*
|
|
56
|
+
* ガードの例外メッセージをそのまま返してはならない。テナント ID・アプリキー・
|
|
57
|
+
* 拒否理由といった内部の語彙が、権限を持たない相手にそのまま渡る。
|
|
58
|
+
*/
|
|
59
|
+
forbidden: string;
|
|
60
|
+
};
|
|
15
61
|
/** シェル (タブ枠) の見出し。 */
|
|
16
62
|
heading: string;
|
|
63
|
+
/** シェルが描く自己権限バッジの文言。 */
|
|
64
|
+
permissions: {
|
|
65
|
+
label: string;
|
|
66
|
+
canWrite: string;
|
|
67
|
+
canRead: string;
|
|
68
|
+
none: string;
|
|
69
|
+
/** 未結線・取得失敗・付与ゼロのいずれも「不明」であり、許可ではない。 */
|
|
70
|
+
unknown: string;
|
|
71
|
+
};
|
|
17
72
|
tabs: {
|
|
18
73
|
users: string;
|
|
19
74
|
groups: string;
|
|
20
75
|
groupMembers: string;
|
|
21
76
|
allowlist: string;
|
|
77
|
+
directory: string;
|
|
22
78
|
};
|
|
23
79
|
usersView: {
|
|
24
80
|
title: string;
|
|
25
81
|
searchPlaceholder: string;
|
|
82
|
+
/** 検索欄の読み上げ名。プレースホルダは入力すると消えるため名前にならない。 */
|
|
83
|
+
searchLabel: string;
|
|
26
84
|
addUser: string;
|
|
27
85
|
editUser: string;
|
|
28
|
-
id: string;
|
|
29
86
|
displayName: string;
|
|
30
87
|
email: string;
|
|
31
|
-
status: string;
|
|
32
88
|
active: string;
|
|
33
89
|
inactive: string;
|
|
34
|
-
actions: string;
|
|
35
|
-
edit: string;
|
|
36
90
|
activate: string;
|
|
37
91
|
deactivate: string;
|
|
92
|
+
/** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
|
|
93
|
+
editUserAria: string;
|
|
94
|
+
activateAria: string;
|
|
95
|
+
deactivateAria: string;
|
|
96
|
+
/** 無効化はサインインを止める。確認を取る。 */
|
|
97
|
+
confirmDeactivate: string;
|
|
38
98
|
empty: string;
|
|
39
|
-
save: string;
|
|
40
|
-
cancel: string;
|
|
41
99
|
};
|
|
42
100
|
groupsView: {
|
|
101
|
+
/** 検索語に一致しないときの説明。空状態と混ぜると「消えた」と誤読される。 */
|
|
102
|
+
emptyFiltered: string;
|
|
43
103
|
title: string;
|
|
44
104
|
searchPlaceholder: string;
|
|
105
|
+
searchLabel: string;
|
|
45
106
|
addGroup: string;
|
|
46
107
|
editGroup: string;
|
|
47
|
-
id: string;
|
|
48
108
|
groupKey: string;
|
|
49
109
|
name: string;
|
|
50
110
|
description: string;
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
actions: string;
|
|
54
|
-
edit: string;
|
|
55
|
-
delete: string;
|
|
111
|
+
/** 所属人数。`{count}` を人数へ置換する。 */
|
|
112
|
+
memberCountTemplate: string;
|
|
56
113
|
confirmDelete: string;
|
|
57
114
|
noDescription: string;
|
|
58
115
|
groupKeyPlaceholder: string;
|
|
59
116
|
namePlaceholder: string;
|
|
60
117
|
empty: string;
|
|
61
|
-
save: string;
|
|
62
|
-
cancel: string;
|
|
63
118
|
};
|
|
64
119
|
groupMembersView: {
|
|
120
|
+
title: string;
|
|
65
121
|
selectGroup: string;
|
|
66
122
|
selectPrompt: string;
|
|
67
123
|
actionAdd: string;
|
|
68
124
|
actionRemove: string;
|
|
125
|
+
/** 行ごとの読み上げ名。`{user}` を利用者名へ置換する。 */
|
|
126
|
+
actionAddAria: string;
|
|
127
|
+
actionRemoveAria: string;
|
|
128
|
+
/** 上流所有グループで編集を出さない理由。押せない理由を書かないと故障に見える。 */
|
|
129
|
+
upstreamNotice: string;
|
|
130
|
+
/** 見出し。`{group}` をグループ名へ置換する。語順が言語で変わるため位置指定にする。 */
|
|
131
|
+
membersOfTemplate: string;
|
|
132
|
+
groupKeyLabel: string;
|
|
69
133
|
};
|
|
70
134
|
allowlistView: {
|
|
71
135
|
title: string;
|
|
@@ -82,30 +146,26 @@ type UserAdminLabels = {
|
|
|
82
146
|
/** 対象列の見出し。パターンとグループが混在するため「パターン」ではない。 */
|
|
83
147
|
target: string;
|
|
84
148
|
description: string;
|
|
85
|
-
actions: string;
|
|
86
|
-
/** 変更不能な供給元 (環境変数など) 由来の行に出す表示。 */
|
|
87
|
-
readOnly: string;
|
|
88
149
|
/** 配備全体が所有する行 (環境変数由来) の所有者表示。 */
|
|
89
150
|
deploymentOwner: string;
|
|
90
|
-
|
|
151
|
+
/** 許可の取り消しはサインインを止める。確認を取る。 */
|
|
152
|
+
confirmDelete: string;
|
|
153
|
+
/** 行ごとの読み上げ名。`{target}` を対象へ置換する。 */
|
|
154
|
+
deleteAria: string;
|
|
91
155
|
empty: string;
|
|
92
|
-
save: string;
|
|
93
|
-
cancel: string;
|
|
94
156
|
};
|
|
95
157
|
directoryView: {
|
|
96
158
|
title: string;
|
|
97
159
|
/** 出所列。ローカル管理か、どの上流かを示す。 */
|
|
98
160
|
source: string;
|
|
99
161
|
localSource: string;
|
|
100
|
-
/** 上流所有のグループに出す編集不可の表示。 */
|
|
101
|
-
managedUpstream: string;
|
|
102
162
|
membershipMode: string;
|
|
103
163
|
directMode: string;
|
|
104
164
|
transitiveMode: string;
|
|
105
165
|
lastSynced: string;
|
|
106
166
|
neverSynced: string;
|
|
107
|
-
/**
|
|
108
|
-
|
|
167
|
+
/** 上流に居るがローカルユーザーへ解決できていない人数。`{count}` を人数へ置換する。 */
|
|
168
|
+
unresolvedTemplate: string;
|
|
109
169
|
syncPaused: string;
|
|
110
170
|
syncEnabled: string;
|
|
111
171
|
syncNow: string;
|
|
@@ -113,10 +173,53 @@ type UserAdminLabels = {
|
|
|
113
173
|
/** 同期が滞っていることの警告。停止はセキュリティ事象である。 */
|
|
114
174
|
staleWarning: string;
|
|
115
175
|
disabledWarning: string;
|
|
176
|
+
/** 停止件数。`{paused}` / `{total}` を件数へ置換する。 */
|
|
177
|
+
pausedTemplate: string;
|
|
178
|
+
/** 失敗したグループの列挙。`{groups}` を名前の並びへ置換する。 */
|
|
179
|
+
erroredTemplate: string;
|
|
180
|
+
/** 失敗理由付きの 1 件。`{group}` / `{reason}`。 */
|
|
181
|
+
erroredItemTemplate: string;
|
|
182
|
+
/** 列挙の区切り。言語で変わる。 */
|
|
183
|
+
listSeparator: string;
|
|
184
|
+
/** 滞留警告に添える最終成功時刻。`{at}`。 */
|
|
185
|
+
oldestSyncedTemplate: string;
|
|
186
|
+
/** 未処理の同期要求。`{count}`。 */
|
|
187
|
+
pendingTemplate: string;
|
|
188
|
+
/** 連携先が 1 つも残っていないときの説明。 */
|
|
189
|
+
nothingToLink: string;
|
|
190
|
+
/** 未結線の配備で操作を出さない理由。 */
|
|
191
|
+
notWiredNotice: string;
|
|
192
|
+
/** 行ごとの読み上げ名。`{group}` をグループ名へ置換する。 */
|
|
193
|
+
syncNowAria: string;
|
|
194
|
+
pauseAria: string;
|
|
195
|
+
resumeAria: string;
|
|
196
|
+
allowGroupAria: string;
|
|
197
|
+
disallowGroupAria: string;
|
|
198
|
+
unlinkAria: string;
|
|
199
|
+
/** グループ単位のサインイン許可を外す確認。 */
|
|
200
|
+
confirmDisallow: string;
|
|
116
201
|
link: string;
|
|
117
202
|
unlink: string;
|
|
118
203
|
externalKey: string;
|
|
119
204
|
empty: string;
|
|
205
|
+
/** 直近の同期が失敗したグループの見出し。件数だけでは何が起きたか判らない。 */
|
|
206
|
+
erroredWarning: string;
|
|
207
|
+
/** 同期有効なリンクのうち最も古い成功時刻。滞留の実際の深さを示す。 */
|
|
208
|
+
oldestSyncedAt: string;
|
|
209
|
+
/** 連携するグループを選ぶ欄。 */
|
|
210
|
+
selectGroup: string;
|
|
211
|
+
/** 上流グループのアドレス入力。 */
|
|
212
|
+
externalKeyPlaceholder: string;
|
|
213
|
+
/** 連携解除の確認。台帳と許可設定が消える。 */
|
|
214
|
+
confirmUnlink: string;
|
|
215
|
+
/** 同期の一時停止・再開。 */
|
|
216
|
+
pause: string;
|
|
217
|
+
resume: string;
|
|
218
|
+
/** 許可グループに加える / 外す。 */
|
|
219
|
+
allowGroup: string;
|
|
220
|
+
disallowGroup: string;
|
|
221
|
+
/** グループ名と鍵の併記。`{name}` / `{key}`。 */
|
|
222
|
+
groupOptionTemplate: string;
|
|
120
223
|
};
|
|
121
224
|
};
|
|
122
225
|
/**
|
|
@@ -132,7 +235,12 @@ declare const jaUserAdminLabels: UserAdminLabels;
|
|
|
132
235
|
/** セクション単位の部分上書き。 */
|
|
133
236
|
type PartialUserAdminLabels = {
|
|
134
237
|
title?: string;
|
|
238
|
+
locale?: string;
|
|
239
|
+
timeZone?: string;
|
|
240
|
+
common?: Partial<UserAdminLabels["common"]>;
|
|
241
|
+
errors?: Partial<UserAdminLabels["errors"]>;
|
|
135
242
|
heading?: string;
|
|
243
|
+
permissions?: Partial<UserAdminLabels["permissions"]>;
|
|
136
244
|
tabs?: Partial<UserAdminLabels["tabs"]>;
|
|
137
245
|
usersView?: Partial<UserAdminLabels["usersView"]>;
|
|
138
246
|
groupsView?: Partial<UserAdminLabels["groupsView"]>;
|
|
@@ -261,6 +369,17 @@ type UserAdminGuards = {
|
|
|
261
369
|
action: UserAdminAccess;
|
|
262
370
|
intent: string;
|
|
263
371
|
}) => Promise<void> | void;
|
|
372
|
+
/**
|
|
373
|
+
* Observes a denial that was converted into an in-page error. 画面内エラーへ変換した拒否の観測点。
|
|
374
|
+
*
|
|
375
|
+
* 拒否を画面内に返すと、既定のエラー経路が拾っていたログが消える。管理面への総当たりが
|
|
376
|
+
* 200 番台の列に紛れて見えなくなるため、宿主が記録できる口を開けておく。
|
|
377
|
+
*/
|
|
378
|
+
onDenied?: (context: {
|
|
379
|
+
intent: string;
|
|
380
|
+
actions: readonly UserAdminAccess[];
|
|
381
|
+
error: unknown;
|
|
382
|
+
}) => void;
|
|
264
383
|
};
|
|
265
384
|
/**
|
|
266
385
|
* Neutral per-resource permission summary the admin shell renders in its header badge.
|
|
@@ -318,7 +437,10 @@ declare function createUserAdminApp(config: UserAdminAppConfig): {
|
|
|
318
437
|
myPermissions: Record<string, UserAdminPermission | undefined> | null;
|
|
319
438
|
labels: UserAdminLabels;
|
|
320
439
|
}>;
|
|
321
|
-
action: ({ request }: RouteArgs) => Promise<{
|
|
440
|
+
action: ({ request }: RouteArgs) => Promise<react_router.UNSAFE_DataWithResponseInit<{
|
|
441
|
+
ok: boolean;
|
|
442
|
+
error: string;
|
|
443
|
+
}> | {
|
|
322
444
|
ok: boolean;
|
|
323
445
|
error?: undefined;
|
|
324
446
|
} | {
|
|
@@ -350,6 +472,10 @@ type UserAdminLoaderData = {
|
|
|
350
472
|
labels?: UserAdminLabels;
|
|
351
473
|
};
|
|
352
474
|
declare function UsersView(): React__default.JSX.Element;
|
|
475
|
+
/**
|
|
476
|
+
* View for managing user groups (create, edit, delete).
|
|
477
|
+
* ユーザーグループ管理ビュー (作成・編集・削除)。
|
|
478
|
+
*/
|
|
353
479
|
declare function GroupsView(): React__default.JSX.Element;
|
|
354
480
|
/**
|
|
355
481
|
* View for managing group member assignments.
|
|
@@ -361,6 +487,15 @@ declare function GroupMembersView(): React__default.JSX.Element;
|
|
|
361
487
|
* アクセス許可リスト (Allowlist) 管理ビュー。
|
|
362
488
|
*/
|
|
363
489
|
declare function AllowlistView(): React__default.JSX.Element;
|
|
490
|
+
/**
|
|
491
|
+
* View for the upstream directory: what is linked, how fresh it is, and the controls that change it.
|
|
492
|
+
* 上流ディレクトリのビュー。何が連携され、どれだけ新しく、それを変える操作を提供する。
|
|
493
|
+
*
|
|
494
|
+
* このタブが無いと、連携の作成・解除・一時停止・即時同期・グループ単位のサインイン許可という
|
|
495
|
+
* 5 つの操作にどこからも到達できない。実装されているのに押せる場所が無い状態は、実装が無いのと
|
|
496
|
+
* 変わらないうえ、「許可を消せるが作れない」という片肺の運用を強いる。
|
|
497
|
+
*/
|
|
498
|
+
declare function DirectoryView(): React__default.JSX.Element;
|
|
364
499
|
type AuthUserAdminAppViewProps = UserAdminShellProps;
|
|
365
500
|
/**
|
|
366
501
|
* Top-level application view component for the user administration UI (`/users/*`).
|
|
@@ -368,4 +503,4 @@ type AuthUserAdminAppViewProps = UserAdminShellProps;
|
|
|
368
503
|
*/
|
|
369
504
|
declare function AuthUserAdminAppView({ renderHeader }?: AuthUserAdminAppViewProps): React__default.JSX.Element;
|
|
370
505
|
|
|
371
|
-
export { AllowlistView, AuthUserAdminAppView, type AuthUserAdminAppViewProps, GroupMembersView, GroupsView, type PartialUserAdminLabels, type UserAdminAccess, type UserAdminAppConfig, type UserAdminGuards, type UserAdminLabels, type UserAdminLoaderData, type UserAdminPermission, UserAdminShell, type UserAdminShellProps, type UserAdminStore, UsersView, createInMemoryUserAdminStore, createUserAdminApp, defaultUserAdminLabels, jaUserAdminLabels, resolveUserAdminLabels };
|
|
506
|
+
export { AllowlistView, AuthUserAdminAppView, type AuthUserAdminAppViewProps, DirectoryView, GroupMembersView, GroupsView, type PartialUserAdminLabels, type UserAdminAccess, type UserAdminAppConfig, type UserAdminGuards, type UserAdminLabels, type UserAdminLoaderData, type UserAdminPermission, UserAdminShell, type UserAdminShellProps, type UserAdminStore, UsersView, createInMemoryUserAdminStore, createUserAdminApp, defaultUserAdminLabels, jaUserAdminLabels, resolveUserAdminLabels };
|