mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-10 13:44:30 +00:00
rework worker permissions
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
9
web/angular/src/app/models/worker-access.ts
Normal file
9
web/angular/src/app/models/worker-access.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import {Worker} from "./worker"
|
||||
|
||||
export interface WorkerAccess {
|
||||
submit: boolean
|
||||
assign: boolean
|
||||
request: boolean
|
||||
worker: Worker
|
||||
project: number
|
||||
}
|
||||
@@ -2,3 +2,7 @@
|
||||
button {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.request {
|
||||
color: #757575;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user