Added login/logout button to topbar.

This commit is contained in:
Tom
2025-04-07 14:27:46 +00:00
parent 3e9a9f9dc5
commit b8a92534d9
11 changed files with 124 additions and 4 deletions

View File

@ -0,0 +1,6 @@
<button mat-icon-button
class="neutral"
matTooltip="Navigate to the log in page"
(click)="login()">
<mat-icon>login</mat-icon>
</button>

View File

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { LoginButtonComponent } from './login-button.component';
describe('LoginButtonComponent', () => {
let component: LoginButtonComponent;
let fixture: ComponentFixture<LoginButtonComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [LoginButtonComponent]
})
.compileComponents();
fixture = TestBed.createComponent(LoginButtonComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,28 @@
import { Component, inject } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatTooltipModule } from '@angular/material/tooltip';
import { ReactiveFormsModule } from '@angular/forms';
import { Router } from '@angular/router';
@Component({
selector: 'login-button',
standalone: true,
imports: [
MatButtonModule,
MatIconModule,
MatFormFieldModule,
MatTooltipModule,
ReactiveFormsModule,
],
templateUrl: './login-button.component.html',
styleUrl: './login-button.component.scss'
})
export class LoginButtonComponent {
private readonly router = inject(Router);
login() {
this.router.navigate(['login']);
}
}

View File

@ -0,0 +1,6 @@
<button mat-icon-button
class="danger"
matTooltip="Log off"
(click)="logoff()">
<mat-icon>logout</mat-icon>
</button>

View File

@ -0,0 +1,23 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { LogoffButtonComponent } from './logoff-button.component';
describe('LogoffButtonComponent', () => {
let component: LogoffButtonComponent;
let fixture: ComponentFixture<LogoffButtonComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [LogoffButtonComponent]
})
.compileComponents();
fixture = TestBed.createComponent(LogoffButtonComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,28 @@
import { Component, inject } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatTooltipModule } from '@angular/material/tooltip';
import { ReactiveFormsModule } from '@angular/forms';
import { ApiAuthenticationService } from '../../shared/services/api/api-authentication.service';
@Component({
selector: 'logoff-button',
standalone: true,
imports: [
MatButtonModule,
MatIconModule,
MatFormFieldModule,
MatTooltipModule,
ReactiveFormsModule,
],
templateUrl: './logoff-button.component.html',
styleUrl: './logoff-button.component.scss'
})
export class LogoffButtonComponent {
private readonly auth = inject(ApiAuthenticationService);
logoff() {
this.auth.logout();
}
}