Skip to content

Commit 3960930

Browse files
committed
Simplified login request data
1 parent 98eee5c commit 3960930

6 files changed

Lines changed: 39 additions & 24 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export class LoginStatus {
2+
username: string = '';
3+
}
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
export class User {
22
username: string = '';
3-
password: string = '';
43
logged: boolean = false;
54
token: string | null = null;
65
}

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

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,51 @@ import { Response } from '@app/api/model/response';
44
import { environment } from '@environments/environment';
55
import { Observable } from 'rxjs';
66
import { map } from 'rxjs/operators';
7+
import { LoginStatus } from '../model/login-status';
78
import { User } from '../model/user';
89

910
@Injectable({
1011
providedIn: 'root',
1112
})
1213
export class AuthenticationService {
1314

15+
private loginUrl = environment.apiUrl + "/fee";
16+
1417
public user: User = new User();
1518

1619
constructor(
1720
private http: HttpClient
1821
) { }
1922

20-
login(username: string, password: string): Observable<User> {
21-
return this.http.post<Response<User>>(`${environment.apiUrl}/login/`, { username, password })
23+
public login(username: string, password: string): Observable<User> {
24+
const toUser = (status: LoginStatus) => this.loadUser(username, password, status);
25+
26+
return this.http.post<Response<LoginStatus>>(this.loginUrl, { username, password })
2227
.pipe(map(response => response.content))
23-
.pipe(map(user => {
24-
let loggedUser;
25-
26-
if (user) {
27-
loggedUser = user;
28-
const token = window.btoa(username + ':' + password);
29-
loggedUser.logged = true;
30-
loggedUser.token = token;
31-
} else {
32-
loggedUser = new User();
33-
}
34-
35-
this.user = loggedUser;
36-
return this.user;
37-
}));
28+
.pipe(map(toUser));
3829
}
3930

40-
logout() {
31+
public logout() {
4132
this.user = new User();
4233
}
4334

44-
getUser(): User {
35+
public getUser(): User {
36+
return this.user;
37+
}
38+
39+
private loadUser(username: string, password: string, status: LoginStatus): User {
40+
let loggedUser;
41+
42+
loggedUser = new User();
43+
if (status) {
44+
loggedUser.username = status.username;
45+
loggedUser.logged = true;
46+
47+
const token = window.btoa(username + ':' + password);
48+
loggedUser.token = token;
49+
}
50+
51+
this.user = loggedUser;
4552
return this.user;
4653
}
4754

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<button (click)="logout()">Logout</button>
1+
<button (click)="onLogout()" [disabled]="!isAbleToLogout()">Logout</button>

src/app/login/logout-button/logout-button.component.css renamed to src/app/login/logout-button/logout-button.component.sass

File renamed without changes.

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,24 @@ import { AuthenticationService } from '@app/authentication/service/authenticatio
55
@Component({
66
selector: 'logout-button',
77
templateUrl: './logout-button.component.html',
8-
styleUrls: ['./logout-button.component.css']
8+
styleUrls: ['./logout-button.component.sass']
99
})
1010
export class LogoutButtonComponent {
1111

12+
private loginUrl = '/login';
13+
1214
constructor(
1315
private authenticationService: AuthenticationService,
1416
private router: Router
1517
) { }
1618

17-
logout() {
19+
public onLogout() {
1820
this.authenticationService.logout();
19-
this.router.navigate(['/login']);
21+
this.router.navigate([this.loginUrl]);
22+
}
23+
24+
public isAbleToLogout(): boolean {
25+
return this.authenticationService.getUser().logged;
2026
}
2127

2228
}

0 commit comments

Comments
 (0)