X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Blogin%2Flogin.component.ts;h=9731383afc78cb1a1b0c61e78689389368d49bfa;hb=171efc48e67498406feb6d7873b3482b41505515;hp=cbc51ee216132fba8e82a6e65647fd394867b7dd;hpb=1942f11d5ee6926ad93dc1b79fae18325ba5de18;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+login/login.component.ts b/client/src/app/+login/login.component.ts index cbc51ee21..9731383af 100644 --- a/client/src/app/+login/login.component.ts +++ b/client/src/app/+login/login.component.ts @@ -3,9 +3,10 @@ import { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angula import { ActivatedRoute } from '@angular/router' import { AuthService, Notifier, RedirectService, UserService } from '@app/core' import { HooksService } from '@app/core/plugins/hooks.service' -import { FormReactive, FormValidatorService, LoginValidatorsService } from '@app/shared/shared-forms' -import { NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' -import { I18n } from '@ngx-translate/i18n-polyfill' +import { LOGIN_PASSWORD_VALIDATOR, LOGIN_USERNAME_VALIDATOR } from '@app/shared/form-validators/login-validators' +import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' +import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' +import { NgbAccordion, NgbModal, NgbModalRef } from '@ng-bootstrap/ng-bootstrap' import { RegisteredExternalAuthConfig, ServerConfig } from '@shared/models' @Component({ @@ -15,9 +16,9 @@ import { RegisteredExternalAuthConfig, ServerConfig } from '@shared/models' }) export class LoginComponent extends FormReactive implements OnInit, AfterViewInit { - @ViewChild('usernameInput', { static: false }) usernameInput: ElementRef @ViewChild('forgotPasswordModal', { static: true }) forgotPasswordModal: ElementRef + accordion: NgbAccordion error: string = null forgotPasswordEmail = '' @@ -25,6 +26,14 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni externalAuthError = false externalLogins: string[] = [] + instanceInformationPanels = { + terms: true, + administrators: false, + features: false, + moderation: false, + codeOfConduct: false + } + private openedForgotPasswordModal: NgbModalRef private serverConfig: ServerConfig @@ -32,14 +41,12 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni protected formValidatorService: FormValidatorService, private route: ActivatedRoute, private modalService: NgbModal, - private loginValidatorsService: LoginValidatorsService, private authService: AuthService, private userService: UserService, private redirectService: RedirectService, private notifier: Notifier, - private hooks: HooksService, - private i18n: I18n - ) { + private hooks: HooksService + ) { super() } @@ -47,6 +54,15 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni return this.serverConfig.signup.allowed === true } + onTermsClick (event: Event, instanceInformation: HTMLElement) { + event.preventDefault() + + if (this.accordion) { + this.accordion.expand('terms') + instanceInformation.scrollIntoView({ behavior: 'smooth' }) + } + } + isEmailDisabled () { return this.serverConfig.email.enabled === false } @@ -54,6 +70,12 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni ngOnInit () { const snapshot = this.route.snapshot + // Avoid undefined errors when accessing form error properties + this.buildForm({ + username: LOGIN_USERNAME_VALIDATOR, + password: LOGIN_PASSWORD_VALIDATOR + }) + this.serverConfig = snapshot.data.serverConfig if (snapshot.queryParams.externalAuthToken) { @@ -65,18 +87,9 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni this.externalAuthError = true return } - - this.buildForm({ - username: this.loginValidatorsService.LOGIN_USERNAME, - password: this.loginValidatorsService.LOGIN_PASSWORD - }) } ngAfterViewInit () { - if (this.usernameInput) { - this.usernameInput.nativeElement.focus() - } - this.hooks.runAction('action:login.init', 'login') } @@ -105,10 +118,9 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni this.userService.askResetPassword(this.forgotPasswordEmail) .subscribe( () => { - const message = this.i18n( - 'An email with the reset password instructions will be sent to {{email}}. The link will expire within 1 hour.', - { email: this.forgotPasswordEmail } - ) + const message = $localize`An email with the reset password instructions will be sent to ${this.forgotPasswordEmail}. +The link will expire within 1 hour.` + this.notifier.success(message) this.hideForgotPasswordModal() }, @@ -125,6 +137,14 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni this.openedForgotPasswordModal.close() } + onInstanceAboutAccordionInit (instanceAboutAccordion: InstanceAboutAccordionComponent) { + this.accordion = instanceAboutAccordion.accordion + } + + hasUsernameUppercase () { + return this.form.value['username'].match(/[A-Z]/) + } + private loadExternalAuthToken (username: string, token: string) { this.isAuthenticatedWithExternalAuth = true @@ -140,8 +160,8 @@ export class LoginComponent extends FormReactive implements OnInit, AfterViewIni } private handleError (err: any) { - if (err.message.indexOf('credentials are invalid') !== -1) this.error = this.i18n('Incorrect username or password.') - else if (err.message.indexOf('blocked') !== -1) this.error = this.i18n('You account is blocked.') + if (err.message.indexOf('credentials are invalid') !== -1) this.error = $localize`Incorrect username or password.` + else if (err.message.indexOf('blocked') !== -1) this.error = $localize`Your account is blocked.` else this.error = err.message } }