@things-factory/auth-ui 10.1.4 → 10.1.7

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.
Files changed (59) hide show
  1. package/dist-client/components/change-password.d.ts +11 -0
  2. package/dist-client/components/change-password.js +103 -6
  3. package/dist-client/components/change-password.js.map +1 -1
  4. package/dist-client/components/role-privilege-picker.d.ts +37 -0
  5. package/dist-client/components/role-privilege-picker.js +58 -0
  6. package/dist-client/components/role-privilege-picker.js.map +1 -0
  7. package/dist-client/components/role-template-picker.d.ts +83 -0
  8. package/dist-client/components/role-template-picker.js +487 -0
  9. package/dist-client/components/role-template-picker.js.map +1 -0
  10. package/dist-client/components/user-detail.d.ts +151 -0
  11. package/dist-client/components/user-detail.js +631 -0
  12. package/dist-client/components/user-detail.js.map +1 -0
  13. package/dist-client/components/user-invite.d.ts +80 -0
  14. package/dist-client/components/user-invite.js +422 -0
  15. package/dist-client/components/user-invite.js.map +1 -0
  16. package/dist-client/entries/auth/activate.d.ts +0 -1
  17. package/dist-client/entries/auth/activate.js +0 -8
  18. package/dist-client/entries/auth/activate.js.map +1 -1
  19. package/dist-client/pages/role/role-list-page.d.ts +203 -0
  20. package/dist-client/pages/role/role-list-page.js +838 -0
  21. package/dist-client/pages/role/role-list-page.js.map +1 -0
  22. package/dist-client/pages/role/role-privilege-page.d.ts +181 -0
  23. package/dist-client/pages/role/role-privilege-page.js +980 -0
  24. package/dist-client/pages/role/role-privilege-page.js.map +1 -0
  25. package/dist-client/pages/user/user-list-page.d.ts +88 -0
  26. package/dist-client/pages/user/user-list-page.js +474 -0
  27. package/dist-client/pages/user/user-list-page.js.map +1 -0
  28. package/dist-client/route.js +5 -2
  29. package/dist-client/route.js.map +1 -1
  30. package/dist-client/tsconfig.tsbuildinfo +1 -1
  31. package/dist-server/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +4 -4
  33. package/things-factory.config.js +3 -2
  34. package/translations/en.json +72 -3
  35. package/translations/ja.json +14 -3
  36. package/translations/ko.json +73 -4
  37. package/translations/ms.json +15 -4
  38. package/translations/zh.json +14 -3
  39. package/dist-client/components/contact-us.d.ts +0 -20
  40. package/dist-client/components/contact-us.js +0 -121
  41. package/dist-client/components/contact-us.js.map +0 -1
  42. package/dist-client/components/create-role.d.ts +0 -1
  43. package/dist-client/components/create-role.js +0 -117
  44. package/dist-client/components/create-role.js.map +0 -1
  45. package/dist-client/components/credential-manager.d.ts +0 -11
  46. package/dist-client/components/credential-manager.js +0 -64
  47. package/dist-client/components/credential-manager.js.map +0 -1
  48. package/dist-client/components/role-edit-form.d.ts +0 -1
  49. package/dist-client/components/role-edit-form.js +0 -95
  50. package/dist-client/components/role-edit-form.js.map +0 -1
  51. package/dist-client/components/role-privilege-editor.d.ts +0 -1
  52. package/dist-client/components/role-privilege-editor.js +0 -368
  53. package/dist-client/components/role-privilege-editor.js.map +0 -1
  54. package/dist-client/pages/role/role-management.d.ts +0 -4
  55. package/dist-client/pages/role/role-management.js +0 -137
  56. package/dist-client/pages/role/role-management.js.map +0 -1
  57. package/dist-client/pages/user/user-management.d.ts +0 -35
  58. package/dist-client/pages/user/user-management.js +0 -223
  59. package/dist-client/pages/user/user-management.js.map +0 -1
