mirror of
https://github.com/CaramelFur/Picsur.git
synced 2025-11-13 07:15:39 +01:00
add permission handling on frontend
This commit is contained in:
@@ -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']);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user