import { Location } from '@angular/common'; import { Component, OnInit } from '@angular/core'; import { FormBuilder } from '@angular/forms'; import { Router } from '@angular/router'; import { VERSION } from 'app/app.constants'; import { AccountService } from 'app/core/auth/account.service'; import { OAuth2Config } from 'app/core/auth/oauth2-config.model'; import { OAuth2ConfigService } from 'app/core/auth/oauth2-config.service'; import { LANGUAGES } from 'app/core/language/language.constants'; import { LoginService } from 'app/core/login/login.service'; import { ProfileService } from 'app/layouts/profiles/profile.service'; import { PagesService } from 'app/shared/service/pages-service'; import { WatchlistManager } from 'app/shared/watchlist/watchlist-manager'; import { JhiLanguageService } from 'ng-jhipster'; import { SessionStorageService } from 'ngx-webstorage'; @Component({ selector: 'jhi-navbar', templateUrl: './navbar.component.html', styleUrls: ['navbar.scss'], }) export class NavbarComponent implements OnInit { inProduction?: boolean; isNavbarCollapsed = true; languages = LANGUAGES; swaggerEnabled?: boolean; version: string; contentEditable = false; authenticationError = false; loginForm = this.fb.group({ username: [''], password: [''], rememberMe: [false], }); public configs: OAuth2Config[]; constructor( private loginService: LoginService, public languageService: JhiLanguageService, private sessionStorage: SessionStorageService, private accountService: AccountService, private fb: FormBuilder, // private loginModalService: LoginModalService, private profileService: ProfileService, private router: Router, private location: Location, // for redirect in OAuth2 public oAuth2ConfigService: OAuth2ConfigService, private watchlistManager: WatchlistManager, private pagesService: PagesService, ) { this.configs = []; this.oAuth2ConfigService.getAllConfigs().subscribe((loadedConfigs: OAuth2Config[]) => { this.configs = loadedConfigs; }); this.version = VERSION ? (VERSION.toLowerCase().startsWith('v') ? VERSION : 'v' + VERSION) : ''; } ngOnInit(): void { this.profileService.getProfileInfo().subscribe(profileInfo => { this.inProduction = profileInfo.inProduction; this.swaggerEnabled = profileInfo.swaggerEnabled; }); } changeLanguage(languageKey: string): void { this.sessionStorage.store('locale', languageKey); this.languageService.changeLanguage(languageKey); } collapseNavbar(): void { this.isNavbarCollapsed = true; } resetPagesCache(): void { this.pagesService.resetCache().subscribe(() => // eslint-disable-next-line no-console {console.log("Successfully emptied page cache")}) ; } isAuthenticated(): boolean { return this.accountService.isAuthenticated(); } toggleEditable(event: { target: { checked: any; }; }) { if ( event.target.checked ) { this.contentEditable = true; } } getCurrentBookmarkListName(): string { if (this.watchlistManager.currentWatchlist) { const name = this.watchlistManager.currentWatchlist.userWatchList.name; if (name) { return name; } } return ''; } // login(): void { // this.loginModalService.open(); // } login(): void { this.loginService .login({ username: this.loginForm.get('username')!.value, password: this.loginForm.get('password')!.value, rememberMe: this.loginForm.get('rememberMe')!.value, }) .subscribe( () => { this.authenticationError = false; if ( this.router.url === '/account/register' || this.router.url.startsWith('/account/activate') || this.router.url.startsWith('/account/reset/') ) { this.router.navigate(['']); } }, () => (this.authenticationError = true) ); } loginWithGitLab(registrationId: string): void { location.href = `${location.origin}${this.location.prepareExternalUrl('oauth2/authorization/' + registrationId)}`; // If you have configured multiple OIDC providers, then, you can update this URL to /login. // It will show a Spring Security generated login page with links to configured OIDC providers. } logout(): void { this.collapseNavbar(); this.loginService.logout(); this.router.navigate(['']); } toggleNavbar(): void { this.isNavbarCollapsed = !this.isNavbarCollapsed; } getImageUrl(): string { return this.isAuthenticated() ? this.accountService.getImageUrl() : ''; } }