@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
@@ -1,17 +1,23 @@
1
1
  {
2
2
  "button.activate": "활성화",
3
+ "button.add what it can do": "할 수 있는 일 더하기",
3
4
  "button.cancel": "취소",
5
+ "button.close": "닫기",
4
6
  "button.confirm": "확인",
5
7
  "button.create": "생성",
8
+ "button.create role": "역할 만들기",
6
9
  "button.deactivate": "비활성화",
7
10
  "button.delete": "삭제",
8
11
  "button.delete role": "역할 삭제",
9
12
  "button.delete this appliance": "단말장치 삭제",
10
13
  "button.delete user": "사용자 삭제",
14
+ "button.drop": "떼기",
15
+ "button.edit privileges": "권한 편집",
11
16
  "button.generate new access token": "새토큰 생성",
12
17
  "button.go to home": "홈으로 이동",
13
18
  "button.logout": "로그아웃",
14
- "button.need help": "도움이 필요하세요?",
19
+ "button.name it yourself": "직접 이름 짓기",
20
+ "button.remove from domain": "도메인에서 제외",
15
21
  "button.remove owner": "소유자 해제",
16
22
  "button.save": "저장",
17
23
  "button.security-key registration": "보안인증키 등록",
@@ -20,6 +26,7 @@
20
26
  "button.submit": "전송",
21
27
  "button.terminate contract": "계약 해지",
22
28
  "button.transfer owner": "관리자 부여",
29
+ "button.unlock": "잠금 해제",
23
30
  "error.cannot_modify_system_subdomain": "'system' 서브도메인은 수정할 수 없습니다.",
24
31
  "error.domain not allowed": "'{subdomain}' 영역은 이 사용자에게 허가되지 않았습니다.",
25
32
  "error.new-password-and-confirm-password-do-not-match": "새 비밀번호와 확인 비밀번호가 일치하지 않습니다.",
@@ -40,8 +47,10 @@
40
47
  "field.forgot-password": "암호가 기억나지 않나요?",
41
48
  "field.granted at": "부여 시각",
42
49
  "field.granted by": "권한 부여자",
50
+ "field.granted privileges": "할 수 있는 일",
43
51
  "field.hidden": "감추기",
44
52
  "field.ip_address": "IP 주소",
53
+ "field.module": "모듈",
45
54
  "field.netmask": "네트워크 마스크",
46
55
  "field.options": "옵션",
47
56
  "field.owner": "소유자",
@@ -53,10 +62,13 @@
53
62
  "field.reason (optional)": "사유 (선택)",
54
63
  "field.required privilege": "필수 권한",
55
64
  "field.required role": "필수 역할",
65
+ "field.roles": "역할",
66
+ "field.seat": "자리",
56
67
  "field.serial-no": "일련번호",
57
68
  "field.sign in": "로그인",
58
69
  "field.sign out": "로그아웃",
59
70
  "field.sign up": "사용자 등록",
71
+ "field.source": "출처",
60
72
  "field.source-domain": "소스 도메인",
61
73
  "field.status": "상태",
62
74
  "field.tag": "태그",
@@ -70,7 +82,11 @@
70
82
  "field.username or email": "사용자명 또는 이메일",
71
83
  "label.access token": "액세스 토큰",
72
84
  "label.activated-user": "정상",
85
+ "label.add role": "역할 추가",
86
+ "label.add to domain": "도메인에 넣기",
87
+ "label.add user": "사용자 추가",
73
88
  "label.admin-user": "관리자",
89
+ "label.all": "전체",
74
90
  "label.application": "응용프로그램",
75
91
  "label.banned-user": "사용금지",
76
92
  "label.blacklist": "블랙리스트",
@@ -80,6 +96,7 @@
80
96
  "label.common-user": "일반",
81
97
  "label.company": "회사",
82
98
  "label.content": "내용",
99
+ "label.create account and add": "계정 만들어 추가",
83
100
  "label.customers": "고객",
84
101
  "label.delete account": "계정 삭제",
85
102
  "label.deleted-user": "삭제됨",
@@ -87,17 +104,21 @@
87
104
  "label.domain": "도메인",
88
105
  "label.domain-owner": "도메인 관리자",
89
106
  "label.email": "이메일",
107
+ "label.execute": "실행",
90
108
  "label.inactive-user": "비활성",
109
+ "label.inherited": "상속",
91
110
  "label.invite customer": "고객사 파트너 초대",
92
111
  "label.invite user": "사용자 초대",
93
112
  "label.language": "언어",
94
113
  "label.locked-user": "잠김",
95
114
  "label.login_history": "로그인 이력",
96
115
  "label.name": "이름",
116
+ "label.ours": "우리 역할",
97
117
  "label.password": "비밀번호",
98
118
  "label.privilege": "권한",
99
119
  "label.protected-request-ip": "안전한 요청 IP",
100
120
  "label.protectedlist": "보호 IP 리스트",
121
+ "label.read": "읽기",
101
122
  "label.redirect_uri": "리디렉션 uri",
102
123
  "label.resend": "재전송",
103
124
  "label.role": "역할",
@@ -112,9 +133,16 @@
112
133
  "label.user-id": "사용자 아이디",
113
134
  "label.vendors": "공급 업체",
114
135
  "label.whitelist": "화이트리스트",
136
+ "label.write": "쓰기",
115
137
  "label.x description": "{x} 설명",
116
138
  "label.x name": "{x} 이름",
139
+ "text.a blank seat opens nothing until you give it privileges": "빈 자리는 권한을 줄 때까지 아무것도 열지 않습니다.",
140
+ "text.a role of this name exists and will be added to": "같은 이름의 역할이 이미 있습니다. 새로 만들지 않고 그 역할에 권한을 더합니다.",
141
+ "text.account exists so joins immediately": "이미 계정이 있습니다. 넣으면 바로 들어옵니다.",
142
+ "text.account will be created with the default password": "이 이메일로 가입한 계정이 없습니다. 기본 비밀번호로 계정을 만들어 넣습니다. 비밀번호는 직접 알려 주셔야 합니다.",
117
143
  "text.add_domain_owner_description": "도메인 멤버 중 한 명에게 소유자 권한을 부여합니다.",
144
+ "text.already in this domain": "이미 있음",
145
+ "text.and x more": "외 {x}개",
118
146
  "text.appliance": "단말장치",
119
147
  "text.appliance credential": "단말장치 자격증명",
120
148
  "text.application management": "응용프로그램 관리",
@@ -127,6 +155,7 @@
127
155
  "text.attribute management": "엔티티 속성 관리",
128
156
  "text.auth profile": "사용자 프로파일",
129
157
  "text.auth-provider management": "인증 제공자 관리",
158
+ "text.cannot be undone": "되돌릴 수 없는 조치",
130
159
  "text.cannot_delete": "삭제할 수 없습니다.",
131
160
  "text.change password": "비밀번호 변경",
132
161
  "text.click login history": "최근 로그인 이력을 보고 싶다면 여기를 클릭하세요.",
@@ -143,32 +172,72 @@
143
172
  "text.domain owner removed successfully": "도메인 소유자가 해제되었습니다",
144
173
  "text.domain owners": "도메인 소유자",
145
174
  "text.domain_name_change_warning": "도메인 이름을 변경하시겠습니까? (서브도메인은 변경되지 않고 기존대로 유지됩니다.)",
146
- "text.subdomain_change_critical_warning": "경고: 서브도메인을 변경하면 전체 접속 URL(/{type}/{subdomain}/...)이 변경되어 기존에 배포된 링크, 북마크 및 활성 사용자 세션이 무효화될 수 있습니다. 신중하게 확인 후 진행해 주세요.",
147
175
  "text.email is not matched": "이메일이 일치하지 않습니다.",
148
176
  "text.env-var-list-page": "환경 변수 리스트",
149
177
  "text.failed": "실패",
178
+ "text.failed to fetch": "목록을 읽지 못했습니다",
179
+ "text.filter by module name": "모듈 이름으로 걸러 보기",
180
+ "text.inherited roles are edited in their own domain": "이 역할들은 상위 도메인에 정의되어 있어 그쪽에서만 고칠 수 있습니다.",
181
+ "text.loading": "읽는 중…",
150
182
  "text.new password": "새 비밀번호",
183
+ "text.no account and no default password": "이 이메일로 가입한 계정이 없고, 이 시스템에는 기본 비밀번호가 설정되어 있지 않습니다. 그 사람이 먼저 가입해야 부를 수 있습니다.",
184
+ "text.no description for this privilege": "이 권한에 대한 설명이 아직 없습니다.",
185
+ "text.no description for this role": "설명이 아직 없습니다 — 역할 목록에서 쓸 수 있습니다.",
151
186
  "text.no domain available": "사용할 수 있는 도메인이 없습니다.",
187
+ "text.no one holds this role yet": "이 역할을 가진 사람이 아직 없습니다.",
188
+ "text.no other user yet": "아직 다른 사용자가 없습니다",
189
+ "text.no privilege declared in this deployment": "이 배포에 선언된 권한이 아직 없습니다. 역할에 붙일 것이 없습니다.",
190
+ "text.no privilege granted": "여는 것이 없음",
191
+ "text.no role assigned": "역할 없음",
192
+ "text.no role defined in this domain": "이 도메인에 역할이 없습니다. 역할을 먼저 만들어야 부여할 수 있습니다.",
193
+ "text.no role yet": "아직 정의된 역할이 없습니다",
194
+ "text.none on": "없음",
195
+ "text.not declared for this module": "이 모듈에는 그 권한이 선언되어 있지 않습니다.",
196
+ "text.nothing is on for this role yet": "이 역할은 아직 아무것도 열지 않습니다. 아래에서 할 수 있는 일을 더해 주십시오.",
197
+ "text.nothing matches x": "\"{x}\"이 들어가는 모듈 이름이 없습니다.",
198
+ "text.opens nothing, receives approvals": "여는 것은 없고 결재만 받는 자리입니다",
199
+ "text.owner opens everything without a role": "소유자는 역할 없이도 모든 화면이 열립니다. 다른 사용자는 역할이 있어야 합니다.",
152
200
  "text.owner_transfer_completed": "owner 변경을 완료하였습니다.",
201
+ "text.password becomes the default and must be told to them": "비밀번호가 기본값으로 되돌아갑니다. 메일은 가지 않으니 새 비밀번호를 직접 알려 주셔야 합니다.",
153
202
  "text.password rule": "최소 15자 이상 혹은 숫자와 소문자를 포함하여 8자 이상이어야 합니다.",
154
203
  "text.passwords do not match": "비밀번호가 일치하지 않습니다.",
204
+ "text.pick a module on the left": "왼쪽에서 모듈을 고르면 이 역할이 그 모듈에서 무엇을 할 수 있는지 보입니다.",
205
+ "text.pick a seat to see what it opens": "자리를 고르면 무엇을 여는지 보여 줍니다.",
155
206
  "text.please enter the email of the user you want to transfer owner": "관리자로 변경할 사용자의 이메일을 입력하세요.",
156
207
  "text.please enter username or email": "사용자명 또는 이메일을 입력하세요",
208
+ "text.please try again": "잠시 후 다시 시도하십시오.",
157
209
  "text.please_fill_all_required_fields": "모든 필수 항목을 작성해 주세요",
158
210
  "text.privilege no longer declared": "이 권한을 요구하는 코드가 더 이상 없습니다",
159
211
  "text.registered roles": "등록된 역할 리스트",
160
212
  "text.remaining time": "{days}일 {hours}시간 {mins}분 {secs}초 남았습니다",
213
+ "text.remove the role from x people first": "이 역할을 지우려면 먼저 가지고 있는 {x}명에게서 떼어 주십시오.",
214
+ "text.role belongs to x domain and is edited there": "이 역할은 {x}에 정의되어 있어 그쪽에서만 고칠 수 있습니다. 여기서 부여할 수 있기 때문에 목록에 보입니다.",
161
215
  "text.role_management": "역할 관리",
216
+ "text.roles in use are kept": "가진 사람이 있는 역할은 지우지 않고 남깁니다. 아무도 안 가진 것만 지워집니다.",
162
217
  "text.select domain": "도메인 선택",
163
218
  "text.should select at least one of x": "적어도 한개 이상의 {x} 을(를) 선택해 주세요.",
164
219
  "text.signed in": "로그인",
165
220
  "text.signed out": "로그아웃",
166
221
  "text.source_and_target_domain_cannot_be_same": "소스 도메인과 타겟 도메인은 동일할 수 없습니다",
222
+ "text.start from a blank seat": "빈 자리에서 시작합니다",
223
+ "text.struck through are not installed here": "줄이 그어진 것은 이 설치에 없는 권한입니다.",
224
+ "text.subdomain_change_critical_warning": "경고: 서브도메인을 변경하면 전체 접속 URL(/{type}/{subdomain}/...)이 변경되어 기존에 배포된 링크, 북마크 및 활성 사용자 세션이 무효화될 수 있습니다. 신중하게 확인 후 진행해 주세요.",
167
225
  "text.synchronize": "동기화",
226
+ "text.they lose access to this domain but keep the account": "이 도메인에서 더 이상 일할 수 없게 됩니다. 계정은 남아 있어서 나중에 다시 부를 수 있습니다.",
227
+ "text.this plant may call the seat what it likes": "이 공장에서 부르는 이름으로 바꿔도 됩니다.",
168
228
  "text.token expiry time": "토큰 만료 시점",
229
+ "text.unlocks in x minutes": "{x}분 뒤 잠금 해제",
169
230
  "text.updated_successfully": "성공적으로 업데이트 되었습니다.",
170
- "text.user invitation prompt": "초대하고자 하는 사용자아이디나 이메일을 입력하세요。",
231
+ "text.user invitation prompt": "초대하고자 하는 사용자아이디나 이메일을 입력하세요.",
171
232
  "text.user management": "사용자 관리",
233
+ "text.view only": "상속 역할 — 보기만",
234
+ "text.without a role they see nothing": "역할을 정하지 않으면 들어와도 볼 화면이 없습니다.",
235
+ "text.x is required": "{x}을(를) 입력해 주십시오.",
236
+ "text.x modules y privileges": "모듈 {x} · 권한 {y}",
237
+ "text.x not here": "{x}개가 이 설치에 없음",
238
+ "text.x of y on": "{y}개 중 {x}개 켜짐",
239
+ "text.x on": "{x}개 켜짐",
240
+ "text.x people hold this role": "이 역할을 가진 사람 {x}명",
172
241
  "text.x_cannot_delete": "{x}은/는 삭제할 수 없습니다.",
173
242
  "text.x_created_successfully": "{x}이/가 성공적으로 생성되었습니다.",
174
243
  "text.x_deleted_successfully": "{x}이/가 성공적으로 삭제되었습니다.",
@@ -185,13 +254,13 @@
185
254
  "title.lookup role": "역할 검색",
186
255
  "title.lookup user": "사용자 검색",
187
256
  "title.move to this domain": "이 도메인으로 이동하기",
188
- "title.need help": "도움이 필요하세요?",
189
257
  "title.nothing selected": "선택된 항목이 없습니다.",
190
258
  "title.open attributes view": "속성목록 보기",
191
259
  "title.owner_transfer": "도메인 소유자 변경하기",
192
260
  "title.partners": "파트너 관리",
193
261
  "title.protected-privileges": "보호되는 권한",
194
262
  "title.reset password": "비밀번호 초기화",
263
+ "title.role privileges": "역할 권한",
195
264
  "title.secure-ip-list": "보안 IP 리스트",
196
265
  "title.sign in": "로그인",
197
266
  "title.sign up": "사용자 등록",
@@ -3,6 +3,7 @@
3
3
  "button.cancel": "batalkan",
4
4
  "button.confirm": "sahkan",
5
5
  "button.create": "cipta",
6
+ "button.create role": "create role",
6
7
  "button.deactivate": "deaktifkan",
7
8
  "button.delete": "padam",
8
9
  "button.delete role": "padam peranan",
@@ -11,7 +12,7 @@
11
12
  "button.generate new access token": "Cipta akses token baru",
12
13
  "button.go to home": "ke halaman utama",
13
14
  "button.logout": "logout",
14
- "button.need help": "perlukan bantuan",
15
+ "button.name it yourself": "name it yourself",
15
16
  "button.save": "simpan",
16
17
  "button.security-key registration": "pendaftaran kunci keselamatan",
17
18
  "button.show-all": "Tunjukkan semua",
@@ -48,6 +49,7 @@
48
49
  "field.private-key": "Kunci peribadi",
49
50
  "field.required privilege": "keperluan keistimewaan",
50
51
  "field.required role": "peranan diperlukan",
52
+ "field.seat": "seat",
51
53
  "field.serial-no": "nombor siri",
52
54
  "field.sign in": "log masuk",
53
55
  "field.sign out": "log keluar",
@@ -108,6 +110,9 @@
108
110
  "label.whitelist": "senarai putih",
109
111
  "label.x description": "{x} penerangan",
110
112
  "label.x name": "{x} nama",
113
+ "text.a blank seat opens nothing until you give it privileges": "A blank seat opens nothing until you give it privileges.",
114
+ "text.a role of this name exists and will be added to": "A role of this name already exists. It will be used as it stands and these privileges added to it.",
115
+ "text.already in this domain": "already here",
111
116
  "text.appliance": "perkakas terminal",
112
117
  "text.appliance credential": "kelayakan peralatan terminal",
113
118
  "text.application management": "pengurusan aplikasi",
@@ -132,16 +137,17 @@
132
137
  "text.do_you_want_to_create_x": "adakah anda mahu mencipta {x}?",
133
138
  "text.do_you_want_to_invite_x": "adakah anda ingin mengundang {x}",
134
139
  "text.domain management": "pengurusan domain",
135
- "text.domain_name_change_warning": "adakah anda pasti mahu menukar nama domain? (subdomain akan kekal tidak berubah.)",
136
- "text.subdomain_change_critical_warning": "amaran: menukar subdomain akan mengubah URL capaian penuh (/{type}/{subdomain}/...) dan mungkin membatalkan pautan luaran, penanda buku dan sesi pengguna aktif sedia ada. sila teruskan dengan berhati-hati.",
137
140
  "text.domain sumber dan sasaran tidak boleh sama": "domain sumber dan sasaran tidak boleh sama",
141
+ "text.domain_name_change_warning": "adakah anda pasti mahu menukar nama domain? (subdomain akan kekal tidak berubah.)",
138
142
  "text.email is not matched": "alamat email tidak sepadan",
139
143
  "text.env-var-list-page": "senarai pengubahsuaian persekitaran",
140
144
  "text.new password": "kata laluan baru",
141
145
  "text.no domain available": "maaf, tiada domain untuk dipilih",
146
+ "text.opens nothing, receives approvals": "opens nothing — this seat receives approvals",
142
147
  "text.owner_transfer_completed": "pindah pemilik selesai",
143
148
  "text.password rule": "sila pastikan kemasukan kata laluan adalah 15 huruf ATAU 8 huruf termasuk nombor dengan huruf kecil.",
144
149
  "text.passwords do not match": "kata laluan anda tidak padan",
150
+ "text.pick a seat to see what it opens": "Pick a seat to see what it opens.",
145
151
  "text.please enter the email of the user you want to transfer owner": "sila masukkan e-mel pengguna yang anda hendak pindahkan pemilik",
146
152
  "text.privilege no longer declared": "tiada kod yang memerlukan kebenaran ini lagi",
147
153
  "text.registered roles": "peranan sudah didaftar",
@@ -152,11 +158,17 @@
152
158
  "text.signed in": "telah log masuk",
153
159
  "text.signed out": "telah log keluar",
154
160
  "text.sila isi semua medan yang diperlukan": "sila isi semua medan yang diperlukan",
161
+ "text.start from a blank seat": "start from a blank seat",
162
+ "text.struck through are not installed here": "Struck through are privileges this installation does not have.",
163
+ "text.subdomain_change_critical_warning": "amaran: menukar subdomain akan mengubah URL capaian penuh (/{type}/{subdomain}/...) dan mungkin membatalkan pautan luaran, penanda buku dan sesi pengguna aktif sedia ada. sila teruskan dengan berhati-hati.",
155
164
  "text.synchronize": "menyamakan",
165
+ "text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
156
166
  "text.token expiry time": "masa tamat token",
157
167
  "text.updated_successfully": "berjaya dikemaskini",
158
168
  "text.user invitation prompt": "sila masukkan nama pengguna atau alamat e-mel pengguna yang ingin anda jemput.",
159
169
  "text.user management": "pengurusan pengguna",
170
+ "text.x modules y privileges": "{x} modules · {y} privileges",
171
+ "text.x not here": "{x} not installed here",
160
172
  "text.x_cannot_delete": "{x} tidak boleh dipadam",
161
173
  "text.x_created_successfully": "{x} berjaya dibina",
162
174
  "text.x_deleted_successfully": "{x} berjaya dipadam",
@@ -172,7 +184,6 @@
172
184
  "title.lookup role": "cari peranan",
173
185
  "title.lookup user": "cari pengguna",
174
186
  "title.move to this domain": "pindah ke domain ini",
175
- "title.need help": "perlu bantuan?",
176
187
  "title.nothing selected": "tiada yang dipilih",
177
188
  "title.open attributes view": "lihat atribut terbuka",
178
189
  "title.owner_transfer": "menukar pemilik",
@@ -3,6 +3,7 @@
3
3
  "button.cancel": "取消",
4
4
  "button.confirm": "确认",
5
5
  "button.create": "创建",
6
+ "button.create role": "create role",
6
7
  "button.deactivate": "停用",
7
8
  "button.delete": "删除",
8
9
  "button.delete role": "删除角色",
@@ -11,7 +12,7 @@
11
12
  "button.generate new access token": "生成新的访问令牌",
12
13
  "button.go to home": "首页",
13
14
  "button.logout": "退出",
14
- "button.need help": "需要帮助",
15
+ "button.name it yourself": "name it yourself",
15
16
  "button.save": "保存",
16
17
  "button.security-key registration": "安全密钥注册",
17
18
  "button.show-all": "全部显示",
@@ -48,6 +49,7 @@
48
49
  "field.private-key": "私钥",
49
50
  "field.required privilege": "必需权限",
50
51
  "field.required role": "所需角色",
52
+ "field.seat": "seat",
51
53
  "field.serial-no": "序列号",
52
54
  "field.sign in": "登录",
53
55
  "field.sign out": "退出",
@@ -108,6 +110,9 @@
108
110
  "label.whitelist": "白名单",
109
111
  "label.x description": "{x} 描述",
110
112
  "label.x name": "{x} 名称",
113
+ "text.a blank seat opens nothing until you give it privileges": "A blank seat opens nothing until you give it privileges.",
114
+ "text.a role of this name exists and will be added to": "A role of this name already exists. It will be used as it stands and these privileges added to it.",
115
+ "text.already in this domain": "already here",
111
116
  "text.appliance": "终端设备",
112
117
  "text.appliance credential": "终端设备凭证",
113
118
  "text.application management": "应用管理",
@@ -133,14 +138,15 @@
133
138
  "text.do_you_want_to_invite_x": "请确认是否邀请客户{x}",
134
139
  "text.domain management": "域管理",
135
140
  "text.domain_name_change_warning": "确定要更改域名吗?(子域名将保持不变。)",
136
- "text.subdomain_change_critical_warning": "警告: 更改子域将更改完整的访问URL(/{type}/{subdomain}/...),并可能使现有的外部链接、书签和活动用户会话失效。请谨慎操作。",
137
141
  "text.email is not matched": "电子邮件不匹配",
138
142
  "text.env-var-list-page": "环境变量列表",
139
143
  "text.new password": "新密码",
140
144
  "text.no domain available": "抱歉,没有域名",
145
+ "text.opens nothing, receives approvals": "opens nothing — this seat receives approvals",
141
146
  "text.owner_transfer_completed": "所有权转让成功。",
142
147
  "text.password rule": "输入的密码必须15个字符或8字符包括号码和小写字符",
143
148
  "text.passwords do not match": "密码不匹配",
149
+ "text.pick a seat to see what it opens": "Pick a seat to see what it opens.",
144
150
  "text.please enter the email of the user you want to transfer owner": "请录入所有权接收人的邮件。",
145
151
  "text.please_fill_all_required_fields": "请填写所有必填字段",
146
152
  "text.privilege no longer declared": "已没有代码需要此权限",
@@ -152,11 +158,17 @@
152
158
  "text.signed in": "已登录",
153
159
  "text.signed out": "已退出",
154
160
  "text.source_and_target_domain_cannot_be_same": "源域和目标域不能相同",
161
+ "text.start from a blank seat": "start from a blank seat",
162
+ "text.struck through are not installed here": "Struck through are privileges this installation does not have.",
163
+ "text.subdomain_change_critical_warning": "警告: 更改子域将更改完整的访问URL(/{type}/{subdomain}/...),并可能使现有的外部链接、书签和活动用户会话失效。请谨慎操作。",
155
164
  "text.synchronize": "同步",
165
+ "text.this plant may call the seat what it likes": "Call the seat whatever this plant calls it.",
156
166
  "text.token expiry time": "令牌过期时间",
157
167
  "text.updated_successfully": "更新成功",
158
168
  "text.user invitation prompt": "请输入您希望邀请的用户的用户名或电子邮件地址。",
159
169
  "text.user management": "用户管理",
170
+ "text.x modules y privileges": "{x} modules · {y} privileges",
171
+ "text.x not here": "{x} not installed here",
160
172
  "text.x_cannot_delete": "{x}无法删除",
161
173
  "text.x_created_successfully": "{x}创建成功",
162
174
  "text.x_deleted_successfully": "{x}删除成功",
@@ -172,7 +184,6 @@
172
184
  "title.lookup role": "查找角色",
173
185
  "title.lookup user": "查找用户",
174
186
  "title.move to this domain": "移动到此域名",
175
- "title.need help": "需要帮助?",
176
187
  "title.nothing selected": "未选择",
177
188
  "title.open attributes view": "打开属性视图",
178
189
  "title.owner_transfer": "业主权限转移",
@@ -1,20 +0,0 @@
1
- import '@material/web/button/text-button.js';
2
- import '@material/web/button/elevated-button.js';
3
- import '@material/web/textfield/filled-text-field.js';
4
- import '@material/web/dialog/dialog.js';
5
- import '@operato/i18n';
6
- import { LitElement } from 'lit';
7
- declare const ContactUs_base: (new (...args: any[]) => LitElement) & typeof LitElement;
8
- export declare class ContactUs extends ContactUs_base {
9
- static get styles(): import("lit").CSSResult[];
10
- dialog: HTMLElement & {
11
- show: () => void;
12
- };
13
- subjectInput: HTMLInputElement;
14
- senderInput: HTMLInputElement;
15
- contentInput: HTMLInputElement;
16
- render(): import("lit-html").TemplateResult<1>;
17
- _checkValidity(): boolean;
18
- _submit(e: MouseEvent): void;
19
- }
20
- export {};
@@ -1,121 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@material/web/button/text-button.js';
3
- import '@material/web/button/elevated-button.js';
4
- import '@material/web/textfield/filled-text-field.js';
5
- import '@material/web/dialog/dialog.js';
6
- import '@operato/i18n';
7
- import { css, html, LitElement } from 'lit';
8
- import { customElement, query } from 'lit/decorators.js';
9
- import { i18next, localize } from '@operato/i18n';
10
- import { auth } from '@things-factory/auth-base/dist-client/auth.js';
11
- let ContactUs = class ContactUs extends localize(i18next)(LitElement) {
12
- static get styles() {
13
- return [
14
- css `
15
- * {
16
- box-sizing: border-box;
17
- }
18
-
19
- *:focus {
20
- outline: none;
21
- }
22
-
23
- #input-form {
24
- display: grid;
25
- grid-template-rows: 1fr 1fr 3fr;
26
- grid-gap: 10px 0;
27
- }
28
- `
29
- ];
30
- }
31
- render() {
32
- return html `
33
- <md-elevated-button @click=${e => this.dialog.show()}>${i18next.t('button.need help')}</md-elevated-button>
34
-
35
- <md-dialog id="dialog" heading=${i18next.t('title.need help')}>
36
- <form action="" method="post">
37
- <input id="subject-input" name="subject" type="hidden" />
38
- <input id="sender-input" name="sender" type="hidden" />
39
- <input id="content-input" name="content" type="hidden" />
40
- </form>
41
-
42
- <div id="input-form" slot="content">
43
- <md-filled-text-field
44
- type="text"
45
- label=${i18next.t('label.subject')}
46
- dialogInitialFocus
47
- required
48
- @input=${e => {
49
- const val = e.target.value;
50
- this.subjectInput.value = val;
51
- }}
52
- ></md-filled-text-field>
53
-
54
- <md-filled-text-field
55
- type="text"
56
- name="sender"
57
- label=${i18next.t('label.email')}
58
- required
59
- @input=${e => {
60
- const val = e.target.value;
61
- this.senderInput.value = val;
62
- }}
63
- ></md-filled-text-field>
64
-
65
- <md-filled-text-field
66
- name="content"
67
- type="textarea"
68
- label=${i18next.t('label.content')}
69
- required
70
- @keydown=${e => e.stopPropagation()}
71
- @input=${e => {
72
- const val = e.target.value;
73
- this.contentInput.value = val;
74
- }}
75
- ></md-filled-text-field>
76
-
77
- <md-elevated-button slot="primaryAction" type="button" @click=${e => this._submit(e)}
78
- >${i18next.t('button.submit')}</md-elevated-button
79
- >
80
- </div>
81
- </md-dialog>
82
- `;
83
- }
84
- _checkValidity() {
85
- return false;
86
- }
87
- _submit(e) {
88
- if (!this._checkValidity())
89
- return;
90
- const form = e.target;
91
- const formData = new FormData(form);
92
- let json = {};
93
- //convert form into json
94
- for (const [key, value] of formData.entries()) {
95
- json[key] = value;
96
- }
97
- auth.changePassword(json);
98
- form.reset();
99
- }
100
- };
101
- __decorate([
102
- query('#dialog'),
103
- __metadata("design:type", Object)
104
- ], ContactUs.prototype, "dialog", void 0);
105
- __decorate([
106
- query('#subject-input'),
107
- __metadata("design:type", HTMLInputElement)
108
- ], ContactUs.prototype, "subjectInput", void 0);
109
- __decorate([
110
- query('#sender-input'),
111
- __metadata("design:type", HTMLInputElement)
112
- ], ContactUs.prototype, "senderInput", void 0);
113
- __decorate([
114
- query('#content-input'),
115
- __metadata("design:type", HTMLInputElement)
116
- ], ContactUs.prototype, "contentInput", void 0);
117
- ContactUs = __decorate([
118
- customElement('contact-us')
119
- ], ContactUs);
120
- export { ContactUs };
121
- //# sourceMappingURL=contact-us.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contact-us.js","sourceRoot":"","sources":["../../client/components/contact-us.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\nimport '@material/web/button/elevated-button.js'\nimport '@material/web/textfield/filled-text-field.js'\nimport '@material/web/dialog/dialog.js'\n\nimport '@operato/i18n'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, query } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\nimport { auth } from '@things-factory/auth-base/dist-client/auth.js'\n\n@customElement('contact-us')\nexport class ContactUs extends localize(i18next)(LitElement) {\n static get styles() {\n return [\n css`\n * {\n box-sizing: border-box;\n }\n\n *:focus {\n outline: none;\n }\n\n #input-form {\n display: grid;\n grid-template-rows: 1fr 1fr 3fr;\n grid-gap: 10px 0;\n }\n `\n ]\n }\n\n @query('#dialog') dialog!: HTMLElement & { show: () => void }\n @query('#subject-input') subjectInput!: HTMLInputElement\n @query('#sender-input') senderInput!: HTMLInputElement\n @query('#content-input') contentInput!: HTMLInputElement\n\n render() {\n return html`\n <md-elevated-button @click=${e => this.dialog.show()}>${i18next.t('button.need help')}</md-elevated-button>\n\n <md-dialog id=\"dialog\" heading=${i18next.t('title.need help')}>\n <form action=\"\" method=\"post\">\n <input id=\"subject-input\" name=\"subject\" type=\"hidden\" />\n <input id=\"sender-input\" name=\"sender\" type=\"hidden\" />\n <input id=\"content-input\" name=\"content\" type=\"hidden\" />\n </form>\n\n <div id=\"input-form\" slot=\"content\">\n <md-filled-text-field\n type=\"text\"\n label=${i18next.t('label.subject')}\n dialogInitialFocus\n required\n @input=${e => {\n const val = e.target.value\n this.subjectInput.value = val\n }}\n ></md-filled-text-field>\n\n <md-filled-text-field\n type=\"text\"\n name=\"sender\"\n label=${i18next.t('label.email')}\n required\n @input=${e => {\n const val = e.target.value\n this.senderInput.value = val\n }}\n ></md-filled-text-field>\n\n <md-filled-text-field\n name=\"content\"\n type=\"textarea\"\n label=${i18next.t('label.content')}\n required\n @keydown=${e => e.stopPropagation()}\n @input=${e => {\n const val = e.target.value\n this.contentInput.value = val\n }}\n ></md-filled-text-field>\n\n <md-elevated-button slot=\"primaryAction\" type=\"button\" @click=${e => this._submit(e)}\n >${i18next.t('button.submit')}</md-elevated-button\n >\n </div>\n </md-dialog>\n `\n }\n\n _checkValidity(): boolean {\n return false\n }\n\n _submit(e: MouseEvent) {\n if (!this._checkValidity()) return\n\n const form = e.target as HTMLFormElement\n\n const formData = new FormData(form)\n let json = {}\n\n //convert form into json\n for (const [key, value] of formData.entries()) {\n json[key] = value\n }\n\n auth.changePassword(json)\n\n form.reset()\n }\n}\n"]}
@@ -1 +0,0 @@
1
- import '@material/web/textfield/filled-text-field.js';
@@ -1,117 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@material/web/textfield/filled-text-field.js';
3
- import gql from 'graphql-tag';
4
- import { css, html, LitElement } from 'lit';
5
- import { customElement, query } from 'lit/decorators.js';
6
- import { client, gqlContext } from '@operato/graphql';
7
- import { i18next, localize } from '@operato/i18n';
8
- import { OxPrompt } from '@operato/popup/ox-prompt.js';
9
- let CreateRole = class CreateRole extends localize(i18next)(LitElement) {
10
- static { this.styles = css `
11
- :host {
12
- --md-text-field-fill-color: var(--md-sys-color-on-primary);
13
- background-color: var(--md-sys-color-surface);
14
- margin: var(--spacing-large) 0;
15
- padding: var(--spacing-large);
16
- border-radius: var(--border-radius);
17
- box-shadow: var(--box-shadow);
18
-
19
- display: grid;
20
- grid-template-columns: 1fr 2fr auto;
21
- gap: 5px 15px;
22
- clear: both;
23
- max-width: var(--input-container-max-width);
24
-
25
- align-items: center;
26
- }
27
-
28
- md-outlined-button {
29
- margin: var(--input-margin);
30
- text-transform: capitalize;
31
- }
32
-
33
- @media screen and (max-width: 480px) {
34
- :host {
35
- grid-template-columns: 1fr 1fr;
36
- }
37
-
38
- md-outlined-button {
39
- grid-column: span 2;
40
-
41
- margin: var(--input-margin);
42
- }
43
- }
44
- `; }
45
- render() {
46
- return html `
47
- <md-filled-text-field
48
- type="text"
49
- name="name"
50
- label=${String(i18next.t('label.x name', { x: i18next.t('label.role') }))}
51
- ></md-filled-text-field>
52
- <md-filled-text-field
53
- type="text"
54
- name="description"
55
- label=${String(i18next.t('label.x description', { x: i18next.t('label.role') }))}
56
- ></md-filled-text-field>
57
-
58
- <md-outlined-button @click=${this.onCreateRole.bind(this)}
59
- >${String(i18next.t('button.create'))}</md-outlined-button
60
- >
61
- `;
62
- }
63
- async onCreateRole() {
64
- let role = {};
65
- const name = this.nameInput.value.trim();
66
- const description = this.descriptionInput.value;
67
- if (!name) {
68
- return this.showToast(i18next.t('error.value is empty', { value: i18next.t('field.name') }));
69
- }
70
- role.name = name;
71
- role.description = description;
72
- if (await OxPrompt.open({
73
- title: i18next.t('text.are_you_sure'),
74
- text: i18next.t('text.do_you_want_to_create_x', { x: i18next.t('label.role') }),
75
- confirmButton: { text: i18next.t('button.confirm') },
76
- cancelButton: { text: i18next.t('button.cancel') }
77
- })) {
78
- const response = await client.mutate({
79
- mutation: gql `
80
- mutation createRole($role: NewRole!) {
81
- createRole(role: $role) {
82
- name
83
- }
84
- }
85
- `,
86
- variables: { role },
87
- context: gqlContext()
88
- });
89
- if (!response.errors) {
90
- await this.dispatchEvent(new CustomEvent('fetch-roles'));
91
- await OxPrompt.open({
92
- type: 'success',
93
- title: i18next.t('text.completed'),
94
- text: i18next.t('text.data_uploaded_successfully'),
95
- confirmButton: { text: i18next.t('button.confirm') }
96
- });
97
- this.nameInput.value = '';
98
- this.descriptionInput.value = '';
99
- }
100
- }
101
- }
102
- showToast(message) {
103
- document.dispatchEvent(new CustomEvent('notify', { detail: { message, option: { timer: 1000 } } }));
104
- }
105
- };
106
- __decorate([
107
- query('[name=name]'),
108
- __metadata("design:type", HTMLInputElement)
109
- ], CreateRole.prototype, "nameInput", void 0);
110
- __decorate([
111
- query('[name=description]'),
112
- __metadata("design:type", HTMLInputElement)
113
- ], CreateRole.prototype, "descriptionInput", void 0);
114
- CreateRole = __decorate([
115
- customElement('create-role')
116
- ], CreateRole);
117
- //# sourceMappingURL=create-role.js.map