{{ isEdit ? 'Edit User' : 'Create User' }}

{{ isEdit ? 'Update the details for this user.' : 'Add a new operator or self-service user.' }}
@if (loadingTemplate || loadingUser) {
Loading…
} @else {
Identity
@if (form.get('username')?.touched && form.get('username')?.errors?.['required']) {
Login name is required.
}
@if (form.get('email')?.touched && form.get('email')?.errors) {
A valid email is required.
}
@if (form.get('firstname')?.touched && form.get('firstname')?.errors) {
First name must start with a letter.
}
@if (form.get('lastname')?.touched && form.get('lastname')?.errors) {
Last name must start with a letter.
}
+91
@if (form.get('mobileNo')?.touched && form.get('mobileNo')?.errors) {
Mobile must be 10 digits.
}
@if (!isEdit) {
@if (form.get('otpDeliveryMethod')?.touched && form.get('otpDeliveryMethod')?.errors?.['required']) {
Choose how this user will receive their OTP.
}
}
Office & Staff
@if (form.get('officeId')?.touched && form.get('officeId')?.errors?.['required']) {
Office is required.
}
Roles *
@for (r of roles; track r.id) { }
@if (form.get('roles')?.touched && form.get('roles')?.errors?.['required']) {
Pick at least one role.
}
@if (!isEdit) {
Security
@if (!form.get('sendPasswordToEmail')?.value) {
@if (form.get('password')?.touched && form.get('password')?.invalid) {
Min 8 chars · 1 upper · 1 lower · 1 digit · 1 special.
}
@if (form.get('repeatPassword')?.touched && form.get('repeatPassword')?.invalid) {
Passwords don't match.
}
}
} @else {
Security
To change the password, open the user from the list and use "Change Password".
} @if (serverError) {
{{ serverError }}
}
}