rework worker permissions

This commit is contained in:
simon987
2019-02-16 16:18:28 -05:00
parent e079fc8497
commit 8784b536d3
20 changed files with 454 additions and 328 deletions

View File

@@ -65,8 +65,8 @@ export class ApiService {
return this.http.get(this.url + `/worker/stats`, this.options)
}
getProjectAccessRequests(project: number) {
return this.http.get(this.url + `/project/requests/${project}`)
getProjectAccess(project: number) {
return this.http.get(this.url + `/project/accesses/${project}`)
}
getAllManagers() {
@@ -81,4 +81,12 @@ export class ApiService {
return this.http.get(this.url + `/manager/demote/${managerId}`)
}
acceptWorkerAccessRequest(wid: number, pid: number) {
return this.http.post(this.url + `/project/accept_request/${pid}/${wid}`, null)
}
rejectWorkerAccessRequest(wid: number, pid: number) {
return this.http.post(this.url + `/project/reject_request/${pid}/${wid}`, null)
}
}

View File

@@ -0,0 +1,9 @@
import {Worker} from "./worker"
export interface WorkerAccess {
submit: boolean
assign: boolean
request: boolean
worker: Worker
project: number
}

View File

@@ -2,3 +2,7 @@
button {
margin-left: 15px;
}
.request {
color: #757575;
}

View File

@@ -11,19 +11,23 @@
<mat-card-content>
<mat-list *ngIf="!unauthorized">
<mat-list-item *ngFor="let w of requests">
<mat-icon mat-list-icon>person_add</mat-icon>
<h4 mat-line>{{w.alias}}</h4>
<mat-list-item *ngFor="let wa of accesses" [class.request]="wa.request">
<mat-icon mat-list-icon *ngIf="wa.submit" [title]="'perms.assign'|translate">library_add</mat-icon>
<mat-icon mat-list-icon *ngIf="wa.assign" [title]="'perms.submit'|translate">get_app</mat-icon>
<h4 mat-line>{{wa.worker.alias}} {{wa.request ? ('perms.pending' | translate) : ''}}</h4>
<div mat-line>
Id=<span class="text-mono">{{w.id}}</span>, {{"perms.created" | translate}}
Id=<span class="text-mono">{{wa.worker.id}}</span>, {{"perms.created" | translate}}
<span
class="text-mono">{{moment.unix(w.created).utc().format("UTC YYYY-MM-DD HH:mm:ss")}}</span>
class="text-mono">{{moment.unix(wa.worker.created).utc().format("UTC YYYY-MM-DD HH:mm:ss")}}</span>
</div>
<span style="flex: 1 1 auto;"></span>
<button mat-raised-button color="primary" [title]="'perms.grant' | translate">
<button mat-raised-button color="primary" [title]="'perms.grant' | translate"
*ngIf="wa.request" (click)="acceptRequest(wa)">
<mat-icon>check</mat-icon>
</button>
<button mat-raised-button color="warn" [title]="'perms.reject' | translate">
<button mat-raised-button color="warn"
[title]="wa.request ? ('perms.reject'|translate) : ('perms.remove'|translate)"
(click)="rejectRequest(wa)">
<mat-icon>close</mat-icon>
</button>
</mat-list-item>

View File

@@ -1,4 +1,3 @@
import {Worker} from "../models/worker"
import {Component, OnInit} from '@angular/core';
import {ApiService} from "../api.service";
import {Project} from "../models/project";
@@ -7,6 +6,7 @@ import {MessengerService} from "../messenger.service";
import {TranslateService} from "@ngx-translate/core";
import * as moment from "moment"
import {WorkerAccess} from "../models/worker-access";
@Component({
selector: 'app-project-perms',
@@ -24,7 +24,7 @@ export class ProjectPermsComponent implements OnInit {
project: Project;
private projectId: number;
requests: Worker[];
accesses: WorkerAccess[];
unauthorized: boolean = false;
moment = moment;
@@ -32,20 +32,30 @@ export class ProjectPermsComponent implements OnInit {
this.route.params.subscribe(params => {
this.projectId = params["id"];
this.getProject();
this.getProjectRequests();
this.getProjectAccesses();
})
}
public acceptRequest(wa: WorkerAccess) {
this.apiService.acceptWorkerAccessRequest(wa.worker.id, this.projectId)
.subscribe(() => this.getProjectAccesses())
}
public rejectRequest(wa: WorkerAccess) {
this.apiService.rejectWorkerAccessRequest(wa.worker.id, this.projectId)
.subscribe(() => this.getProjectAccesses())
}
private getProject() {
this.apiService.getProject(this.projectId).subscribe(data => {
this.project = data["project"]
})
}
private getProjectRequests() {
this.apiService.getProjectAccessRequests(this.projectId).subscribe(
private getProjectAccesses() {
this.apiService.getProjectAccess(this.projectId).subscribe(
data => {
this.requests = data["requests"]
this.accesses = data["accesses"]
},
error => {
if (error && (error.status == 401 || error.status == 403)) {
@@ -55,6 +65,6 @@ export class ProjectPermsComponent implements OnInit {
}
public refresh() {
this.getProjectRequests()
this.getProjectAccesses()
}
}

View File

@@ -103,7 +103,11 @@
"created": "Created on",
"grant": "Accept request",
"reject": "Deny request",
"refresh": "Refresh"
"remove": "Remove access",
"refresh": "Refresh",
"pending": "(Pending)",
"assign": "Assign",
"submit": "Submit"
},
"messenger": {
"close": "Close",

View File

@@ -105,7 +105,11 @@
"created": "Créé le",
"grant": "Accepter la requête",
"reject": "Rejeter la requête",
"refresh": "Refraichir"
"remove": "Enlever l'accès",
"refresh": "Refraichir",
"pending": "(En attente)",
"assign": "Assigner",
"submit": "Soumettre"
},
"messenger": {
"close": "Fermer",