@c8y/ng1-modules 1018.317.0 → 1018.318.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/core/ui/user/editUser.directive.html +190 -80
- package/package.json +1 -1
|
@@ -1,50 +1,70 @@
|
|
|
1
1
|
<div class="row">
|
|
2
2
|
<div
|
|
3
3
|
class="form-group"
|
|
4
|
-
ng-hide="hideUsername"
|
|
5
4
|
ng-class="{
|
|
6
5
|
'has-error': invalid('username'),
|
|
7
6
|
'col-sm-12': hideActive,
|
|
8
7
|
'col-sm-8': !hideActive
|
|
9
8
|
}"
|
|
9
|
+
ng-hide="hideUsername"
|
|
10
10
|
>
|
|
11
11
|
<label>{{ 'Username' | translate }}</label>
|
|
12
12
|
<input
|
|
13
13
|
class="form-control"
|
|
14
|
+
placeholder="{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}"
|
|
14
15
|
name="username"
|
|
16
|
+
required
|
|
15
17
|
ng-model="user.userName"
|
|
16
18
|
ng-pattern="userNamePattern"
|
|
17
19
|
ng-maxlength="254"
|
|
18
20
|
ng-trim="false"
|
|
19
|
-
placeholder="{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}"
|
|
20
|
-
required
|
|
21
21
|
ng-disabled="user.id || disabledEdit"
|
|
22
22
|
c8y-autocomplete="off"
|
|
23
23
|
c8y-username-validator
|
|
24
24
|
/>
|
|
25
|
-
<div
|
|
25
|
+
<div
|
|
26
|
+
class="c8y-messages"
|
|
27
|
+
ng-if="invalid('username')"
|
|
28
|
+
>
|
|
26
29
|
<small class="form-control-feedback-message">
|
|
27
30
|
{{ getErrorFeedback('username') | translate }}
|
|
28
31
|
</small>
|
|
29
32
|
</div>
|
|
30
33
|
</div>
|
|
31
34
|
|
|
32
|
-
<div
|
|
35
|
+
<div
|
|
36
|
+
class="form-group col-sm-4"
|
|
37
|
+
ng-hide="hideActive"
|
|
38
|
+
>
|
|
33
39
|
<label>{{ 'Status' | translate }}</label>
|
|
34
40
|
<button
|
|
35
41
|
class="btn btn-default m-b-0"
|
|
36
|
-
type="button"
|
|
37
42
|
aria-label="{{ 'Status' | translate }}"
|
|
43
|
+
type="button"
|
|
38
44
|
ng-model="user.enabled"
|
|
39
45
|
uib-btn-checkbox="user.enabled"
|
|
40
46
|
ng-disabled="disabledEdit"
|
|
41
47
|
>
|
|
42
|
-
<i
|
|
43
|
-
|
|
44
|
-
|
|
48
|
+
<i
|
|
49
|
+
class="text-danger"
|
|
50
|
+
c8y-icon="minus-circle"
|
|
51
|
+
ng-hide="user.enabled"
|
|
52
|
+
></i>
|
|
53
|
+
<i
|
|
54
|
+
class="text-success"
|
|
55
|
+
c8y-icon="check-circle"
|
|
56
|
+
ng-show="user.enabled"
|
|
57
|
+
></i>
|
|
58
|
+
<span
|
|
59
|
+
title="{{ 'Enabled' | translate }}"
|
|
60
|
+
ng-show="user.enabled"
|
|
61
|
+
>
|
|
45
62
|
{{ 'Enabled' | translate }}
|
|
46
63
|
</span>
|
|
47
|
-
<span
|
|
64
|
+
<span
|
|
65
|
+
title="{{ 'Disabled' | translate }}"
|
|
66
|
+
ng-hide="user.enabled"
|
|
67
|
+
>
|
|
48
68
|
{{ 'Disabled' | translate }}
|
|
49
69
|
</span>
|
|
50
70
|
</button>
|
|
@@ -63,16 +83,19 @@
|
|
|
63
83
|
<label>{{ 'Login alias' | translate }}</label>
|
|
64
84
|
<input
|
|
65
85
|
class="form-control"
|
|
86
|
+
placeholder="{{ 'e.g. joe.doe`LOCALIZE`' | translate }}"
|
|
66
87
|
name="displayName"
|
|
67
88
|
ng-model="user.displayName"
|
|
68
89
|
ng-pattern="loginAliasPattern"
|
|
69
90
|
ng-maxlength="254"
|
|
70
91
|
ng-trim="false"
|
|
71
|
-
placeholder="{{ 'e.g. joe.doe`LOCALIZE`' | translate }}"
|
|
72
92
|
ng-disabled="disabledEdit"
|
|
73
93
|
c8y-autocomplete="off"
|
|
74
94
|
/>
|
|
75
|
-
<div
|
|
95
|
+
<div
|
|
96
|
+
class="c8y-messages"
|
|
97
|
+
ng-if="invalid('displayName')"
|
|
98
|
+
>
|
|
76
99
|
<small class="form-control-feedback-message">
|
|
77
100
|
{{ getErrorFeedback('displayName') | translate }}
|
|
78
101
|
</small>
|
|
@@ -80,14 +103,18 @@
|
|
|
80
103
|
</div>
|
|
81
104
|
</div>
|
|
82
105
|
|
|
83
|
-
<div
|
|
106
|
+
<div
|
|
107
|
+
class="form-group"
|
|
108
|
+
ng-class="{ 'has-error': invalid('email') }"
|
|
109
|
+
ng-hide="hideEmail"
|
|
110
|
+
>
|
|
84
111
|
<label>
|
|
85
112
|
{{ 'Email' | translate }}
|
|
86
113
|
<span ng-show="user.sendPasswordResetEmail"></span>
|
|
87
114
|
<button
|
|
88
115
|
class="btn-help btn-help--sm"
|
|
89
|
-
type="button"
|
|
90
116
|
aria-label="{{ 'Help' | translate }}"
|
|
117
|
+
type="button"
|
|
91
118
|
uib-popover="{{
|
|
92
119
|
'A user managed via your authorization server cannot change the email of the user.'
|
|
93
120
|
| translate
|
|
@@ -101,17 +128,20 @@
|
|
|
101
128
|
</label>
|
|
102
129
|
|
|
103
130
|
<input
|
|
104
|
-
type="email"
|
|
105
|
-
name="email"
|
|
106
131
|
class="form-control"
|
|
132
|
+
placeholder="{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}"
|
|
133
|
+
name="email"
|
|
134
|
+
type="email"
|
|
107
135
|
ng-model="user.email"
|
|
108
136
|
ng-maxlength="254"
|
|
109
137
|
c8y-autocomplete="off"
|
|
110
138
|
ng-disabled="disabledEdit || !userCanChangePasswordAndEmail"
|
|
111
|
-
placeholder="{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}"
|
|
112
139
|
ng-required="true"
|
|
113
140
|
/>
|
|
114
|
-
<div
|
|
141
|
+
<div
|
|
142
|
+
class="c8y-messages"
|
|
143
|
+
ng-show="invalid('email')"
|
|
144
|
+
>
|
|
115
145
|
<small class="form-control-feedback-message">
|
|
116
146
|
{{ getErrorFeedback('email') | translate }}
|
|
117
147
|
</small>
|
|
@@ -127,15 +157,18 @@
|
|
|
127
157
|
<label id="FirstName">{{ 'First name' | translate }}</label>
|
|
128
158
|
<input
|
|
129
159
|
class="form-control"
|
|
130
|
-
name="firstName"
|
|
131
160
|
aria-labelledby="FirstName"
|
|
132
161
|
placeholder="{{ 'e.g. Joe`LOCALIZE`' | translate }}"
|
|
162
|
+
name="firstName"
|
|
133
163
|
ng-model="user.firstName"
|
|
134
164
|
ng-maxlength="50"
|
|
135
165
|
c8y-autocomplete="off"
|
|
136
166
|
ng-disabled="disabledEdit"
|
|
137
167
|
/>
|
|
138
|
-
<div
|
|
168
|
+
<div
|
|
169
|
+
class="c8y-messages"
|
|
170
|
+
ng-if="invalid('firstName')"
|
|
171
|
+
>
|
|
139
172
|
<small class="form-control-feedback-message">
|
|
140
173
|
{{ getErrorFeedback('firstName') | translate }}
|
|
141
174
|
</small>
|
|
@@ -150,15 +183,18 @@
|
|
|
150
183
|
<label id="LastName">{{ 'Last name' | translate }}</label>
|
|
151
184
|
<input
|
|
152
185
|
class="form-control"
|
|
153
|
-
name="lastName"
|
|
154
186
|
aria-labelledby="LastName"
|
|
155
187
|
placeholder="{{ 'e.g. Doe`LOCALIZE`' | translate }}"
|
|
188
|
+
name="lastName"
|
|
156
189
|
ng-model="user.lastName"
|
|
157
190
|
ng-maxlength="50"
|
|
158
191
|
c8y-autocomplete="off"
|
|
159
192
|
ng-disabled="disabledEdit"
|
|
160
193
|
/>
|
|
161
|
-
<div
|
|
194
|
+
<div
|
|
195
|
+
class="c8y-messages"
|
|
196
|
+
ng-if="invalid('lastName')"
|
|
197
|
+
>
|
|
162
198
|
<small class="form-control-feedback-message">
|
|
163
199
|
{{ getErrorFeedback('lastName') | translate }}
|
|
164
200
|
</small>
|
|
@@ -166,13 +202,17 @@
|
|
|
166
202
|
</div>
|
|
167
203
|
</div>
|
|
168
204
|
|
|
169
|
-
<div
|
|
205
|
+
<div
|
|
206
|
+
class="form-group"
|
|
207
|
+
ng-hide="hideTelephone"
|
|
208
|
+
>
|
|
170
209
|
<label>
|
|
171
210
|
{{ 'Telephone' | translate }}
|
|
172
211
|
<span ng-if="user.twoFactorAuthenticationEnabled"></span>
|
|
173
212
|
</label>
|
|
174
213
|
<input
|
|
175
214
|
class="form-control"
|
|
215
|
+
placeholder="{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}"
|
|
176
216
|
name="phone"
|
|
177
217
|
ng-model="user.phone"
|
|
178
218
|
c8y-autocomplete="off"
|
|
@@ -180,7 +220,6 @@
|
|
|
180
220
|
maxlength="254"
|
|
181
221
|
ng-required="(user.twoFactorAuthenticationEnabled || topLevelTfaEnforced) && vm.tfaStrategy === 'SMS'"
|
|
182
222
|
ng-disabled="disabledEdit"
|
|
183
|
-
placeholder="{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}"
|
|
184
223
|
c8y-phone-number
|
|
185
224
|
/>
|
|
186
225
|
<div class="c8y-messages">
|
|
@@ -191,13 +230,16 @@
|
|
|
191
230
|
</div>
|
|
192
231
|
|
|
193
232
|
<div class="row">
|
|
194
|
-
<div
|
|
233
|
+
<div
|
|
234
|
+
class="form-group col-sm-6"
|
|
235
|
+
ng-if="!hideOwner"
|
|
236
|
+
>
|
|
195
237
|
<label>{{ 'Owner' | translate }}</label>
|
|
196
238
|
<input
|
|
197
239
|
class="form-control"
|
|
240
|
+
disabled
|
|
198
241
|
ng-show="disabledEdit || ownerEditDisabled"
|
|
199
242
|
ng-value="user.owner"
|
|
200
|
-
disabled
|
|
201
243
|
/>
|
|
202
244
|
|
|
203
245
|
<div
|
|
@@ -210,26 +252,42 @@
|
|
|
210
252
|
>
|
|
211
253
|
<button
|
|
212
254
|
class="btn dropdown-toggle fit-w"
|
|
213
|
-
type="button"
|
|
214
255
|
title="{{ 'Select owner' | translate }}…"
|
|
256
|
+
aria-haspopup="true"
|
|
257
|
+
type="button"
|
|
215
258
|
data-toggle="dropdown"
|
|
216
259
|
uib-dropdown-toggle
|
|
217
|
-
aria-haspopup="true"
|
|
218
260
|
data-cy="c8y-edit-user--select-owner"
|
|
219
261
|
>
|
|
220
262
|
<span class="d-flex">
|
|
221
|
-
<span
|
|
263
|
+
<span
|
|
264
|
+
class="text-truncate"
|
|
265
|
+
title="{{ user.owner }}"
|
|
266
|
+
ng-if="user.owner"
|
|
267
|
+
>
|
|
222
268
|
{{ user.owner }}
|
|
223
269
|
</span>
|
|
224
|
-
<span
|
|
270
|
+
<span
|
|
271
|
+
class="text-muted"
|
|
272
|
+
title="{{ 'Select owner' | translate }}…"
|
|
273
|
+
ng-if="!user.owner"
|
|
274
|
+
>
|
|
225
275
|
{{ 'Select owner' | translate }}…
|
|
226
276
|
</span>
|
|
227
277
|
<span class="caret m-l-auto"></span>
|
|
228
278
|
</span>
|
|
229
279
|
</button>
|
|
230
280
|
|
|
231
|
-
<div
|
|
232
|
-
|
|
281
|
+
<div
|
|
282
|
+
class="dropdown-menu"
|
|
283
|
+
role="menu"
|
|
284
|
+
ng-click="$event.stopPropagation();"
|
|
285
|
+
uib-dropdown-menu
|
|
286
|
+
>
|
|
287
|
+
<span
|
|
288
|
+
ng-if="vm.isParentDropDownOpen"
|
|
289
|
+
ng-init="vm.currentOwner=user.owner"
|
|
290
|
+
></span>
|
|
233
291
|
<div class="p-t-16 bg-level-0">
|
|
234
292
|
<c8y-ui-user-picker
|
|
235
293
|
ng-if="vm.ownerDropDownInitialized"
|
|
@@ -242,8 +300,8 @@
|
|
|
242
300
|
|
|
243
301
|
<button
|
|
244
302
|
class="btn btn-primary btn-block"
|
|
245
|
-
type="button"
|
|
246
303
|
title="{{ 'Done' | translate }}"
|
|
304
|
+
type="button"
|
|
247
305
|
ng-click="setOwner(vm.currentOwner)"
|
|
248
306
|
>
|
|
249
307
|
{{ 'Done' | translate }}
|
|
@@ -254,14 +312,26 @@
|
|
|
254
312
|
</div>
|
|
255
313
|
</div>
|
|
256
314
|
|
|
257
|
-
<div
|
|
315
|
+
<div
|
|
316
|
+
class="form-group col-sm-6"
|
|
317
|
+
ng-hide="hideDelegate"
|
|
318
|
+
>
|
|
258
319
|
<label>{{ 'Delegated by' | translate }}</label>
|
|
259
320
|
<div class="form-control-static">
|
|
260
321
|
<ng-form name="delegationHiddenForm"></ng-form>
|
|
261
322
|
|
|
262
|
-
<div
|
|
263
|
-
|
|
264
|
-
|
|
323
|
+
<div
|
|
324
|
+
class="input-group"
|
|
325
|
+
ng-show="user.delegatedBy"
|
|
326
|
+
>
|
|
327
|
+
<a
|
|
328
|
+
class="form-control d-flex a-i-center"
|
|
329
|
+
ng-href="#/users/{{ user.delegatedBy }}"
|
|
330
|
+
>
|
|
331
|
+
<i
|
|
332
|
+
class="m-r-4"
|
|
333
|
+
c8y-icon="c8y-user"
|
|
334
|
+
></i>
|
|
265
335
|
{{ user.delegatedBy }}
|
|
266
336
|
</a>
|
|
267
337
|
<div class="input-group-btn">
|
|
@@ -277,20 +347,31 @@
|
|
|
277
347
|
</button>
|
|
278
348
|
</div>
|
|
279
349
|
</div>
|
|
280
|
-
<div
|
|
281
|
-
|
|
350
|
+
<div
|
|
351
|
+
class="input-group"
|
|
352
|
+
ng-hide="user.delegatedBy"
|
|
353
|
+
>
|
|
354
|
+
<em
|
|
355
|
+
class="form-control d-flex a-i-center"
|
|
356
|
+
translate
|
|
357
|
+
>
|
|
358
|
+
No delegation
|
|
359
|
+
</em>
|
|
282
360
|
<div class="input-group-btn">
|
|
283
361
|
<button
|
|
284
362
|
class="btn btn-default"
|
|
285
|
-
type="button"
|
|
286
363
|
aria-label="{{ 'Delegate' | translate }}"
|
|
287
364
|
uib-tooltip="{{ 'Delegate' | translate }}"
|
|
288
365
|
tooltip-popup-delay="500"
|
|
289
366
|
tooltip-append-to-body="true"
|
|
367
|
+
type="button"
|
|
290
368
|
ng-click="delegateTo()"
|
|
291
369
|
ng-disabled="disabledEdit"
|
|
292
370
|
>
|
|
293
|
-
<i
|
|
371
|
+
<i
|
|
372
|
+
class="text-16"
|
|
373
|
+
c8y-icon="batch-assign"
|
|
374
|
+
></i>
|
|
294
375
|
</button>
|
|
295
376
|
</div>
|
|
296
377
|
</div>
|
|
@@ -305,15 +386,19 @@
|
|
|
305
386
|
>
|
|
306
387
|
<label id="key">{{ humanize(key) }}</label>
|
|
307
388
|
<input
|
|
308
|
-
aria-labelledby="key"
|
|
309
389
|
class="form-control"
|
|
310
|
-
|
|
390
|
+
aria-labelledby="key"
|
|
311
391
|
disabled
|
|
392
|
+
ng-model="val"
|
|
312
393
|
c8y-autocomplete="off"
|
|
313
394
|
/>
|
|
314
395
|
</div>
|
|
315
396
|
|
|
316
|
-
<div
|
|
397
|
+
<div
|
|
398
|
+
class="form-group p-relative"
|
|
399
|
+
style="z-index: 1000"
|
|
400
|
+
ng-if="!hideLanguage"
|
|
401
|
+
>
|
|
317
402
|
<label>{{ 'Language' | translate }}</label>
|
|
318
403
|
<ui-select ng-model="user.language">
|
|
319
404
|
<ui-select-match placeholder="{{ 'Select language' | translate }}">
|
|
@@ -330,13 +415,16 @@
|
|
|
330
415
|
user="user"
|
|
331
416
|
></c8y-measurement-unit-preference>
|
|
332
417
|
|
|
333
|
-
<div
|
|
418
|
+
<div
|
|
419
|
+
class="form-group"
|
|
420
|
+
ng-hide="!tfaAvailable && hideTfaOption && hidePasswordReset"
|
|
421
|
+
>
|
|
334
422
|
<label>{{ 'Login options' | translate }}</label>
|
|
335
423
|
<div ng-if="tfaAvailable && !hideTfaOption">
|
|
336
424
|
<label
|
|
337
|
-
title="{{ 'Two-factor authentication' | translate }}"
|
|
338
425
|
class="c8y-checkbox"
|
|
339
426
|
ng-class="{ disabled: vm.twoFactorAuthenticationCheckboxDisabled() }"
|
|
427
|
+
title="{{ 'Two-factor authentication' | translate }}"
|
|
340
428
|
>
|
|
341
429
|
<input
|
|
342
430
|
type="checkbox"
|
|
@@ -348,13 +436,16 @@
|
|
|
348
436
|
<span>
|
|
349
437
|
{{ 'Two-factor authentication' | translate }}
|
|
350
438
|
</span>
|
|
351
|
-
<small
|
|
439
|
+
<small
|
|
440
|
+
class="text-muted"
|
|
441
|
+
title="{{ vm.tfaStrategy || 'SMS' }}"
|
|
442
|
+
>
|
|
352
443
|
({{ vm.tfaStrategy || 'SMS' }})
|
|
353
444
|
</small>
|
|
354
445
|
<button
|
|
355
446
|
class="btn-help btn-help--sm"
|
|
356
|
-
type="button"
|
|
357
447
|
aria-label="{{ 'Help' | translate }}"
|
|
448
|
+
type="button"
|
|
358
449
|
uib-popover="{{
|
|
359
450
|
'When enabled, a verification code sent by SMS is required to complete authentication'
|
|
360
451
|
| translate
|
|
@@ -367,8 +458,8 @@
|
|
|
367
458
|
></button>
|
|
368
459
|
<button
|
|
369
460
|
class="btn-help btn-help--sm"
|
|
370
|
-
type="button"
|
|
371
461
|
aria-label="{{ 'Help' | translate }}"
|
|
462
|
+
type="button"
|
|
372
463
|
uib-popover="{{
|
|
373
464
|
'Authentication by SMS - cannot be changed for your own user.' | translate
|
|
374
465
|
}}"
|
|
@@ -380,8 +471,8 @@
|
|
|
380
471
|
></button>
|
|
381
472
|
<button
|
|
382
473
|
class="btn-help btn-help--sm"
|
|
383
|
-
type="button"
|
|
384
474
|
aria-label="{{ 'Help' | translate }}"
|
|
475
|
+
type="button"
|
|
385
476
|
uib-popover="{{
|
|
386
477
|
'TOTP secret activated. It can be revoked using the button below.' | translate
|
|
387
478
|
}}"
|
|
@@ -393,8 +484,8 @@
|
|
|
393
484
|
></button>
|
|
394
485
|
<button
|
|
395
486
|
class="btn-help btn-help--sm"
|
|
396
|
-
type="button"
|
|
397
487
|
aria-label="{{ 'Help' | translate }}"
|
|
488
|
+
type="button"
|
|
398
489
|
uib-popover="{{
|
|
399
490
|
'TOTP secret is not activated. It can only be activated from the user menu.' | translate
|
|
400
491
|
}}"
|
|
@@ -406,8 +497,8 @@
|
|
|
406
497
|
></button>
|
|
407
498
|
<button
|
|
408
499
|
class="btn-clean"
|
|
409
|
-
type="button"
|
|
410
500
|
aria-label="{{ smsWarningPopover | translate }}"
|
|
501
|
+
type="button"
|
|
411
502
|
uib-popover-html="smsWarningPopover | translate"
|
|
412
503
|
popover-placement="right"
|
|
413
504
|
popover-trigger="'focus'"
|
|
@@ -415,15 +506,18 @@
|
|
|
415
506
|
ng-show="vm.messagingWarningVisible()"
|
|
416
507
|
ng-click="$event.preventDefault()"
|
|
417
508
|
>
|
|
418
|
-
<i
|
|
509
|
+
<i
|
|
510
|
+
class="text-danger"
|
|
511
|
+
c8y-icon="exclamation-triangle"
|
|
512
|
+
></i>
|
|
419
513
|
</button>
|
|
420
514
|
</label>
|
|
421
515
|
</div>
|
|
422
516
|
<div ng-show="vm.tfaStrategy === 'TOTP' && tfaAvailable">
|
|
423
517
|
<label
|
|
424
|
-
title="{{ 'Enforce TOTP setup for the user' | translate }}"
|
|
425
518
|
class="c8y-checkbox"
|
|
426
519
|
ng-class="{ disabled: vm.enforceTfaCheckboxDisbaled() }"
|
|
520
|
+
title="{{ 'Enforce TOTP setup for the user' | translate }}"
|
|
427
521
|
>
|
|
428
522
|
<input
|
|
429
523
|
type="checkbox"
|
|
@@ -435,8 +529,8 @@
|
|
|
435
529
|
<span>{{ 'Enforce TOTP setup for the user' | translate }}</span>
|
|
436
530
|
<button
|
|
437
531
|
class="btn-help btn-help--sm"
|
|
438
|
-
type="button"
|
|
439
532
|
aria-label="{{ 'Help' | translate }}"
|
|
533
|
+
type="button"
|
|
440
534
|
uib-popover="{{ 'TOTP cannot be enforced for your own user.' | translate }}"
|
|
441
535
|
popover-trigger="'focus'"
|
|
442
536
|
popover-placement="right"
|
|
@@ -446,8 +540,8 @@
|
|
|
446
540
|
></button>
|
|
447
541
|
<button
|
|
448
542
|
class="btn-help btn-help--sm"
|
|
449
|
-
type="button"
|
|
450
543
|
aria-label="{{ 'Help' | translate }}"
|
|
544
|
+
type="button"
|
|
451
545
|
uib-popover="{{
|
|
452
546
|
'TOTP is enforced for the user based on the platform-level settings.' | translate
|
|
453
547
|
}}"
|
|
@@ -462,9 +556,9 @@
|
|
|
462
556
|
|
|
463
557
|
<div ng-hide="hidePasswordReset || disabledEdit">
|
|
464
558
|
<label
|
|
465
|
-
title="{{ 'User must reset password on next login' | translate }}"
|
|
466
559
|
class="c8y-checkbox"
|
|
467
560
|
ng-class="{ disabled: !notCurrentUser || user.sendPasswordResetEmail }"
|
|
561
|
+
title="{{ 'User must reset password on next login' | translate }}"
|
|
468
562
|
>
|
|
469
563
|
<input
|
|
470
564
|
type="checkbox"
|
|
@@ -478,9 +572,9 @@
|
|
|
478
572
|
|
|
479
573
|
<div ng-hide="hidePasswordReset || disabledEdit || user.id">
|
|
480
574
|
<label
|
|
481
|
-
title="{{ 'Send password reset link as email' | translate }}"
|
|
482
575
|
class="c8y-checkbox"
|
|
483
576
|
ng-class="{ disabled: user.id || user.shouldResetPassword }"
|
|
577
|
+
title="{{ 'Send password reset link as email' | translate }}"
|
|
484
578
|
>
|
|
485
579
|
<input
|
|
486
580
|
type="checkbox"
|
|
@@ -496,8 +590,8 @@
|
|
|
496
590
|
<div class="form-group">
|
|
497
591
|
<button
|
|
498
592
|
class="btn btn-default"
|
|
499
|
-
type="button"
|
|
500
593
|
name="changePassword"
|
|
594
|
+
type="button"
|
|
501
595
|
ng-show="
|
|
502
596
|
!disabledEdit &&
|
|
503
597
|
changePasswordBtn &&
|
|
@@ -507,10 +601,16 @@
|
|
|
507
601
|
"
|
|
508
602
|
ng-click="resetPasswords(user)"
|
|
509
603
|
>
|
|
510
|
-
<span
|
|
604
|
+
<span
|
|
605
|
+
title="{{ 'Change password' | translate }}"
|
|
606
|
+
ng-show="!password.showPassword"
|
|
607
|
+
>
|
|
511
608
|
{{ 'Change password' | translate }}
|
|
512
609
|
</span>
|
|
513
|
-
<span
|
|
610
|
+
<span
|
|
611
|
+
title="{{ 'Cancel password change' | translate }}"
|
|
612
|
+
ng-show="password.showPassword"
|
|
613
|
+
>
|
|
514
614
|
{{ 'Cancel password change' | translate }}
|
|
515
615
|
</span>
|
|
516
616
|
</button>
|
|
@@ -532,19 +632,24 @@
|
|
|
532
632
|
"
|
|
533
633
|
>
|
|
534
634
|
<div class="col-7">
|
|
535
|
-
<div
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
635
|
+
<div
|
|
636
|
+
class="form-group"
|
|
637
|
+
ng-class="{ 'has-error': invalid('password') }"
|
|
638
|
+
>
|
|
639
|
+
<label for="password">{{ 'Password' | translate }}</label>
|
|
640
|
+
<c8y-password-input
|
|
539
641
|
name="password"
|
|
540
|
-
class="form-control"
|
|
541
|
-
ng-model="user.password"
|
|
542
642
|
required
|
|
643
|
+
[id]="'password'"
|
|
644
|
+
ng-model="user.password"
|
|
543
645
|
ng-pattern="passwordRegex"
|
|
544
646
|
ng-change="changePasswordConfirm()"
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
<div
|
|
647
|
+
[autocomplete]="'new-password'"
|
|
648
|
+
></c8y-password-input>
|
|
649
|
+
<div
|
|
650
|
+
class="c8y-messages"
|
|
651
|
+
ng-if="invalid('password')"
|
|
652
|
+
>
|
|
548
653
|
<div class="form-control-feedback-message">
|
|
549
654
|
{{ getErrorFeedback('password') | translate }}
|
|
550
655
|
</div>
|
|
@@ -552,20 +657,22 @@
|
|
|
552
657
|
</div>
|
|
553
658
|
<div
|
|
554
659
|
class="form-group"
|
|
555
|
-
ng-if="user.password"
|
|
556
660
|
ng-class="{ 'has-error': isInvalidConfirmPassword() }"
|
|
661
|
+
ng-if="user.password"
|
|
557
662
|
>
|
|
558
|
-
<label>{{ 'Confirm password' | translate }}</label>
|
|
559
|
-
<input
|
|
560
|
-
type="password"
|
|
663
|
+
<label for="confirmPassword">{{ 'Confirm password' | translate }}</label>
|
|
664
|
+
<c8y-password-input
|
|
561
665
|
name="confirmPassword"
|
|
562
|
-
class="form-control"
|
|
563
|
-
ng-model="$parent.confirmPassword"
|
|
564
666
|
required
|
|
667
|
+
[id]="'confirmPassword'"
|
|
668
|
+
ng-model="$parent.confirmPassword"
|
|
565
669
|
ng-change="changePasswordConfirm()"
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
<div
|
|
670
|
+
[autocomplete]="'new-password'"
|
|
671
|
+
></c8y-password-input>
|
|
672
|
+
<div
|
|
673
|
+
class="c8y-messages"
|
|
674
|
+
ng-if="isInvalidConfirmPassword()"
|
|
675
|
+
>
|
|
569
676
|
<div class="form-control-feedback-message">
|
|
570
677
|
{{ getErrorFeedback('confirmPassword') | translate }}
|
|
571
678
|
</div>
|
|
@@ -580,7 +687,10 @@
|
|
|
580
687
|
user="user"
|
|
581
688
|
password="$parent.forms.userForm.password.$viewValue"
|
|
582
689
|
></div>
|
|
583
|
-
<div
|
|
690
|
+
<div
|
|
691
|
+
class="m-t-32"
|
|
692
|
+
ng-show="passwordStrengthEnforced"
|
|
693
|
+
>
|
|
584
694
|
<c8y-password-strength-checklist
|
|
585
695
|
password="$parent.forms.userForm.password.$viewValue"
|
|
586
696
|
></c8y-password-strength-checklist>
|