@@ -0,0 +1,151 @@
1
+ import '@material/web/icon/icon.js';
2
+ import '@material/web/button/elevated-button.js';
3
+ import '@material/web/button/outlined-button.js';
4
+ import '@material/web/checkbox/checkbox.js';
5
+ import './ownership-transfer-popup.js';
6
+ import { LitElement } from 'lit';
7
+ import type { CSSResultGroup } from 'lit';
8
+ declare const UserDetail_base: (new (...args: any[]) => LitElement) & typeof LitElement;
9
+ /**
10
+ * 한 사람의 역할을 고치는 자리.
11
+ *
12
+ * ── 담는 그릇을 모른다 ──────────────────────────────────────────────────────
13
+ * 팝업이든 서랍이든 그 안에 들어간다. 그래서 여기서는 **아무것도 열거나 닫지 않고** 두 가지만
14
+ * 알린다 — 저장이 끝났다(`user-updated`), 닫아 달라(`close`). 그릇이 어느 것이 될지는 아직
15
+ * 정해지지 않았고, 그 결정이 이 파일을 바꾸지 않게 한다.
16
+ *
17
+ * ── 옛 화면이 하던 것 (`components/user-role-editor.ts`) ────────────────────
18
+ * 저장할 때 `querySelectorAll('role-selector')` 로 **화면을 훑어** 「가능한 역할 전부」와
19
+ * 「고른 역할」을 만들어 보냈다.
20
+ *
21
+ * `updateUserRoles` 의 계약은 이렇다 — `availableRoles` 는 **부르는 쪽이 책임지는 범위**이고,
22
+ * 그 범위 안의 역할을 일단 다 뗀 다음 `selectedRoles` 를 다시 붙인다. 범위 밖의 역할은
23
+ * 건드리지 않는다(`user-mutation.ts` 의 `updateUserRoles`).
24
+ *
25
+ * 계약 자체는 옳다 — 화면이 일부만 편집할 수 있게 해 준다. 잘못된 것은 **그 범위를 DOM 에서
26
+ * 만든 것**이다. 목록이 늦게 오거나 잘려 있으면 화면은 그것을 모른 채 좁은 범위를 보내고,
27
+ * 안 보낸 역할이 어떻게 되는지가 그날의 렌더링에 달린다.
28
+ *
29
+ * 여기서는 범위를 **상태에서** 만든다. 읽어 온 목록이 곧 범위이고, 아직 못 읽었으면 저장하지
30
+ * 않는다.
31
+ */
32
+ export declare class UserDetail extends UserDetail_base {
33
+ static styles: CSSResultGroup;
34
+ /** 목록이 골라 준 사람. `id` 와 `username`(없으면 `email`)이 있어야 한다. */
35
+ user: any;
36
+ private availableRoles;
37
+ private selected;
38
+ private loading;
39
+ private saving;
40
+ private canManage;
41
+ private canOwn;
42
+ private myEmail;
43
+ /** 기본 비밀번호가 설정돼 있지 않으면 초기화는 서버에서 던진다 — 단추를 내주지 않는다. */
44
+ private defaultPasswordConfigured;
45
+ /**
46
+ * 이 도메인(과 부모)의 역할 id.
47
+ *
48
+ * 소유권 이전은 **받는 사람이 이 도메인에 역할을 하나라도 가질 때만** 된다
49
+ * (`transferOwner` 가 상속 역할까지 자격으로 인정하고, 그 밖은 던진다). 파트너십으로 넘어온
50
+ * 역할은 자격이 아니므로 `availableRoles`(합친 것)로는 판정할 수 없다.
51
+ */
52
+ private domainRoleIds;
53
+ private unsubscribe?;
54
+ private get savable();
55
+ render(): import("lit-html").TemplateResult<1>;
56
+ /**
57
+ * 되돌릴 수 없는 조치.
58
+ *
59
+ * ── 왜 아래에 따로 두나 ─────────────────────────────────────────────────────
60
+ * 옛 화면은 저장·소유권 이전·초기화·제외·비활성화를 **한 줄에 나란히** 뒀다. 매일 누르는
61
+ * 「저장」 옆에 한 번 누르면 끝인 「제외」가 같은 크기로 있었다.
62
+ *
63
+ * 그래서 선을 하나 긋고, 위는 채운 단추(주 동작), 아래는 테두리 단추로 둔다. 색은
64
+ * error 짝으로 글자에만 쓴다 — 면을 다 칠하면 「지금 문제가 있다」로 읽힌다.
65
+ *
66
+ * ── 무엇을 언제 내주나 ──────────────────────────────────────────────────────
67
+ * 조건은 전부 **서버가 실제로 던지는 것**을 그대로 옮긴 것이다. 눌리는 단추를 보여 주고
68
+ * 서버가 거절하면 그것은 안내가 아니라 오류다.
69
+ *
70
+ * 비밀번호 초기화 기본 비밀번호가 설정돼 있고, 내가 아니다
71
+ * 소유권 이전 활성 상태고, 소유자가 아니고, 이 도메인에 역할이 하나라도 있다
72
+ * 도메인에서 제외 소유자가 아니고, 내가 아니다
73
+ *
74
+ * ── 이름 ────────────────────────────────────────────────────────────────────
75
+ * `deleteDomainUser` 는 계정을 지우지 않는다 — **이 도메인에서만 뗀다**(서버 설명도 그렇게
76
+ * 적혀 있다). 옛 화면의 「사용자 삭제」는 하지 않는 일을 말하고 있었다.
77
+ */
78
+ private renderDangerZone;
79
+ /**
80
+ * 계정 상태와, 그것을 되돌리는 단추.
81
+ *
82
+ * **잠금 해제와 활성화는 서버에서 같은 것이다** — `activateUser` 가 `failCount` 를 0 으로
83
+ * 두고 `ACTIVATED` 로 되돌린다. 그래서 부르는 것은 하나이고, **글자만 상황에 맞춰 바꾼다.**
84
+ * 잠긴 사람에게 「활성화」라고 하면 무슨 일이 일어나는지 알 수 없다.
85
+ *
86
+ * 비활성화는 소유자와 나 자신에게는 내주지 않는다. 서버도 같은 것을 막지만
87
+ * (`inactivateUser` 가 소유자·admin 을 거절한다), **화면이 눌리는 단추를 보여 주고 서버가
88
+ * 거절하면 그것은 안내가 아니라 오류다.**
89
+ */
90
+ private renderAccountState;
91
+ private renderRoles;
92
+ connectedCallback(): void;
93
+ disconnectedCallback(): void;
94
+ private applyMe;
95
+ /**
96
+ * 서버 지시자에 적힌 인자를 그대로 되묻는다.
97
+ *
98
+ * 기본 비밀번호 여부도 여기서 함께 읽는다. 서버에 같은 답을 주는 질의가 둘 있는데
99
+ * (`checkDefaultPassword` 와 `checkResettablePasswordToDefault` — 둘 다
100
+ * `Boolean(defaultPassword)`), 하나만 쓴다.
101
+ */
102
+ private checkGates;
103
+ updated(changes: Map<string, unknown>): void;
104
+ /**
105
+ * 부여할 수 있는 역할을 읽는다.
106
+ *
107
+ * **이 사람이 지금 가진 역할은 다시 묻지 않는다** — 목록이 이미 실어 왔다(`user.roles`).
108
+ * 옛 화면은 email 로 사용자를 다시 찾았는데, 역할 이름과 달리 email 은 유일하긴 해도
109
+ * 손에 든 `id` 를 두고 다른 열쇠로 같은 사람을 찾는 것이었다. 안 물으면 그 문제가 없다.
110
+ *
111
+ * **이 도메인의 역할과 파트너십으로 넘어온 역할을 한 목록으로 합친다.** 옛 화면은 그 둘을
112
+ * 따로 그리고 저장할 때 화면에서 다시 모았는데, 합치는 자리가 화면이면 화면이 못 그린 것은
113
+ * 저장에서도 빠진다.
114
+ */
115
+ private fetch;
116
+ /** 잠금 해제와 활성화가 같은 부름이다 — 서버가 `failCount` 도 0 으로 되돌린다. */
117
+ private onActivate;
118
+ private onInactivate;
119
+ /**
120
+ * 비밀번호를 기본값으로 되돌린다.
121
+ *
122
+ * **무엇이 되는지 사람이 알 수 있게 말한다.** 「초기화하시겠습니까」는 그 뒤에 무엇을 알려
123
+ * 줘야 하는지를 안 말한다 — 초기화된 비밀번호는 관리자가 상대에게 따로 전해야 한다(서버가
124
+ * 메일을 보내지 않는다).
125
+ */
126
+ private onResetPassword;
127
+ /**
128
+ * 이 도메인에서만 뗀다 — 계정은 남는다.
129
+ *
130
+ * 그래서 확인 문구도 「지웁니다」가 아니다. 이 사람은 다른 도메인에서 계속 일할 수 있고,
131
+ * 다시 부르면 된다.
132
+ */
133
+ private onRemoveFromDomain;
134
+ /**
135
+ * 소유권을 넘긴다.
136
+ *
137
+ * 이미 있는 `ownership-transfer-popup` 을 그대로 쓴다 — 그 안에 **이메일을 다시 적게 하는**
138
+ * 확인이 들어 있다. 되돌릴 수 없는 것 중에서 유일하게 두 단계인 것이고, 그 판단이 맞다.
139
+ */
140
+ private onTransfer;
141
+ private runUserMutation;
142
+ private onToggle;
143
+ /**
144
+ * **범위를 상태에서 만든다.** 읽어 온 목록이 곧 `availableRoles` 다.
145
+ *
146
+ * 빈 범위를 보내면 서버는 「뗄 것이 없다」로 읽어 아무것도 안 한다 — 우연히 무해한 것이지
147
+ * 뜻한 바가 아니므로, 그 경우는 여기까지 오지 않는다(`savable`).
148
+ */
149
+ private onSave;
150
+ }
151
+ export {};