]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/core/auth/login/login.component.html
8565c3615c6bab9dc23ee1642c78214eeb258afe
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / core / auth / login / login.component.html
1 <div class="container"
2 *ngIf="isLoginActive">
3 <form name="loginForm"
4 (ngSubmit)="login()"
5 #loginForm="ngForm"
6 novalidate>
7
8 <!-- Username -->
9 <div class="form-group has-feedback d-flex flex-column py-3">
10 <label class="placeholder pl-4"
11 for="username"
12 i18n>Username</label>
13 <input id="username"
14 name="username"
15 [(ngModel)]="model.username"
16 #username="ngModel"
17 type="text"
18 [attr.aria-invalid]="username.invalid"
19 aria-labelledby="username"
20 class="form-control pl-4"
21 required
22 autofocus>
23 <div class="invalid-feedback pl-4"
24 *ngIf="(loginForm.submitted || username.dirty) && username.invalid"
25 i18n>Username is required</div>
26 </div>
27
28 <!-- Password -->
29 <div class="form-group has-feedback"
30 id="password-div">
31 <div class="input-group d-flex flex-nowrap">
32 <div class="d-flex flex-column flex-grow-1 py-3">
33 <label class="placeholder pl-4"
34 for="password"
35 i18n>Password</label>
36 <input id="password"
37 name="password"
38 [(ngModel)]="model.password"
39 #password="ngModel"
40 type="password"
41 [attr.aria-invalid]="password.invalid"
42 aria-labelledby="password"
43 class="form-control pl-4"
44 required>
45 <div class="invalid-feedback pl-4"
46 *ngIf="(loginForm.submitted || password.dirty) && password.invalid"
47 i18n>Password is required</div>
48 </div>
49 <span class="form-group-append">
50 <button type="button"
51 class="btn btn-outline-light btn-password h-100 px-4"
52 cdPasswordButton="password">
53 </button>
54 </span>
55 </div>
56 </div>
57
58 <input type="submit"
59 class="btn btn-accent px-5 py-2"
60 [disabled]="loginForm.invalid"
61 value="Log in"
62 i18n-value>
63 </form>
64 </div>