add permission handling on frontend

This commit is contained in:
rubikscraft
2022-03-12 22:37:45 +01:00
parent 52434efdd7
commit 7026c8cb67
12 changed files with 144 additions and 16 deletions

View File

@@ -1,8 +1,10 @@
import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
import { Permissions } from 'picsur-shared/dist/dto/permissions';
import { EUser } from 'picsur-shared/dist/entities/user.entity';
import { HasFailed } from 'picsur-shared/dist/types';
import { PermissionService } from 'src/app/api/permission.service';
import { UserService } from 'src/app/api/user.service';
import { SnackBarType } from 'src/app/models/snack-bar-type';
import { UtilService } from 'src/app/util/util.service';
@@ -16,6 +18,7 @@ export class HeaderComponent implements OnInit {
private readonly logger = console;
private currentUser: EUser | null = null;
private permissions: Permissions = [];
public get user() {
return this.currentUser;
@@ -25,24 +28,36 @@ export class HeaderComponent implements OnInit {
return this.currentUser !== null;
}
public get canLogIn() {
return this.permissions.includes('user-login');
}
constructor(
private router: Router,
private userService: UserService,
private permissionService: PermissionService,
private utilService: UtilService
) {}
ngOnInit(): void {
this.subscribeUser();
this.subscribePermissions();
}
@AutoUnsubscribe()
subscribeUser() {
return this.userService.liveUser.subscribe((user) => {
this.logger.log('user', user);
return this.userService.live.subscribe((user) => {
this.currentUser = user;
});
}
@AutoUnsubscribe()
subscribePermissions() {
return this.permissionService.live.subscribe((permissions) => {
this.permissions = permissions;
});
}
doLogin() {
this.router.navigate(['/login']);
}