From a32916def6dc37b21b9797365afabc29ec9f01de Mon Sep 17 00:00:00 2001 From: Jicheng Lu <103353@smsassist.com> Date: Tue, 11 Jun 2024 16:56:17 -0500 Subject: [PATCH] fix some edge cases --- .../Agents/Services/AgentService.UpdateAgent.cs | 6 +++++- .../Repository/FileRepository/FileRepository.Agent.cs | 1 - .../BotSharp.OpenAPI/Controllers/ConversationController.cs | 4 ++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.UpdateAgent.cs b/src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.UpdateAgent.cs index af6cb65e..daab8916 100644 --- a/src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.UpdateAgent.cs +++ b/src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.UpdateAgent.cs @@ -1,6 +1,8 @@ +using BotSharp.Abstraction.Agents; using BotSharp.Abstraction.Repositories.Enums; using BotSharp.Abstraction.Routing.Models; using BotSharp.Abstraction.Users.Enums; +using Microsoft.EntityFrameworkCore.Metadata; using System.IO; namespace BotSharp.Core.Agents.Services; @@ -11,7 +13,9 @@ public partial class AgentService { var userService = _services.GetRequiredService(); var user = await userService.GetUser(_user.Id); - if (user?.Role != UserRole.Admin) return; + var userAgents = GetAgentsByUser(user?.Id); + var editable = userAgents?.Select(x => x.Id)?.Contains(agent.Id) ?? false; + if (user?.Role != UserRole.Admin && !editable) return; if (agent == null || string.IsNullOrEmpty(agent.Id)) return; diff --git a/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Agent.cs b/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Agent.cs index b7141a5b..3488e0e7 100644 --- a/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Agent.cs +++ b/src/Infrastructure/BotSharp.Core/Repository/FileRepository/FileRepository.Agent.cs @@ -373,7 +373,6 @@ namespace BotSharp.Core.Repository var filter = new AgentFilter { - IsPublic = true, AgentIds = agentIds }; var agents = GetAgents(filter); diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/ConversationController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/ConversationController.cs index c8f573a6..5e3e1c5b 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/ConversationController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/ConversationController.cs @@ -59,7 +59,7 @@ public class ConversationController : ControllerBase user = await userService.GetUser(item.User.Id); item.User = UserViewModel.FromUser(user); var agent = await agentService.GetAgent(item.AgentId); - item.AgentName = agent?.Name; + item.AgentName = agent?.Name ?? "Unkown"; } return new PagedItems @@ -110,7 +110,7 @@ public class ConversationController : ControllerBase Data = message.Data, Sender = new UserViewModel { - FirstName = agent.Name, + FirstName = agent?.Name ?? "Unkown", Role = message.Role, }, RichContent = message.SecondaryRichContent ?? message.RichContent