Something went wrong on our end
-
Hamza HRAMCHI authoredHamza HRAMCHI authored
user.component.html 6.74 KiB
<ion-header [translucent]="true">
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-menu-button menu="left-menu"></ion-menu-button>
<ion-back-button></ion-back-button>
</ion-buttons>
<ion-title>{{title}}</ion-title>
<ion-avatar slot="end">
<img [src]="user.picture">
</ion-avatar>
</ion-toolbar>
</ion-header>
<ion-header>
<ion-toolbar>
<ion-segment [value]="currentTool" (ionChange)="initTab($event.detail.value)">
<ion-segment-button value="info">
<ion-label>{{'lang.informations' | translate}}</ion-label>
<ion-icon name="information-circle"></ion-icon>
</ion-segment-button>
<ion-segment-button value="groups">
<ion-label>{{'lang.manage_groups' | translate}}</ion-label>
<ion-icon name="people-sharp"></ion-icon>
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
<ng-container *ngIf="currentTool === 'info'">
<form style="display: contents;" id="adminForm" (ngSubmit)="onSubmit()" #adminForm="ngForm">
<ion-content>
<ion-item>
<ion-label color="secondary" position="floating">{{'lang.login' | translate}} *</ion-label>
<ion-input name="login" [maxlength]="128" [readonly]="!creationMode" [(ngModel)]="user.login" required pattern="^[\w.@-]*$">
</ion-input>
</ion-item>
<ion-item>
<ion-label color="secondary" position="floating">{{'lang.firstname' | translate}} *</ion-label>
<ion-input name="firstname" [maxlength]="128" [(ngModel)]="user.firstname" required></ion-input>
</ion-item>
<ion-item>
<ion-label color="secondary" position="floating">{{'lang.lastname' | translate}} *</ion-label>
<ion-input name="lastname" [maxlength]="128" [(ngModel)]="user.lastname" required></ion-input>
</ion-item>
<ion-item>
<ion-label color="secondary" position="floating">{{'lang.email' | translate}} *</ion-label>
<ion-input type="email" name="email" [maxlength]="128" [(ngModel)]="user.email" required
pattern="(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"></ion-input>
</ion-item>
<ion-item>
<ion-label>{{'lang.restUser' | translate}}</ion-label>
<ion-toggle slot="start" color="primary" [disabled]="!creationMode" name="isRest" [(ngModel)]="user.isRest"
[checked]="user.isRest" (ionChange)="getPassRules($event)"></ion-toggle>
</ion-item>
<ion-list>
<ion-list-header>
<ion-label color="secondary">{{'lang.signatureModes' | translate}}</ion-label>
</ion-list-header>
<ng-container *ngFor="let signMode of authService.signatureRoles">
<ion-item *ngIf="signMode.id !=='visa'">
<ion-label [style.color]="signMode.color">{{'lang.' + signMode.id | translate}}</ion-label>
<ion-checkbox slot="start" [checked]="user.signatureModes.indexOf(signMode.id) > -1" (ionChange)="toggleSignMode(signMode, $event.detail.checked)" [disabled]="signMode.id === 'stamp'"></ion-checkbox>
</ion-item>
</ng-container>
</ion-list>
<ion-item style="align-items: center;" *ngIf="user.isRest">
<ion-button slot="end" fill="clear" color="primary" (click)="hideNewPassword = !hideNewPassword">
<ion-icon color="primary" [name]="hideNewPassword ? 'eye-outline' : 'eye-off-outline'">
</ion-icon>
</ion-button>
<ion-label color="secondary" position="floating">{{'lang.newPassword' | translate}}</ion-label>
<ion-input [type]="hideNewPassword ? 'password' : 'text'" name="newPasswordRest"
[(ngModel)]="passwordRest.newPassword" (ionChange)="checkPasswordValidity(passwordRest.newPassword)">
</ion-input>
<ion-note color="danger" *ngIf="this.handlePassword.error && passwordRest.newPassword.length > 0"> {{ this.handlePassword.errorMsg | translate}}</ion-note>
</ion-item>
<ion-item style="align-items: center;" *ngIf="user.isRest">
<ion-button slot="end" fill="clear" color="primary"
(click)="hideNewPasswordConfirm = !hideNewPasswordConfirm">
<ion-icon color="primary" [name]="hideNewPasswordConfirm ? 'eye-outline' : 'eye-off-outline'">
</ion-icon>
</ion-button>
<ion-label color="secondary" position="floating">{{'lang.passwordConfirmation' | translate}}</ion-label>
<ion-input [type]="hideNewPasswordConfirm ? 'password' : 'text'" name="passwordConfirmation"
[(ngModel)]="passwordRest.passwordConfirmation"></ion-input>
<ion-note color="danger" *ngIf="passwordRest.passwordConfirmation !== passwordRest.newPassword && passwordRest.passwordConfirmation.length > 0">
{{'lang.passwordNotMatch' | translate}}</ion-note>
<ion-note color="success"
*ngIf="passwordRest.passwordConfirmation === passwordRest.newPassword && passwordRest.newPassword.length > 0 && passwordRest.passwordConfirmation.length> 0 && !this.handlePassword.error">
{{'lang.samePassword' | translate}}</ion-note>
</ion-item>
<ion-item text-center lines="none" style="position: sticky;bottom:0px;z-index:1;">
<div style="display: flex;align-items: center;justify-content: center;width: 100%;background: white;">
<ion-button type="submit" shape="round" size="large" fill="outline" color="primary"
[disabled]="!adminForm.form.valid || !canValidate()">
<ion-label style="font-size: 13px;">{{'lang.validate' | translate}}</ion-label>
</ion-button>
</div>
</ion-item>
</ion-content>
</form>
</ng-container>
<ng-container *ngIf="currentTool === 'groups'">
<ion-content>
<ion-list *ngIf="user.groups.length > 0">
<ion-item *ngFor="let group of user.groups">
<ion-label>{{group.label}}</ion-label>
</ion-item>
</ion-list>
<ion-list class="no-result" *ngIf="user.groups.length === 0">
<ion-item lines="none">
<ion-label class="no-result-label" color="medium">{{'lang.noAssociatedGroup' | translate}}</ion-label>
</ion-item>
</ion-list>
</ion-content>
</ng-container>