34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { Component, signal } from '@angular/core';
|
|
import { Router, RouterOutlet } from '@angular/router';
|
|
import { MainMenu } from './components/main-menu/main-menu';
|
|
import { AuthService } from './auth/auth.service';
|
|
import { AdminLayout } from './layout/admin-layout/admin-layout';
|
|
import { finalize } from 'rxjs/operators';
|
|
|
|
@Component({
|
|
selector: 'app-root',
|
|
imports: [RouterOutlet, AdminLayout,MainMenu],
|
|
templateUrl: './app.html',
|
|
styleUrl: './app.css'
|
|
})
|
|
export class App {
|
|
protected readonly title = signal('admin');
|
|
|
|
constructor(private authService: AuthService, private router: Router) {}
|
|
|
|
logout(): void {
|
|
// With the interceptor fixed, this is now the correct and robust way.
|
|
// The error from a failed server logout will propagate here.
|
|
this.authService.serverSideLogout().subscribe({
|
|
next: () => {
|
|
console.log('Server-side logout successful.');
|
|
this.authService.clientSideLogout();
|
|
},
|
|
error: (err) => {
|
|
console.error('Server-side logout failed, logging out client-side anyway.', err);
|
|
this.authService.clientSideLogout();
|
|
},
|
|
});
|
|
}
|
|
}
|