Skip to content

Commit 484e07c

Browse files
author
Bernardo
committed
Corrected login and added logout
1 parent 6217f40 commit 484e07c

14 files changed

Lines changed: 74 additions & 37 deletions

src/app/authentication/interceptor/authentication.interceptor.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,15 @@ export class AuthenticationInterceptor implements HttpInterceptor {
1111

1212
constructor(private authenticationService: AuthenticationService) { }
1313

14-
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
14+
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
1515
let authReq;
1616

1717
const token = this.authenticationService.getToken();
1818

1919
if (token === null) {
20-
authReq = req;
20+
authReq = request;
2121
} else {
22-
authReq = req.clone({ headers: req.headers.set(this.tokenHeaderKey, 'Basic ' + token) });
22+
authReq = request.clone({ headers: request.headers.set(this.tokenHeaderKey, 'Basic ' + token) });
2323
}
2424

2525
return next.handle(authReq);
Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
export class User {
2-
id: number = 0;
32
username: string = '';
43
password: string = '';
54
logged: boolean = false;
6-
authdata?: string;
75
}

src/app/authentication/service/authentication.service.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,10 @@ export class AuthenticationService {
55

66
private tokenId: string = 'access_token';
77

8-
constructor(
9-
) {
10-
}
8+
constructor() { }
119

1210
getToken(): string | null {
1311
return localStorage.getItem(this.tokenId);
1412
}
1513

16-
saveToken(token: string) {
17-
return localStorage.setItem(this.tokenId, token);
18-
}
19-
2014
}

src/app/login/login-form/login-form.component.html

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ <h4 class="card-header">Angular 10 Basic Authentication Example</h4>
55
<form [formGroup]="loginForm" (ngSubmit)="onSubmit()">
66
<div class="form-group">
77
<label for="username">Username</label>
8-
<input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.username.errors }" />
9-
<div *ngIf="submitted && f.username.errors" class="invalid-feedback">
10-
<div *ngIf="f.username.errors.required">Username is required</div>
8+
<input type="text" formControlName="username" class="form-control" [ngClass]="{ 'is-invalid': submitted && f['username'].errors }" />
9+
<div *ngIf="submitted && f['username'].errors" class="invalid-feedback">
10+
<div *ngIf="f['username'].errors['required']">Username is required</div>
1111
</div>
1212
</div>
1313
<div class="form-group">
1414
<label for="password">Password</label>
15-
<input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f.password.errors }" />
16-
<div *ngIf="submitted && f.password.errors" class="invalid-feedback">
17-
<div *ngIf="f.password.errors.required">Password is required</div>
15+
<input type="password" formControlName="password" class="form-control" [ngClass]="{ 'is-invalid': submitted && f['password'].errors }" />
16+
<div *ngIf="submitted && f['password'].errors" class="invalid-feedback">
17+
<div *ngIf="f['password'].errors['required']">Password is required</div>
1818
</div>
1919
</div>
2020
<button [disabled]="loading" class="btn btn-primary">

src/app/login/login-form/login-form.component.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import { Component, OnInit } from '@angular/core';
22
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
33
import { ActivatedRoute, Router } from '@angular/router';
4-
import { AuthenticationService } from '@app/authentication/service/authentication.service';
5-
import { first } from 'rxjs/operators';
64
import { LoginService } from '../service/login.service';
75

86
@Component({
9-
selector: 'dahs-login-form',
7+
selector: 'login-form',
108
templateUrl: './login-form.component.html',
119
styleUrls: ['./login-form.component.sass']
1210
})
@@ -22,8 +20,7 @@ export class LoginFormComponent implements OnInit {
2220
private formBuilder: FormBuilder,
2321
private route: ActivatedRoute,
2422
private router: Router,
25-
private loginService: LoginService,
26-
private authenticationService: AuthenticationService
23+
private loginService: LoginService
2724
) {
2825
// redirect to home if already logged in
2926
if (this.loginService.user.logged) {
@@ -58,12 +55,7 @@ export class LoginFormComponent implements OnInit {
5855
next: user => {
5956
this.loading = false;
6057
if (user.logged) {
61-
if(user.authdata){
62-
this.authenticationService.saveToken(user.authdata);
63-
}
6458
this.router.navigate([this.returnUrl]);
65-
} else {
66-
this.authenticationService.saveToken('');
6759
}
6860
},
6961
error: error => {

src/app/login/login.module.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import { AuthenticationModule } from '@app/authentication/authentication.module'
55
import { LoginFormComponent } from './login-form/login-form.component';
66
import { LoginRoutingModule } from './login-routing.module';
77
import { LoginService } from './service/login.service';
8+
import { LogoutButtonComponent } from './logout-button/logout-button.component';
89

910

1011

1112
@NgModule({
1213
declarations: [
13-
LoginFormComponent
14+
LoginFormComponent,
15+
LogoutButtonComponent
1416
],
1517
imports: [
1618
LoginRoutingModule,
@@ -21,6 +23,9 @@ import { LoginService } from './service/login.service';
2123
],
2224
providers: [
2325
LoginService
26+
],
27+
exports: [
28+
LogoutButtonComponent
2429
]
2530
})
2631
export class LoginModule { }

src/app/login/logout-button/logout-button.component.css

Whitespace-only changes.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<button (click)="logout()">Logout</button>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import { ComponentFixture, TestBed } from '@angular/core/testing';
2+
3+
import { LogoutButtonComponent } from './logout-button.component';
4+
5+
describe('LogoutButtonComponent', () => {
6+
let component: LogoutButtonComponent;
7+
let fixture: ComponentFixture<LogoutButtonComponent>;
8+
9+
beforeEach(async () => {
10+
await TestBed.configureTestingModule({
11+
declarations: [ LogoutButtonComponent ]
12+
})
13+
.compileComponents();
14+
});
15+
16+
beforeEach(() => {
17+
fixture = TestBed.createComponent(LogoutButtonComponent);
18+
component = fixture.componentInstance;
19+
fixture.detectChanges();
20+
});
21+
22+
it('should create', () => {
23+
expect(component).toBeTruthy();
24+
});
25+
});
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Component } from '@angular/core';
2+
import { LoginService } from '../service/login.service';
3+
4+
@Component({
5+
selector: 'logout-button',
6+
templateUrl: './logout-button.component.html',
7+
styleUrls: ['./logout-button.component.css']
8+
})
9+
export class LogoutButtonComponent {
10+
11+
constructor(private loginService: LoginService) { }
12+
13+
logout(){
14+
this.loginService.logout();
15+
}
16+
17+
}

0 commit comments

Comments
 (0)