55 lines
1.2 KiB
TypeScript
55 lines
1.2 KiB
TypeScript
import {EventEmitter, Injectable, Output} from "@angular/core";
|
|
import {SsrCookieService} from "ngx-cookie-service-ssr";
|
|
import {Router} from "@angular/router";
|
|
import {User} from "./user";
|
|
import {BehaviorSubject} from "rxjs";
|
|
|
|
@Injectable({
|
|
providedIn: 'root'
|
|
})
|
|
export class UserService {
|
|
user?: User;
|
|
|
|
private userEmitter = new BehaviorSubject('');
|
|
currentUser = this.userEmitter.asObservable();
|
|
|
|
constructor(
|
|
private cookieService: SsrCookieService,
|
|
private router: Router,
|
|
) {}
|
|
|
|
public getUser(): User | undefined {
|
|
const user = this.cookieService.get('swissuser');
|
|
|
|
if (user) {
|
|
this.user = JSON.parse(user);
|
|
this.userEmitter.next(JSON.parse(user).username);
|
|
} else {
|
|
this.user = undefined;
|
|
}
|
|
|
|
return this.user;
|
|
}
|
|
|
|
public isLoggedIn(): boolean {
|
|
const user = this.cookieService.get('swissuser');
|
|
|
|
return !(user == undefined || false || user == "");
|
|
}
|
|
|
|
public setUser(user: User) {
|
|
this.cookieService.set('swissuser', JSON.stringify(user));
|
|
|
|
this.user = user;
|
|
|
|
this.userEmitter.next(this.user.username);
|
|
}
|
|
|
|
public removeUser() {
|
|
this.cookieService.delete('swissuser');
|
|
this.user = undefined;
|
|
this.router.navigate(['/tournaments']);
|
|
this.userEmitter.next('');
|
|
}
|
|
}
|