ow
This commit is contained in:
1 parent
fd67fa8f63
commit
211d2cd253
31 files changed
+1830
-454
No files matched your search
@@ -275,6 +275,24 @@ namespace CloudBuilder.Master.Service
|
||||
FamilyGroupPermissionEntity[] permissionEntities = repositoryFamilyGroupPermission.DetachedEntities.Where(x => x.UserName == service.UserId).ToArray();
|
||||
FamilyFolderFavoriteEntity[] favorites = repositoryFamilyFolderFavorite.DetachedEntities.Where(x => x.UserName == service.UserId).ToArray();
|
||||
|
||||
// 管理员权限的唯一出口:本人任管理员的群,所有目录一律有权限(与 FamilyGroupService.FindByKey 管理员视角 IsSharePermission 全 Y 同口径)。
|
||||
// 权限表只记普通成员的授权记录,管理员不逐目录补录——否则别的管理员建的新目录会漏锁(本接口是共享大厅/文件页/共享目标选择器共用的PermissionIndc判定点)
|
||||
IRepository<FamilyGroupManagerEntity> repositoryFamilyGroupManager = repository.GetRepository<IRepository<FamilyGroupManagerEntity>>();
|
||||
string[] managerFamilyNames = repositoryFamilyGroupManager.DetachedEntities
|
||||
.Where(x => x.UserName == service.UserId && x.ManagerIndc == YesNoPolicy.YES && x.ValidIndc == YesNoPolicy.YES)
|
||||
.Select(x => x.FamilyName).Distinct().ToArray();
|
||||
|
||||
// 群组开启「公开成员目录权限」(open_dir_indc=Y):群内所有目录对所有成员开放,与管理员放行同一出口
|
||||
string[] memberFamilyNames = repositoryFamilyGroupManager.DetachedEntities
|
||||
.Where(x => x.UserName == service.UserId && x.ValidIndc == YesNoPolicy.YES)
|
||||
.Select(x => x.FamilyName).Distinct().ToArray();
|
||||
IRepository<FamilyGroupEntity> repositoryFamilyGroup = repository.GetRepository<IRepository<FamilyGroupEntity>>();
|
||||
string[] openDirFamilyNames = memberFamilyNames.Length > 0
|
||||
? repositoryFamilyGroup.DetachedEntities
|
||||
.Where(x => x.OpenDirIndc == YesNoPolicy.YES && memberFamilyNames.AsQueryable().Contains(x.FamilyName))
|
||||
.Select(x => x.FamilyName).ToArray()
|
||||
: new string[0];
|
||||
|
||||
string err = null;
|
||||
try
|
||||
{
|
||||
@@ -293,7 +311,12 @@ namespace CloudBuilder.Master.Service
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
if (permissionEntities != null && permissionEntities.Length > 0)
|
||||
if (managerFamilyNames.Contains(item.FamilyName) || openDirFamilyNames.Contains(item.FamilyName))
|
||||
{
|
||||
// 管理员 / 群开放全部目录:全目录放行
|
||||
item.PermissionIndc = YesNoPolicy.YES;
|
||||
}
|
||||
else if (permissionEntities != null && permissionEntities.Length > 0)
|
||||
{
|
||||
foreach (var p in permissionEntities)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user