Browse Source

feat: generate permission-management proxies

#5182
pull/5391/head
mehmet-erim 6 years ago
parent
commit
882e4e44db
  1. 4
      npm/ng-packs/apps/dev-app/src/environments/environment.ts
  2. 3
      npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts
  3. 3
      npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts
  4. 15
      npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts
  5. 4210
      npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json
  6. 2
      npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts
  7. 34
      npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts
  8. 29
      npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts
  9. 13
      npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts
  10. 1
      npm/ng-packs/packages/permission-management/src/public-api.ts

4
npm/ng-packs/apps/dev-app/src/environments/environment.ts

@ -26,5 +26,9 @@ export const environment = {
url: 'https://localhost:44305', url: 'https://localhost:44305',
rootNamespace: 'Volo.Abp', rootNamespace: 'Volo.Abp',
}, },
AbpPermissionManagement: {
url: 'https://localhost:44305',
rootNamespace: 'Volo.Abp',
},
}, },
} as Config.Environment; } as Config.Environment;

3
npm/ng-packs/packages/permission-management/src/lib/actions/permission-management.actions.ts

@ -1,4 +1,5 @@
import { PermissionManagement } from '../models/permission-management'; import { PermissionManagement } from '../models/permission-management';
import { UpdatePermissionsDto } from '../proxy/permission-management/models';
export class GetPermissions { export class GetPermissions {
static readonly type = '[PermissionManagement] Get Permissions'; static readonly type = '[PermissionManagement] Get Permissions';
@ -7,5 +8,5 @@ export class GetPermissions {
export class UpdatePermissions { export class UpdatePermissions {
static readonly type = '[PermissionManagement] Update Permissions'; static readonly type = '[PermissionManagement] Update Permissions';
constructor(public payload: PermissionManagement.GrantedProvider & PermissionManagement.UpdateRequest) {} constructor(public payload: PermissionManagement.GrantedProvider & UpdatePermissionsDto) {}
} }

3
npm/ng-packs/packages/permission-management/src/lib/components/permission-management.component.ts

@ -6,6 +6,7 @@ import { Observable, of } from 'rxjs';
import { finalize, map, pluck, switchMap, take, tap } from 'rxjs/operators'; import { finalize, map, pluck, switchMap, take, tap } from 'rxjs/operators';
import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions'; import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions';
import { PermissionManagement } from '../models/permission-management'; import { PermissionManagement } from '../models/permission-management';
import { UpdatePermissionDto } from '../proxy/permission-management/models';
import { PermissionManagementState } from '../states/permission-management.state'; import { PermissionManagementState } from '../states/permission-management.state';
type PermissionWithStyle = PermissionManagement.Permission & { type PermissionWithStyle = PermissionManagement.Permission & {
@ -213,7 +214,7 @@ export class PermissionManagementComponent
this.store.selectSnapshot(PermissionManagementState.getPermissionGroups), this.store.selectSnapshot(PermissionManagementState.getPermissionGroups),
); );
const changedPermissions: PermissionManagement.MinimumPermission[] = this.permissions const changedPermissions: UpdatePermissionDto[] = this.permissions
.filter(per => .filter(per =>
unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted === unchangedPermissions.find(unchanged => unchanged.name === per.name).isGranted ===
per.isGranted per.isGranted

15
npm/ng-packs/packages/permission-management/src/lib/models/permission-management.ts

@ -5,22 +5,34 @@ export namespace PermissionManagement {
permissionRes: Response; permissionRes: Response;
} }
/**
* @deprecated To be deleted in v4.0.
*/
export interface Response { export interface Response {
entityDisplayName: string; entityDisplayName: string;
groups: Group[]; groups: Group[];
} }
/**
* @deprecated To be deleted in v4.0.
*/
export interface Group { export interface Group {
name: string; name: string;
displayName: string; displayName: string;
permissions: Permission[]; permissions: Permission[];
} }
/**
* @deprecated To be deleted in v4.0.
*/
export interface MinimumPermission { export interface MinimumPermission {
name: string; name: string;
isGranted: boolean; isGranted: boolean;
} }
/**
* @deprecated To be deleted in v4.0.
*/
export interface Permission extends MinimumPermission { export interface Permission extends MinimumPermission {
displayName: string; displayName: string;
parentName: string; parentName: string;
@ -33,6 +45,9 @@ export namespace PermissionManagement {
providerKey: string; providerKey: string;
} }
/**
* @deprecated To be deleted in v4.0.
*/
export interface UpdateRequest { export interface UpdateRequest {
permissions: MinimumPermission[]; permissions: MinimumPermission[];
} }

4210
npm/ng-packs/packages/permission-management/src/lib/proxy/generate-proxy.json

File diff suppressed because it is too large

2
npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/index.ts

@ -0,0 +1,2 @@
export * from './models';
export * from './permissions.service';

34
npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/models.ts

@ -0,0 +1,34 @@
export interface GetPermissionListResultDto {
entityDisplayName: string;
groups: PermissionGroupDto[];
}
export interface PermissionGrantInfoDto {
name: string;
displayName: string;
parentName: string;
isGranted: boolean;
allowedProviders: string[];
grantedProviders: ProviderInfoDto[];
}
export interface PermissionGroupDto {
name: string;
displayName: string;
permissions: PermissionGrantInfoDto[];
}
export interface ProviderInfoDto {
providerName: string;
providerKey: string;
}
export interface UpdatePermissionDto {
name: string;
isGranted: boolean;
}
export interface UpdatePermissionsDto {
permissions: UpdatePermissionDto[];
}

29
npm/ng-packs/packages/permission-management/src/lib/proxy/permission-management/permissions.service.ts

@ -0,0 +1,29 @@
import type { GetPermissionListResultDto, UpdatePermissionsDto } from './models';
import { RestService } from '@abp/ng.core';
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class PermissionsService {
apiName = 'AbpPermissionManagement';
get = (providerName: string, providerKey: string) =>
this.restService.request<any, GetPermissionListResultDto>({
method: 'GET',
url: '/api/permission-management/permissions',
params: { providerName, providerKey },
},
{ apiName: this.apiName });
update = (providerName: string, providerKey: string, input: UpdatePermissionsDto) =>
this.restService.request<any, void>({
method: 'PUT',
url: '/api/permission-management/permissions',
params: { providerName, providerKey },
body: input,
},
{ apiName: this.apiName });
constructor(private restService: RestService) {}
}

13
npm/ng-packs/packages/permission-management/src/lib/states/permission-management.state.ts

@ -4,6 +4,7 @@ import { PermissionManagement } from '../models/permission-management';
import { PermissionManagementService } from '../services/permission-management.service'; import { PermissionManagementService } from '../services/permission-management.service';
import { tap } from 'rxjs/operators'; import { tap } from 'rxjs/operators';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { PermissionsService } from '../proxy/permission-management/permissions.service';
@State<PermissionManagement.State>({ @State<PermissionManagement.State>({
name: 'PermissionManagementState', name: 'PermissionManagementState',
@ -21,14 +22,16 @@ export class PermissionManagementState {
return permissionRes.entityDisplayName; return permissionRes.entityDisplayName;
} }
constructor(private permissionManagementService: PermissionManagementService) {} constructor(private service: PermissionsService) {}
@Action(GetPermissions) @Action(GetPermissions)
permissionManagementGet( permissionManagementGet(
{ patchState }: StateContext<PermissionManagement.State>, { patchState }: StateContext<PermissionManagement.State>,
{ payload }: GetPermissions, {
payload: { providerKey, providerName } = {} as PermissionManagement.GrantedProvider,
}: GetPermissions,
) { ) {
return this.permissionManagementService.getPermissions(payload).pipe( return this.service.get(providerName, providerKey).pipe(
tap(permissionResponse => tap(permissionResponse =>
patchState({ patchState({
permissionRes: permissionResponse, permissionRes: permissionResponse,
@ -39,6 +42,8 @@ export class PermissionManagementState {
@Action(UpdatePermissions) @Action(UpdatePermissions)
permissionManagementUpdate(_, { payload }: UpdatePermissions) { permissionManagementUpdate(_, { payload }: UpdatePermissions) {
return this.permissionManagementService.updatePermissions(payload); return this.service.update(payload.providerName, payload.providerKey, {
permissions: payload.permissions,
});
} }
} }

1
npm/ng-packs/packages/permission-management/src/public-api.ts

@ -9,3 +9,4 @@ export * from './lib/enums/components';
export * from './lib/models'; export * from './lib/models';
export * from './lib/services'; export * from './lib/services';
export * from './lib/states'; export * from './lib/states';
export * from './lib/proxy/permission-management';

Loading…
Cancel
Save