more tweaks for low permissions scenarios
authorGalen Charlton <gmc@equinoxinitiative.org>
Tue, 1 Sep 2020 15:34:39 +0000 (11:34 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Tue, 1 Sep 2020 15:34:39 +0000 (11:34 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/eg2/src/app/staff/acq/provider/acq-provider.component.html
Open-ILS/src/eg2/src/app/staff/acq/provider/provider-record.service.ts
Open-ILS/src/eg2/src/app/staff/acq/provider/summary-pane.component.ts

index c96092f..d4fa8d1 100644 (file)
@@ -14,7 +14,7 @@
 <div class="col">
 <div class="row mb-2">
   <div class="col-lg">
-    <h3 i18n *ngIf="id && !showSearchForm">{{providerRecord.currentProvider.record.name()}} ({{providerRecord.currentProvider.record.code()}})</h3>
+    <h3 i18n *ngIf="id && !showSearchForm">{{providerRecord.currentProvider?.record.name()}} ({{providerRecord.currentProvider?.record.code()}})</h3>
   </div>
   <div class="col-lg-auto">
     <div class="btn-toolbar" role="toolbar">
@@ -23,7 +23,7 @@
         <button class="btn btn-primary" [hidden]="!showSearchForm"  (click)="showSearchForm = !showSearchForm" i18n>Hide Search Form</button>
       </div>
       <div class="button-grp mr-2">
-        <button class="btn btn-primary" (click)="createNew()" i18n>New Provider</button>
+        <button class="btn btn-primary" (click)="createNew()" [disabled]="!providerRecord.checkIfCanAdminAtAll()" i18n>New Provider</button>
       </div>
     </div>
   </div>
@@ -34,7 +34,7 @@
   </div>
 </div>
 
-<h3 i18n *ngIf="id && showSearchForm">{{providerRecord.currentProvider.record.name()}} ({{providerRecord.currentProvider.record.code()}})</h3>
+<h3 i18n *ngIf="id && showSearchForm">{{providerRecord.currentProvider?.record.name()}} ({{providerRecord.currentProvider?.record.code()}})</h3>
 <div class="row">
 <div class="col-lg-auto">
   <eg-acq-provider-summary-pane #acqSearchProviderSummary
@@ -57,7 +57,7 @@
           <eg-provider-details #providerDetails (desireSummarize)="onDesireSummarize($event, true)"></eg-provider-details>
         </ng-template>
       </ngb-tab>
-      <ngb-tab title="Addresses" i18n-title id="addresses" [disabled]="!id || !this.providerRecord.currentProvider.canAdmin">
+      <ngb-tab title="Addresses" i18n-title id="addresses" [disabled]="!id || !this.providerRecord.currentProvider || !this.providerRecord.currentProvider.canAdmin">
         <ng-template ngbTabContent>
           <div class="row mt-3">
             <div class="col-lg-12 text-right pb-1">
@@ -68,7 +68,7 @@
           <eg-provider-addresses></eg-provider-addresses>
         </ng-template>
       </ngb-tab>
-      <ngb-tab title="Contacts" i18n-title id="contacts" [disabled]="!id || !this.providerRecord.currentProvider.canAdmin">
+      <ngb-tab title="Contacts" i18n-title id="contacts" [disabled]="!id || !this.providerRecord.currentProvider || !this.providerRecord.currentProvider.canAdmin">
         <ng-template ngbTabContent>
           <div class="row mt-3">
             <div class="col-lg-12 text-right pb-1">
@@ -79,7 +79,7 @@
           <eg-provider-contacts (desireSummarize)="onDesireSummarize($event, true)"></eg-provider-contacts>
         </ng-template>
       </ngb-tab>
-      <ngb-tab title="Attribute Definitions" i18n-title id="attributes" [disabled]="!id || !this.providerRecord.currentProvider.canAdmin">
+      <ngb-tab title="Attribute Definitions" i18n-title id="attributes" [disabled]="!id || !this.providerRecord.currentProvider || !this.providerRecord.currentProvider.canAdmin">
         <ng-template ngbTabContent>
           <div class="row mt-3">
             <div class="col-lg-12 text-right pb-1">
@@ -90,7 +90,7 @@
           <eg-provider-attributes></eg-provider-attributes>
         </ng-template>
       </ngb-tab>
-      <ngb-tab title="Holdings Definitions" i18n-title id="holdings" [disabled]="!id || !this.providerRecord.currentProvider.canAdmin">
+      <ngb-tab title="Holdings Definitions" i18n-title id="holdings" [disabled]="!id || !this.providerRecord.currentProvider || !this.providerRecord.currentProvider.canAdmin">
         <ng-template ngbTabContent>
           <div class="row mt-3">
             <div class="col-lg-12 text-right pb-1">
           <eg-provider-holdings #providerHoldings></eg-provider-holdings>
         </ng-template>
       </ngb-tab>
-      <ngb-tab title="EDI" i18n-title id="edi_accounts" [disabled]="!id || !this.providerRecord.currentProvider.canAdmin">
+      <ngb-tab title="EDI" i18n-title id="edi_accounts" [disabled]="!id || !this.providerRecord.currentProvider || !this.providerRecord.currentProvider.canAdmin">
         <ng-template ngbTabContent>
           <div class="row mt-3">
             <div class="col-lg-12 text-right pb-1">
index e16a9d5..02bc309 100644 (file)
@@ -92,7 +92,7 @@ export class ProviderRecordService {
             });
             this.currentProvider = provider;
             this.checkIfCanDelete(provider);
-            this.checkIfCanManage(provider);
+            this.checkIfCanAdmin(provider);
             return provider;
         }));
     }
@@ -114,13 +114,25 @@ export class ProviderRecordService {
         });
     }
 
-    checkIfCanManage(prov: ProviderRecord) {
+    checkIfCanAdmin(prov: ProviderRecord) {
         if (Object.keys(this.permissions).length > 0 &&
             this.permissions['ADMIN_PROVIDER'].includes(prov.record.owner())) {
             prov.canAdmin = true;
         }
     }
 
+    checkIfCanAdminAtAll(): boolean {
+        if (typeof this.permissions === "undefined") {
+            return false;
+        }
+        if (Object.keys(this.permissions).length > 0 &&
+            this.permissions['ADMIN_PROVIDER'].length > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     current(): IdlObject {
         return this.currentProvider ? this.currentProvider.record : null;
     }
index 929c389..a307ac7 100644 (file)
@@ -197,7 +197,7 @@ export class AcqProviderSummaryPaneComponent implements OnInit, AfterViewInit {
 
     canDeleteProvider() {
         if (this.provider && this.provider.id()) {
-            return this.provRec.canDelete;
+            return this.provRec.canAdmin && this.provRec.canDelete;
         } else {
             return false;
         }