Browse Source

feat: bind product permissions

ipaddr
bnymncoskuner 5 years ago
parent
commit
4c576f3d05
  1. 8
      apps/angular/projects/catalog/config/src/enums/policy-names.ts
  2. 7
      apps/angular/projects/catalog/config/src/providers/route.provider.ts
  3. 20
      apps/angular/projects/catalog/src/pages/product/product.component.html
  4. 7
      apps/angular/projects/catalog/src/pages/product/product.component.ts

8
apps/angular/projects/catalog/config/src/enums/policy-names.ts

@ -1,4 +1,8 @@
export const enum eCatalogPolicyNames {
Catalog = 'AbpCatalog.ProductManagement',
ProductManagement = 'AbpCatalog.ProductManagement',
Catalog = 'CatalogService.Products',
ProductManagement = 'CatalogService.Products',
ProductManagementCreate = 'CatalogService.Products.Create',
ProductManagementUpdate = 'CatalogService.Products.Update',
ProductManagementDelete = 'CatalogService.Products.Delete',
}

7
apps/angular/projects/catalog/config/src/providers/route.provider.ts

@ -1,5 +1,6 @@
import { eLayoutType, RoutesService } from '@abp/ng.core';
import { APP_INITIALIZER } from '@angular/core';
import { eCatalogPolicyNames } from '../enums/policy-names';
import { eCatalogRouteNames } from '../enums/route-names';
export const CATALOG_ROUTE_PROVIDERS = [
@ -15,16 +16,14 @@ export function configureRoutes(routesService: RoutesService) {
layout: eLayoutType.application,
// TODO: find icon
iconClass: 'fa fa-users',
// TODO: add this policy
// requiredPolicy: eCatalogPolicyNames.Catalog,
requiredPolicy: eCatalogPolicyNames.Catalog,
},
{
path: '/catalog/products',
name: eCatalogRouteNames.ProductManagement,
parentName: eCatalogRouteNames.Catalog,
order: 1,
// TODO: add this policy
// requiredPolicy: eCatalogPolicyNames.ProductManagement,
requiredPolicy: eCatalogPolicyNames.ProductManagement,
},
]);
};

20
apps/angular/projects/catalog/src/pages/product/product.component.html

@ -5,7 +5,7 @@
<h5 class="card-title">{{ 'AbpCatalog::Products' | abpLocalization }}</h5>
</div>
<div class="text-end col col-md-6">
<button class="btn btn-primary" (click)="onCreate()">
<button class="btn btn-primary" (click)="onCreate()" *abpPermission="permissions.create">
{{ 'AbpCatalog::NewProduct' | abpLocalization }}
</button>
</div>
@ -14,7 +14,11 @@
<div class="card-body">
<ngx-datatable [rows]="items" [count]="count" [list]="list" default>
<!-- TODO: localize column headers -->
<ngx-datatable-column [name]="'AbpUi::Actions' | abpLocalization" [sortable]="false">
<ngx-datatable-column
[name]="'AbpUi::Actions' | abpLocalization"
[sortable]="false"
*abpPermission="permissions.update + ' || ' + permissions.delete"
>
<ng-template let-row="row" ngx-datatable-cell-template>
<div ngbDropdown container="body" class="d-inline-block">
<button
@ -26,10 +30,18 @@
<i class="me-1 fa fa-cog"></i>{{ 'AbpUi::Actions' | abpLocalization }}
</button>
<div ngbDropdownMenu>
<button class="dropdown-item" (click)="onEdit(row)">
<button
class="dropdown-item"
(click)="onEdit(row)"
*abpPermission="permissions.update"
>
{{ 'AbpUi::Edit' | abpLocalization }}
</button>
<button class="dropdown-item" (click)="onDelete(row)">
<button
class="dropdown-item"
(click)="onDelete(row)"
*abpPermission="permissions.delete"
>
{{ 'AbpUi::Delete' | abpLocalization }}
</button>
</div>

7
apps/angular/projects/catalog/src/pages/product/product.component.ts

@ -1,6 +1,7 @@
import { ListService } from '@abp/ng.core';
import { Confirmation, ConfirmationService } from '@abp/ng.theme.shared';
import { Component, OnInit } from '@angular/core';
import { eCatalogPolicyNames } from '@catalog/config';
import { ProductDto, ProductService } from '@catalog/proxy/products';
@Component({
@ -10,6 +11,12 @@ import { ProductDto, ProductService } from '@catalog/proxy/products';
providers: [ListService],
})
export class ProductComponent implements OnInit {
permissions = {
create: eCatalogPolicyNames.ProductManagementCreate,
update: eCatalogPolicyNames.ProductManagementUpdate,
delete: eCatalogPolicyNames.ProductManagementDelete,
};
items: ProductDto[] = [];
count = 0;

Loading…
Cancel
Save