feat: 取消校验文件权限

不是核心问题,文件权限失败时手动处理
This commit is contained in:
zerlei 2024-09-09 08:59:33 +08:00
parent cb05dc8215
commit 63452fe1ab

View file

@ -363,6 +363,7 @@ public class Dir(string path, List<AFileOrDir>? children = null, NextOpType? nex
{ {
static void f(Dir dir, FileDirOpStra fileDirOp) static void f(Dir dir, FileDirOpStra fileDirOp)
{ {
dir.AccessCheck();
foreach (var child in dir.Children) foreach (var child in dir.Children)
{ {
if (child.Type == DirOrFile.Dir) if (child.Type == DirOrFile.Dir)
@ -394,86 +395,88 @@ public class Dir(string path, List<AFileOrDir>? children = null, NextOpType? nex
/// </summary> /// </summary>
private void AccessCheck() private void AccessCheck()
{ {
this.Children.ForEach(e => //不是核心关注点下面实现有bug。不校验所有文件夹权限创建时会抛出错误此时手动处理吧。
{ return;
if (e is File file) //this.Children.ForEach(e =>
{ //{
if (file.NextOp == null) { } // if (e is File file)
else if (file.NextOp == NextOpType.Add) // {
{ // if (file.NextOp == null) { }
if ( // else if (file.NextOp == NextOpType.Add)
!AccessWrapper.CheckDirAccess( // {
Path.GetDirectoryName(file.FormatedPath) // if (
?? throw new DirectoryNotFoundException( // !AccessWrapper.CheckDirAccess(
$"{file.FormatedPath} 此父路径不存在" // Path.GetDirectoryName(file.FormatedPath)
), // ?? throw new DirectoryNotFoundException(
[DirAcess.CreateFiles] // $"{file.FormatedPath} 此父路径不存在"
) // ),
) // [DirAcess.CreateFiles]
{ // )
throw new UnauthorizedAccessException($"{file.FormatedPath} 无权限创建文件"); // )
} // {
} // throw new UnauthorizedAccessException($"{file.FormatedPath} 无权限创建文件");
else if (file.NextOp == NextOpType.Modify) // }
{ // }
if ( // else if (file.NextOp == NextOpType.Modify)
!( // {
AccessWrapper.CheckFileAccess(file.FormatedPath, [FileAccess.Delete]) // if (
&& AccessWrapper.CheckDirAccess( // !(
Path.GetDirectoryName(file.FormatedPath) // AccessWrapper.CheckFileAccess(file.FormatedPath, [FileAccess.Delete])
?? throw new DirectoryNotFoundException( // && AccessWrapper.CheckDirAccess(
$"{file.FormatedPath} 此父路径不存在" // Path.GetDirectoryName(file.FormatedPath)
), // ?? throw new DirectoryNotFoundException(
[DirAcess.CreateFiles] // $"{file.FormatedPath} 此父路径不存在"
) // ),
) // [DirAcess.CreateFiles]
) // )
{ // )
throw new UnauthorizedAccessException( // )
$"{file.FormatedPath} 无权限删除源文件或者创建新文件" // {
); // throw new UnauthorizedAccessException(
} // $"{file.FormatedPath} 无权限删除源文件或者创建新文件"
} // );
else if (file.NextOp == NextOpType.Del) // }
{ // }
if (!AccessWrapper.CheckFileAccess(file.FormatedPath, [FileAccess.Delete])) // else if (file.NextOp == NextOpType.Del)
{ // {
throw new UnauthorizedAccessException($"{file.FormatedPath} 无权限删除源文件"); // if (!AccessWrapper.CheckFileAccess(file.FormatedPath, [FileAccess.Delete]))
} // {
} // throw new UnauthorizedAccessException($"{file.FormatedPath} 无权限删除源文件");
} // }
else if (e is Dir dir) // }
{ // }
if (dir.NextOp == null) { } // else if (e is Dir dir)
else if (dir.NextOp == NextOpType.Add) // {
{ // if (dir.NextOp == null) { }
if ( // else if (dir.NextOp == NextOpType.Add)
!AccessWrapper.CheckDirAccess( // {
Path.GetDirectoryName(dir.FormatedPath) // if (
?? throw new DirectoryNotFoundException( // !AccessWrapper.CheckDirAccess(
$"{dir.FormatedPath} 此父路径不存在" // Path.GetDirectoryName(dir.FormatedPath)
), // ?? throw new DirectoryNotFoundException(
[DirAcess.CreateDirectories, DirAcess.CreateFiles] // $"{dir.FormatedPath} 此父路径不存在"
) // ),
) // [DirAcess.CreateDirectories, DirAcess.CreateFiles]
{ // )
throw new UnauthorizedAccessException($"{dir.FormatedPath} 无权限创建文件夹或者文件"); // )
} // {
} // throw new UnauthorizedAccessException($"{dir.FormatedPath} 无权限创建文件夹或者文件");
else if (dir.NextOp == NextOpType.Del) // }
{ // }
if (!AccessWrapper.CheckDirAccess(dir.FormatedPath, [DirAcess.Delete])) // else if (dir.NextOp == NextOpType.Del)
{ // {
throw new UnauthorizedAccessException($"{dir.FormatedPath} 无权限删除文件夹"); // if (!AccessWrapper.CheckDirAccess(dir.FormatedPath, [DirAcess.Delete]))
} // {
else // throw new UnauthorizedAccessException($"{dir.FormatedPath} 无权限删除文件夹");
{ // }
//校验是否拥有子文件或者文件夹的删除权限, // else
dir.AccessCheck(); // {
} // //校验是否拥有子文件或者文件夹的删除权限,
} // dir.AccessCheck();
} // }
}); // }
// }
//});
} }
/// <summary> /// <summary>