Skip to content

Commit 5268542

Browse files
Added organization filter to permissions (#139)
* Added organization filter to permissions * Added permissions to application details + fixed permission query
1 parent 88e8aff commit 5268542

File tree

7 files changed

+104
-90
lines changed

7 files changed

+104
-90
lines changed

src/app/admin/permission/permission.service.ts

Lines changed: 75 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -2,94 +2,94 @@ import { Injectable } from '@angular/core';
22
import { RestService } from '../../shared/services/rest.service';
33
import { Observable } from 'rxjs';
44
import {
5-
PermissionGetManyResponse,
6-
PermissionResponse,
7-
PermissionRequest,
8-
PermissionRequestAcceptUser,
5+
PermissionGetManyResponse,
6+
PermissionResponse,
7+
PermissionRequest,
8+
PermissionRequestAcceptUser,
99
} from './permission.model';
1010
import { map } from 'rxjs/operators';
1111
import { UserMinimalService } from '../users/user-minimal.service';
1212

1313
@Injectable({
14-
providedIn: 'root',
14+
providedIn: 'root',
1515
})
1616
export class PermissionService {
17-
endpoint = 'permission';
18-
constructor(
19-
private restService: RestService,
20-
private userMinimalService: UserMinimalService
21-
) {}
17+
endpoint = 'permission';
18+
constructor(
19+
private restService: RestService,
20+
private userMinimalService: UserMinimalService
21+
) {}
2222

23-
createPermission(body: PermissionRequest): Observable<PermissionResponse> {
24-
return this.restService.post(this.endpoint, body, {
25-
observe: 'response',
26-
});
27-
}
23+
createPermission(body: PermissionRequest): Observable<PermissionResponse> {
24+
return this.restService.post(this.endpoint, body, {
25+
observe: 'response',
26+
});
27+
}
2828

29-
createPermissionAcceptUser(body: PermissionRequestAcceptUser): Observable<PermissionResponse> {
30-
return this.restService.put(this.endpoint + '/acceptUser', body, undefined, {
31-
observe: 'response',
32-
});
33-
}
29+
createPermissionAcceptUser(
30+
body: PermissionRequestAcceptUser
31+
): Observable<PermissionResponse> {
32+
return this.restService.put(
33+
this.endpoint + '/acceptUser',
34+
body,
35+
undefined,
36+
{
37+
observe: 'response',
38+
}
39+
);
40+
}
3441

35-
updatePermission(
36-
body: PermissionRequest,
37-
id: number
38-
): Observable<PermissionResponse> {
39-
return this.restService.put(this.endpoint, body, id, {
40-
observe: 'response',
41-
});
42-
}
42+
updatePermission(
43+
body: PermissionRequest,
44+
id: number
45+
): Observable<PermissionResponse> {
46+
return this.restService.put(this.endpoint, body, id, {
47+
observe: 'response',
48+
});
49+
}
4350

44-
getPermission(id: number): Observable<PermissionResponse> {
45-
return this.restService.get(this.endpoint, {}, id).pipe(
46-
map((response: PermissionResponse) => {
47-
response.createdByName = this.userMinimalService.getUserNameFrom(
48-
response.createdBy
49-
);
50-
response.updatedByName = this.userMinimalService.getUserNameFrom(
51-
response.updatedBy
52-
);
53-
return response;
54-
})
51+
getPermission(id: number): Observable<PermissionResponse> {
52+
return this.restService.get(this.endpoint, {}, id).pipe(
53+
map((response: PermissionResponse) => {
54+
response.createdByName = this.userMinimalService.getUserNameFrom(
55+
response.createdBy
5556
);
56-
}
57+
response.updatedByName = this.userMinimalService.getUserNameFrom(
58+
response.updatedBy
59+
);
60+
return response;
61+
})
62+
);
63+
}
5764

58-
getPermissions(
59-
limit: number = 1000,
60-
offset: number = 0,
61-
orderByColumn?: string,
62-
orderByDirection?: string,
63-
userId?: number,
64-
organisationId?: number
65-
): Observable<PermissionGetManyResponse> {
66-
if (userId) {
67-
return this.restService.get(this.endpoint, {
68-
limit: limit,
69-
offset: offset,
70-
orderOn: orderByColumn,
71-
sort: orderByDirection,
72-
userId: userId,
73-
});
74-
} else if (organisationId) {
75-
return this.restService.get(this.endpoint, {
76-
limit: limit,
77-
offset: offset,
78-
orderOn: orderByColumn,
79-
sort: orderByDirection,
80-
organisationId: organisationId,
81-
});
82-
} else {
83-
return this.restService.get(this.endpoint, {
84-
limit: limit,
85-
offset: offset,
86-
orderOn: orderByColumn,
87-
sort: orderByDirection,
88-
});
89-
}
65+
getPermissions(
66+
limit: number = 1000,
67+
offset: number = 0,
68+
orderByColumn?: string,
69+
orderByDirection?: string,
70+
userId?: number,
71+
organisationId?: number
72+
): Observable<PermissionGetManyResponse> {
73+
if (userId || organisationId) {
74+
return this.restService.get(this.endpoint, {
75+
limit: limit,
76+
offset: offset,
77+
orderOn: orderByColumn,
78+
sort: orderByDirection,
79+
userId: userId,
80+
organisationId: organisationId,
81+
});
82+
} else {
83+
return this.restService.get(this.endpoint, {
84+
limit: limit,
85+
offset: offset,
86+
orderOn: orderByColumn,
87+
sort: orderByDirection,
88+
});
9089
}
90+
}
9191

92-
deletePermission(id: number) {
93-
return this.restService.delete(this.endpoint, id);
94-
}
92+
deletePermission(id: number) {
93+
return this.restService.delete(this.endpoint, id);
94+
}
9595
}

src/app/applications/application-detail/application-detail.component.html

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<div *ngIf="application">
22
<app-top-bar [data]="application" [backButton]="backButton" [subPage]="true"
3-
[addDetailDowndown]="true" [dropDownButton]="dropdownButton" (deleteSelectedInDropdown)="onDeleteApplication()"
4-
[canEdit]="canEdit">
3+
[addDetailDowndown]="true" [dropDownButton]="dropdownButton"
4+
(deleteSelectedInDropdown)="onDeleteApplication()"
5+
[canEdit]="canEdit">
56
</app-top-bar>
67
<div class="container-fluid">
78
<div class="row">
@@ -15,17 +16,20 @@ <h3>{{ 'APPLICATION.DETAILS' | translate }}</h3>
1516
<p *ngIf="application.description">
1617
<strong>{{ 'APPLICATION.DESCRIPTION' | translate }}</strong></p>
1718
<pre><p>{{application.description}}</p></pre>
18-
<app-metadata-details [status]="application.status" [startDate]="application.startDate"
19-
[endDate]="application.endDate"
20-
[category]="application.category"
21-
[owner]="application.owner"
22-
[contactPerson]="application.contactPerson"
23-
[contactEmail]="application.contactEmail"
24-
[contactPhone]="application.contactPhone"
25-
[personalData]="application.personalData"
26-
[hardware]="application.hardware"
27-
[controlledProperties]="application.controlledProperties"
28-
[deviceTypes]="application.deviceTypes"
19+
<app-metadata-details
20+
[permissions]="application.permissions"
21+
[status]="application.status"
22+
[startDate]="application.startDate"
23+
[endDate]="application.endDate"
24+
[category]="application.category"
25+
[owner]="application.owner"
26+
[contactPerson]="application.contactPerson"
27+
[contactEmail]="application.contactEmail"
28+
[contactPhone]="application.contactPhone"
29+
[personalData]="application.personalData"
30+
[hardware]="application.hardware"
31+
[controlledProperties]="application.controlledProperties"
32+
[deviceTypes]="application.deviceTypes"
2933
></app-metadata-details>
3034
</div>
3135
</div>
@@ -36,7 +40,7 @@ <h3>{{ 'APPLICATION.DETAILS' | translate }}</h3>
3640
[routerLink]="link.link"
3741
routerLinkActive #rla="routerLinkActive"
3842
[active]="rla.isActive"
39-
>{{ link.label | translate }}</a>
43+
>{{ link.label | translate }}</a>
4044
</nav>
4145
<router-outlet></router-outlet>
4246
</div>

src/app/applications/application.model.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { Organisation } from '../admin/organisation/organisation.model';
55
import { ApplicationStatus } from './enums/status.enum';
66
import { IotDevice } from './iot-devices/iot-device.model';
77
import { ApplicationDeviceType } from './models/application-device-type.model';
8+
import { PermissionResponse } from '@app/admin/permission/permission.model';
89

910
export class Application {
1011
public id: number;
@@ -30,6 +31,7 @@ export class Application {
3031
public hardware?: string;
3132
public controlledProperties?: ControlledProperty[];
3233
public deviceTypes?: ApplicationDeviceType[];
34+
public permissions: PermissionResponse[];
3335
public permissionIds: number[];
3436
}
3537

src/app/shared/components/forms/form-body-application/form-body-application.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,8 @@ export class FormBodyApplicationComponent implements OnInit, OnDestroy {
308308
0,
309309
undefined,
310310
undefined,
311-
this.meService.hasGlobalAdmin() ? undefined : userId
311+
this.meService.hasGlobalAdmin() ? undefined : userId,
312+
this.sharedVariableService.getSelectedOrganisationId()
312313
)
313314
.subscribe((res) => {
314315
this.permissions = res.data.sort((a, b) =>

src/app/shared/components/metadata-details/metadata-details.component.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<p *ngIf="permissions.length !== 0"><strong>{{ 'APPLICATION.METADATA-FIELD.PERMISSIONS' | translate }}</strong></p>
2+
<ul *ngIf="permissions.length !== 0">
3+
<li *ngFor="let permission of permissions">{{ permission.name }}</li>
4+
</ul>
15
<p *ngIf="status && status !== ApplicationStatus.NONE">
26
<strong>{{ 'APPLICATION.METADATA-FIELD.STATUS' | translate }}</strong>{{ 'APPLICATION.STATUS.' + status | translate }}
37
</p>

src/app/shared/components/metadata-details/metadata-details.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import { ApplicationDeviceType } from '@applications/models/application-device-t
44
import { TranslateService } from '@ngx-translate/core';
55
import { toPascalKebabCase } from '@shared/helpers/string.helper';
66
import { ControlledProperty } from '@shared/models/controlled-property.model';
7+
import { PermissionResponse } from '@app/admin/permission/permission.model';
78

89
@Component({
910
selector: 'app-metadata-details',
1011
templateUrl: './metadata-details.component.html',
1112
styleUrls: ['./metadata-details.component.scss'],
1213
})
1314
export class MetadataDetailsComponent implements OnInit {
15+
@Input() permissions?: PermissionResponse[];
1416
@Input() status?: ApplicationStatus;
1517
@Input() startDate?: Date;
1618
@Input() endDate?: Date;

src/assets/i18n/da.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@
137137
},
138138
"DETAILS": "Detaljer",
139139
"METADATA-FIELD": {
140+
"PERMISSIONS": "Brugergrupper",
140141
"STATUS": "Status",
141142
"START-DATE": "Startdato",
142143
"END-DATE": "Slutdato",

0 commit comments

Comments
 (0)