Skip to content

Commit ee511b9

Browse files
jeppeejVirtualSatai
authored andcommitted
IOT-566 add has any permission check
1 parent b92d577 commit ee511b9

File tree

5 files changed

+70
-40
lines changed

5 files changed

+70
-40
lines changed

src/app/auth/auth.component.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { AuthService } from './auth.service';
44
import { Router } from '@angular/router';
55
import { TranslateService } from '@ngx-translate/core';
66
import { environment } from '@environments/environment';
7+
import { SharedVariableService } from '@shared/shared-variable/shared-variable.service';
78

89
@Component({
910
selector: 'app-auth',
@@ -23,7 +24,8 @@ export class AuthComponent implements OnInit {
2324
constructor(
2425
private authService: AuthService,
2526
private router: Router,
26-
public translate: TranslateService
27+
public translate: TranslateService,
28+
private sharedVariableService: SharedVariableService
2729
) {}
2830

2931
ngOnInit(): void {}
@@ -39,6 +41,7 @@ export class AuthComponent implements OnInit {
3941

4042
success() {
4143
this.isLoading = false;
44+
this.sharedVariableService.setHasAnyPermission();
4245
this.router.navigateByUrl('/dashboard');
4346
}
4447

src/app/navbar/navbar.component.html

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<nav class="navbar navbar-expand-md navbar-light d-md-flex align-items-md-start flex-md-column p-2 pt-md-4">
1+
<nav class="navbar navbar-expand-md navbar-light d-md-flex align-items-md-start flex-md-column p-2 pt-md-4" >
22
<a routerLink="/dashboard" class="navbar-brand p-0 pl-2" href="">
33
<div class="img-logo" alt="OS2IoT" [inlineSVG]="'../../assets/images/OS2-iot-svg.svg'"></div>
44
<!-- <img class="logo" alt="OS2IoT"
@@ -21,40 +21,42 @@
2121
</button>
2222
<div class="collapse navbar-collapse flex-grow-0" id="navbar">
2323
<ul class="navbar-nav flex-column mt-5">
24-
<li class="nav-item py-2">
25-
<app-global-admin></app-global-admin>
26-
</li>
27-
<li class="nav-item py-2">
28-
<app-organisation-dropdown></app-organisation-dropdown>
29-
</li>
30-
<li class="nav-item py-2">
31-
<ul class="navbar-nav flex-column">
32-
<p class="ml-2">{{'NAV.MENU-ITEM-MISC' | translate}}</p>
33-
<mat-divider></mat-divider>
34-
<li class="nav-item py-2">
35-
<a routerLink="/gateways" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
36-
id="myLoraGateway">
37-
{{ 'NAV.LORA-GATEWAYS' | translate }}
38-
</a>
39-
<fa-icon [icon]="faBroadcastTower" class="navbar-icon"></fa-icon>
40-
41-
</li>
42-
<li class="nav-item py-2">
43-
<a routerLink="/profiles" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
44-
id="profiles">
45-
{{ 'NAV.PROFILES' | translate }}
46-
</a>
47-
<fa-icon [icon]="faSlidersH" class="navbar-icon"></fa-icon>
48-
</li>
49-
<li class="nav-item py-2">
50-
<a routerLink="/payload-decoder" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
51-
id="payload-decoder">
52-
{{ 'NAV.PAYLOAD-DECODER' | translate }}
53-
</a>
54-
<fa-icon [icon]="faNetworkWired" class="navbar-icon"></fa-icon>
55-
</li>
56-
</ul>
57-
</li>
24+
<div *ngIf="hasSomePermissions()">
25+
<li class="nav-item py-2">
26+
<app-global-admin></app-global-admin>
27+
</li>
28+
<li class="nav-item py-2">
29+
<app-organisation-dropdown></app-organisation-dropdown>
30+
</li>
31+
<li class="nav-item py-2">
32+
<ul class="navbar-nav flex-column">
33+
<p class="ml-2">{{'NAV.MENU-ITEM-MISC' | translate}}</p>
34+
<mat-divider></mat-divider>
35+
<li class="nav-item py-2">
36+
<a routerLink="/gateways" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
37+
id="myLoraGateway">
38+
{{ 'NAV.LORA-GATEWAYS' | translate }}
39+
</a>
40+
<fa-icon [icon]="faBroadcastTower" class="navbar-icon"></fa-icon>
41+
42+
</li>
43+
<li class="nav-item py-2">
44+
<a routerLink="/profiles" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
45+
id="profiles">
46+
{{ 'NAV.PROFILES' | translate }}
47+
</a>
48+
<fa-icon [icon]="faSlidersH" class="navbar-icon"></fa-icon>
49+
</li>
50+
<li class="nav-item py-2">
51+
<a routerLink="/payload-decoder" routerLinkActive="active" class="nav-link pl-5 position-relative rounded"
52+
id="payload-decoder">
53+
{{ 'NAV.PAYLOAD-DECODER' | translate }}
54+
</a>
55+
<fa-icon [icon]="faNetworkWired" class="navbar-icon"></fa-icon>
56+
</li>
57+
</ul>
58+
</li>
59+
</div>
5860
<li class="nav-item py-2 ">
5961
<a style="cursor: pointer;" class="nav-link pl-5 position-relative rounded" (click)="onLogout()"
6062
[attr.href]="getKombitLogoutUrl() ? getKombitLogoutUrl() : null"

src/app/navbar/navbar.component.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
import { AuthService } from '@app/auth/auth.service';
1111
import { Router } from '@angular/router';
1212
import { environment } from '@environments/environment';
13+
import { SharedVariableService } from '@shared/shared-variable/shared-variable.service';
1314

1415
@Component({
1516
selector: 'app-navbar',
@@ -27,7 +28,8 @@ export class NavbarComponent implements OnInit {
2728
constructor(
2829
private authService: AuthService,
2930
public translate: TranslateService,
30-
private router: Router
31+
private router: Router,
32+
private sharedVariableService: SharedVariableService
3133
) {
3234
translate.use('da');
3335
}
@@ -43,6 +45,10 @@ export class NavbarComponent implements OnInit {
4345
return this.authService.isLoggedIn();
4446
}
4547

48+
hasSomePermissions(): boolean {
49+
return this.sharedVariableService.getHasAnyPermission()
50+
}
51+
4652
isLoggedInWithKombit() {
4753
return this.authService.isLoggedInWithKombit();
4854
}

src/app/navbar/organisation-dropdown/organisation-dropdown.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ export class OrganisationDropdownComponent implements OnInit, OnChanges {
5353
(x) => x.id === this.sharedVariable.getSelectedOrganisationId()
5454
)
5555
) {
56-
this.setSelectedOrganisation(response.organizations[0].id);
56+
this.setSelectedOrganisation(response.organizations[0]?.id);
5757
}
58-
this.isOrganisationAdmin(response.organizations[0].id);
58+
this.isOrganisationAdmin(response.organizations[0]?.id);
5959
});
6060
}
6161

src/app/shared/shared-variable/shared-variable.service.ts

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ export class SharedVariableService {
1414
}
1515

1616
private selectedOrganisationId: number;
17-
private gotWritePermission = false;
17+
private gotWritePermission: boolean;
18+
private gotAnyPermission: boolean;
1819
private routerInfo: BehaviorSubject<number>;
1920

2021
getValue(): Observable<number> {
@@ -47,6 +48,24 @@ export class SharedVariableService {
4748
});
4849
}
4950

51+
setHasAnyPermission() {
52+
this.authService.me()
53+
.subscribe(
54+
(response: CurrentUserInfoResponse) => {
55+
const hasSomePermission = response.user.permissions.length > 0;
56+
this.gotAnyPermission = hasSomePermission;
57+
localStorage.setItem('has_any_permission', hasSomePermission.toString());
58+
}
59+
)
60+
}
61+
62+
getHasAnyPermission(): boolean {
63+
if (this.gotAnyPermission != null) {
64+
return this.gotAnyPermission;
65+
}
66+
return JSON.parse(localStorage.getItem('has_any_permission'));
67+
}
68+
5069
getHasWritePermission(): boolean {
5170
if (this.gotWritePermission != null) {
5271
return this.gotWritePermission;

0 commit comments

Comments
 (0)