public async Task <bool> Handle(SavePermissionCommand request, CancellationToken cancellationToken) { var oldPermissions = await _permissionRepository.GetWhereAsync(x => x.AppliedObjectType == request.AppliedObjectType && request.ValidateObjectType == x.ValidateObjectType && request.AppliedID == x.AppliedID); await _permissionRepository.DeleteRangeAsync(oldPermissions); var newPermissions = request.ObjectPermissions.Select(x => { var bp = new BasalPermission() { AppliedID = request.AppliedID, AppliedObjectID = x.AppliedObjectID, AppliedObjectType = request.AppliedObjectType, ValidateObjectType = request.ValidateObjectType }; foreach (var permission in x.PermissionOpeation) { bp.SetBit(permission, AccessControlEntry.Allow); } return(bp); } ).ToList(); await _permissionRepository.AddRangeAsync(newPermissions); if (await Commit()) { await _bus.RaiseEvent(new RemoveServiceCacheEvent(), cancellationToken); } return(true); }
public static List <string> ConvertPermissionToString(BasalPermission basalPermission) { var list = new List <string>(); foreach (Permission value in typeof(Permission).GetEnumValues()) { if (basalPermission.GetBit(value)) { list.Add(value.ToString()); } } return(list); }