]>
Commit | Line | Data |
---|---|---|
d235f6b0 | 1 | <div class="margin-content"> |
b1d40cff | 2 | <div i18n class="title-page title-page-single"> |
d235f6b0 C |
3 | Login |
4 | </div> | |
192ea60b | 5 | |
bc90883f C |
6 | <div class="alert alert-danger" i18n *ngIf="externalAuthError"> |
7 | Sorry but there was an issue with the external login process. Please <a routerLink="/about">contact an administrator</a>. | |
8 | </div> | |
9 | ||
10 | <ng-container *ngIf="!externalAuthError && !isAuthenticatedWithExternalAuth"> | |
4a8d113b C |
11 | <div *ngIf="error" class="alert alert-danger">{{ error }} |
12 | <span *ngIf="error === 'User email is not verified.'"> <a i18n routerLink="/verify-account/ask-send-email">Request new verification email.</a></span> | |
13 | </div> | |
b1794c53 | 14 | |
40360c17 K |
15 | <div class="wrapper"> |
16 | <div class="login-form-and-externals"> | |
17 | ||
8afade26 | 18 | <form myPluginSelector pluginSelectorId="login-form" role="form" (ngSubmit)="login()" [formGroup]="form"> |
40360c17 K |
19 | <div class="form-group"> |
20 | <div> | |
21 | <label i18n for="username">User</label> | |
22 | <input | |
23 | type="text" id="username" i18n-placeholder placeholder="Username or email address" required tabindex="1" | |
9df52d66 | 24 | formControlName="username" class="form-control" [ngClass]="{ 'input-error': formErrors['username'] }" myAutofocus |
40360c17 K |
25 | > |
26 | </div> | |
27 | ||
28 | <div *ngIf="formErrors.username" class="form-error"> | |
29 | {{ formErrors.username }} | |
30 | </div> | |
7f28f2dd C |
31 | |
32 | <div *ngIf="hasUsernameUppercase()" i18n class="form-warning"> | |
33 | ⚠️ Most email addresses do not include capital letters. | |
34 | </div> | |
ebefc902 | 35 | </div> |
2b084d70 | 36 | |
40360c17 K |
37 | <div class="form-group"> |
38 | <label i18n for="password">Password</label> | |
1916c966 | 39 | <my-input-toggle-hidden formControlName="password" inputId="password" |
f8b530e0 RK |
40 | i18n-placeholder placeholder="Password" |
41 | [ngClass]="{ 'input-error': formErrors['password'] }" | |
23cd3129 | 42 | autocomplete="current-password" [tabindex]="2"></my-input-toggle-hidden> |
40360c17 K |
43 | <div *ngIf="formErrors.password" class="form-error"> |
44 | {{ formErrors.password }} | |
45 | </div> | |
ebefc902 | 46 | </div> |
40360c17 | 47 | |
266947e5 | 48 | <input type="submit" class="peertube-button orange-button" i18n-value value="Login" [disabled]="!form.valid"> |
1916c966 | 49 | |
40360c17 | 50 | <div class="additionnal-links"> |
8406a9e8 C |
51 | <a i18n role="button" class="forgot-password-button" (click)="openForgotPasswordModal()" i18n-title title="Click here to reset your password">I forgot my password</a> |
52 | ||
40360c17 K |
53 | <div *ngIf="signupAllowed" class="signup-link"> |
54 | <span>·</span> | |
55 | <a i18n routerLink="/signup" class="create-an-account">Create an account</a> | |
56 | </div> | |
ebefc902 | 57 | </div> |
ebefc902 | 58 | |
40360c17 K |
59 | <div class="looking-for-account alert alert-info" role="alert"> |
60 | <h6 class="alert-heading" i18n> | |
61 | Logging into an account lets you publish content | |
62 | </h6> | |
63 | ||
64 | <div *ngIf="signupAllowed" i18n> | |
65 | This instance allows registration. However, be careful to check the <a class="terms-anchor" (click)="onTermsClick($event, instanceInformation)" href='#'>Terms</a><a class="terms-link" target="_blank" routerLink="/about/instance" fragment="terms">Terms</a> before creating an account. | |
66 | You may also search for another instance to match your exact needs at: <br /><a class="alert-link" href="https://joinpeertube.org/instances" target="_blank" rel="noopener noreferrer">https://joinpeertube.org/instances</a>. | |
67 | </div> | |
68 | ||
69 | <div *ngIf="!signupAllowed" i18n> | |
70 | Currently this instance doesn't allow for user registration, you may check the <a (click)="onTermsClick($event, instanceInformation)" href='#'>Terms</a> for more details or find an instance that gives you the possibility to sign up for an account and upload your videos there. | |
71 | Find yours among multiple instances at: <br /> <a class="alert-link" href="https://joinpeertube.org/instances" target="_blank" rel="noopener noreferrer">https://joinpeertube.org/instances</a>. | |
72 | </div> | |
73 | </div> | |
74 | </form> | |
ebefc902 | 75 | |
40360c17 K |
76 | <div class="external-login-blocks" *ngIf="getExternalLogins().length !== 0"> |
77 | <div class="block-title" i18n>Or sign in with</div> | |
ebefc902 | 78 | |
40360c17 K |
79 | <div> |
80 | <a class="external-login-block" *ngFor="let auth of getExternalLogins()" [href]="getAuthHref(auth)" role="button"> | |
81 | {{ auth.authDisplayName }} | |
82 | </a> | |
83 | </div> | |
4a8d113b | 84 | </div> |
ecb4e35f | 85 | </div> |
897ec54d | 86 | |
40360c17 | 87 | <div #instanceInformation class="instance-information"> |
071f3e51 C |
88 | <my-instance-about-accordion |
89 | (init)="onInstanceAboutAccordionInit($event)" [panels]="instanceInformationPanels" | |
90 | pluginScope="login" pluginHook="filter:login.instance-about-plugin-panels.create.result" | |
91 | ></my-instance-about-accordion> | |
40360c17 K |
92 | </div> |
93 | </div> | |
4a8d113b | 94 | </ng-container> |
897ec54d | 95 | </div> |
ecb4e35f | 96 | |
63347a0f C |
97 | <ng-template #forgotPasswordModal> |
98 | <div class="modal-header"> | |
99 | <h4 i18n class="modal-title">Forgot your password</h4> | |
457bb213 C |
100 | |
101 | <my-global-icon iconName="cross" aria-label="Close" role="button" (click)="hideForgotPasswordModal()"></my-global-icon> | |
63347a0f | 102 | </div> |
ecb4e35f | 103 | |
63347a0f | 104 | <div class="modal-body"> |
3b3b1820 C |
105 | |
106 | <div *ngIf="isEmailDisabled()" class="alert alert-danger" i18n> | |
32d7f2b7 | 107 | We are sorry, you cannot recover your password because your instance administrator did not configure the PeerTube email system. |
3b3b1820 C |
108 | </div> |
109 | ||
ab0beac7 K |
110 | <div *ngIf="!isEmailDisabled()" class="forgot-password-instructions" i18n> |
111 | Enter your email address and we will send you a link to reset your password. | |
112 | </div> | |
113 | ||
3b3b1820 | 114 | <div class="form-group" [hidden]="isEmailDisabled()"> |
63347a0f C |
115 | <label i18n for="forgot-password-email">Email</label> |
116 | <input | |
117 | type="email" id="forgot-password-email" i18n-placeholder placeholder="Email address" required | |
118 | [(ngModel)]="forgotPasswordEmail" #forgotPasswordEmailInput | |
119 | > | |
120 | </div> | |
121 | </div> | |
ecb4e35f | 122 | |
63347a0f | 123 | <div class="modal-footer inputs"> |
a6d5ff76 | 124 | <input |
266947e5 | 125 | type="button" role="button" i18n-value value="Cancel" class="peertube-button grey-button" |
a6d5ff76 RK |
126 | (click)="hideForgotPasswordModal()" (key.enter)="hideForgotPasswordModal()" |
127 | > | |
ecb4e35f | 128 | |
63347a0f | 129 | <input |
266947e5 | 130 | type="submit" i18n-value="Password reset button" value="Reset" class="peertube-button orange-button" |
63347a0f C |
131 | (click)="askResetPassword()" [disabled]="!forgotPasswordEmailInput.validity.valid" |
132 | > | |
ecb4e35f | 133 | </div> |
63347a0f | 134 | </ng-template> |