feat: generate permission-management proxies

#5182
pull/5391/head
mehmet-erim 5 years ago
parent f9691141c1
commit 882e4e44db

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

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

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

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

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

@ -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[];
}

@ -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) {}
}

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

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

Loading…
Cancel
Save