59 lines
2.8 KiB
HTML
59 lines
2.8 KiB
HTML
<div class="flex column fill">
|
|
<div class="container">
|
|
<mat-card *ngIf="externals && externals.length > 0" class="box">
|
|
<mat-card-content>
|
|
<h2>{{'login.external' | i18n}}</h2>
|
|
<mat-error *ngIf="externalLoginInvalid">
|
|
{{'login.external.invalid' | i18n}}
|
|
</mat-error>
|
|
</mat-card-content>
|
|
<mat-card-actions class="flex wrap">
|
|
<a class="external-login" (click)="externalLogin(client)" *ngFor="let client of externals"
|
|
mat-raised-button color="accent">{{'login.external.client' | i18n:client.id}}</a>
|
|
<mat-slide-toggle [(ngModel)]="autologin">
|
|
{{'login.autologin' | i18n}}
|
|
</mat-slide-toggle>
|
|
</mat-card-actions>
|
|
</mat-card>
|
|
|
|
<form action="{{apiUrl}}/login" method="POST" #loginForm class="box">
|
|
<mat-card *ngIf="internalLogin || externals && externals.length < 1">
|
|
<mat-card-content>
|
|
<h2>{{'login.internal' | i18n}}</h2>
|
|
<mat-error *ngIf="loginInvalid">
|
|
{{'login.invalid' | i18n}}
|
|
</mat-error>
|
|
<mat-form-field>
|
|
<mat-label>{{'username' | i18n}}</mat-label>
|
|
<input id="username" name="username" matInput required matAutofocus>
|
|
<mat-error>
|
|
{{'username.missing' | i18n}}
|
|
</mat-error>
|
|
</mat-form-field>
|
|
<mat-form-field>
|
|
<mat-label>{{'password' | i18n}}</mat-label>
|
|
<input id="password" name="password" matInput type="password" required>
|
|
<mat-error>
|
|
{{'password.invalid.hint' | i18n}}
|
|
</mat-error>
|
|
</mat-form-field>
|
|
<mat-slide-toggle id="remember-me" name="remember-me">
|
|
{{'login.keepSession' | i18n}}
|
|
</mat-slide-toggle>
|
|
</mat-card-content>
|
|
<mat-card-actions>
|
|
<button type="submit" (click)="loginForm.submit()" mat-raised-button color="primary"
|
|
[disabled]="loginForm.invalid">{{'login' |
|
|
i18n}}<mat-icon style="font-size: 1em;">open_in_new
|
|
</mat-icon></button>
|
|
</mat-card-actions>
|
|
</mat-card>
|
|
</form>
|
|
</div>
|
|
<span class="spacer"></span>
|
|
<div class="container" *ngIf="!internalLogin">
|
|
<small>
|
|
<a href="javascript:" (click)="internalLogin = true;">{{'login.local' | i18n}}</a>
|
|
</small>
|
|
</div>
|
|
</div> |