mirror of https://github.com/abpframework/abp
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.5 KiB
45 lines
1.5 KiB
import { State, Action, StateContext, Selector } from '@ngxs/store';
|
|
import { GetPermissions, UpdatePermissions } from '../actions/permission-management.actions';
|
|
import { PermissionManagement } from '../models/permission-management';
|
|
import { PermissionManagementService } from '../services/permission-management.service';
|
|
import { tap } from 'rxjs/operators';
|
|
import { Injectable } from '@angular/core';
|
|
|
|
@State<PermissionManagement.State>({
|
|
name: 'PermissionManagementState',
|
|
defaults: { permissionRes: {} } as PermissionManagement.State,
|
|
})
|
|
@Injectable()
|
|
export class PermissionManagementState {
|
|
@Selector()
|
|
static getPermissionGroups({ permissionRes }: PermissionManagement.State) {
|
|
return permissionRes.groups || [];
|
|
}
|
|
|
|
@Selector()
|
|
static getEntityDisplayName({ permissionRes }: PermissionManagement.State): string {
|
|
return permissionRes.entityDisplayName;
|
|
}
|
|
|
|
constructor(private permissionManagementService: PermissionManagementService) {}
|
|
|
|
@Action(GetPermissions)
|
|
permissionManagementGet(
|
|
{ patchState }: StateContext<PermissionManagement.State>,
|
|
{ payload }: GetPermissions,
|
|
) {
|
|
return this.permissionManagementService.getPermissions(payload).pipe(
|
|
tap(permissionResponse =>
|
|
patchState({
|
|
permissionRes: permissionResponse,
|
|
}),
|
|
),
|
|
);
|
|
}
|
|
|
|
@Action(UpdatePermissions)
|
|
permissionManagementUpdate(_, { payload }: UpdatePermissions) {
|
|
return this.permissionManagementService.updatePermissions(payload);
|
|
}
|
|
}
|