perf: 优化主题权限

This commit is contained in:
橙子
2025-01-19 13:14:08 +08:00
parent e05514bc41
commit 7b5bc0fe3e
5 changed files with 37 additions and 36 deletions

View File

@@ -109,7 +109,7 @@ namespace Yi.Framework.Bbs.Application.Services.Forum
item.IsAgree = agreeCreatorList.Contains(CurrentUser.Id);
}
await VerifyDiscussPermissionAsync(item.Id);
await _forumManager.VerifyDiscussPermissionAsync(item.Id,CurrentUser.Id);
await _localEventBus.PublishAsync(new SeeDiscussEventArgs
{ DiscussId = item.Id, OldSeeNum = item.SeeNum });
return item;
@@ -260,37 +260,5 @@ namespace Yi.Framework.Bbs.Application.Services.Forum
var entity = await _forumManager.CreateDiscussAsync(await MapToEntityAsync(input));
return await MapToGetOutputDtoAsync(entity);
}
/// <summary>
/// 校验主题查询权限
/// </summary>
/// <param name="discussId"></param>
/// <returns></returns>
/// <exception cref="UserFriendlyException"></exception>
public async Task VerifyDiscussPermissionAsync(Guid discussId)
{
var discuss = await _forumManager._discussRepository.GetFirstAsync(x => x.Id == discussId);
if (discuss is null)
{
throw new UserFriendlyException(DiscussConst.No_Exist);
}
if (discuss.PermissionType == DiscussPermissionTypeEnum.Oneself)
{
if (discuss.CreatorId != CurrentUser.Id)
{
throw new UserFriendlyException(DiscussConst.Privacy);
}
}
if (discuss.PermissionType == DiscussPermissionTypeEnum.User)
{
if (discuss.CreatorId != CurrentUser.Id &&
!discuss.PermissionUserIds.Contains(CurrentUser.Id ?? Guid.Empty))
{
throw new UserFriendlyException(DiscussConst.Privacy);
}
}
}
}
}