private PermissionSetDO GetOrCreateDefaultSecurityPermissionSet(string dataObjectType, List <PermissionType> customPermissionTypes = null) { // this method use injected UnitOfWork instance in order to work properly once being called from MigrationConfiguration var defaultPermissions = customPermissionTypes?.Select(x => (int)x).ToArray() ?? new[] { (int)PermissionType.ReadObject, (int)PermissionType.EditObject, (int)PermissionType.CreateObject, (int)PermissionType.DeleteObject, (int)PermissionType.RunObject }; var defaultPermissionsCount = defaultPermissions.Length; //check for existing permission set with this default permissions var permissionSet = _uow.PermissionSetRepository.GetQuery().FirstOrDefault(x => x.ObjectType == dataObjectType && x.Permissions.Count == defaultPermissionsCount && x.Permissions.All(t => defaultPermissions.Contains(t.Id))); if (permissionSet != null) { return(permissionSet); } permissionSet = new PermissionSetDO() { Id = Guid.NewGuid(), Name = Roles.OwnerOfCurrentObject, ObjectType = dataObjectType, }; var repo = new GenericRepository <_PermissionTypeTemplate>(_uow); foreach (var permission in defaultPermissions) { permissionSet.Permissions.Add(repo.GetQuery().FirstOrDefault(x => x.Id == permission)); } _uow.PermissionSetRepository.Add(permissionSet); _uow.SaveChanges(); return(permissionSet); }
public RolePermission() { PermissionSet = new PermissionSetDO(); Role = new RoleDO(); }