add user role limit
This commit is contained in:
parent
66e233a11c
commit
394d607163
|
|
@ -48,5 +48,7 @@ public interface IAgentService
|
|||
string GetDataDir();
|
||||
string GetAgentDataDir(string agentId);
|
||||
|
||||
List<Agent> GetAgentsByUser(string userId);
|
||||
|
||||
PluginDef GetPlugin(string agentId);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
using BotSharp.Abstraction.Repositories.Enums;
|
||||
using BotSharp.Abstraction.Routing.Models;
|
||||
using BotSharp.Abstraction.Users.Enums;
|
||||
using System.IO;
|
||||
|
||||
namespace BotSharp.Core.Agents.Services;
|
||||
|
|
@ -8,6 +9,10 @@ public partial class AgentService
|
|||
{
|
||||
public async Task UpdateAgent(Agent agent, AgentField updateField)
|
||||
{
|
||||
var userService = _services.GetRequiredService<IUserService>();
|
||||
var user = await userService.GetUser(_user.Id);
|
||||
if (user?.Role != UserRole.Admin) return;
|
||||
|
||||
if (agent == null || string.IsNullOrEmpty(agent.Id)) return;
|
||||
|
||||
var record = _db.GetAgent(agent.Id);
|
||||
|
|
|
|||
|
|
@ -47,4 +47,10 @@ public partial class AgentService : IAgentService
|
|||
}
|
||||
return dir;
|
||||
}
|
||||
|
||||
public List<Agent> GetAgentsByUser(string userId)
|
||||
{
|
||||
var agents = _db.GetAgentsByUser(userId);
|
||||
return agents;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ public partial class FileRepository
|
|||
{
|
||||
var userId = Guid.NewGuid().ToString();
|
||||
user.Id = userId;
|
||||
user.Role = UserRole.Admin;
|
||||
var dir = Path.Combine(_dbSettings.FileRepository, "users", userId);
|
||||
if (!Directory.Exists(dir))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,3 @@
|
|||
using BotSharp.Abstraction.Repositories;
|
||||
using BotSharp.Abstraction.Users.Models;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
|
|
|
|||
|
|
@ -50,17 +50,16 @@ public class AgentController : ControllerBase
|
|||
rule.RedirectToAgentName = found.Name;
|
||||
}
|
||||
|
||||
var editable = false;
|
||||
var editable = true;
|
||||
var userService = _services.GetRequiredService<IUserService>();
|
||||
var user = await userService.GetUser(_user.Id);
|
||||
if (user != null && user.Role != UserRole.Admin)
|
||||
if (user?.Role != UserRole.Admin)
|
||||
{
|
||||
var db = _services.GetRequiredService<IBotSharpRepository>();
|
||||
var userAgents = db.GetAgentsByUser(user.Id);
|
||||
var userAgents = _agentService.GetAgentsByUser(user?.Id);
|
||||
editable = userAgents?.Select(x => x.Id)?.Contains(targetAgent.Id) ?? false;
|
||||
}
|
||||
|
||||
targetAgent.Editable = editable || user?.Role == UserRole.Admin;
|
||||
targetAgent.Editable = editable;
|
||||
return targetAgent;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -50,9 +50,7 @@ public class ConversationController : ControllerBase
|
|||
filter.UserId = user.Role != UserRole.Admin ? user.Id : null;
|
||||
var conversations = await convService.GetConversations(filter);
|
||||
var agentService = _services.GetRequiredService<IAgentService>();
|
||||
var list = conversations.Items
|
||||
.Select(x => ConversationViewModel.FromSession(x))
|
||||
.ToList();
|
||||
var list = conversations.Items.Select(x => ConversationViewModel.FromSession(x)).ToList();
|
||||
|
||||
foreach (var item in list)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using BotSharp.Abstraction.Plugins.Models;
|
||||
using BotSharp.Abstraction.Users.Enums;
|
||||
using BotSharp.Core.Plugins;
|
||||
|
||||
namespace BotSharp.OpenAPI.Controllers;
|
||||
|
|
@ -8,38 +9,50 @@ namespace BotSharp.OpenAPI.Controllers;
|
|||
public class PluginController : ControllerBase
|
||||
{
|
||||
private readonly IServiceProvider _services;
|
||||
private readonly IUserIdentity _user;
|
||||
private readonly PluginSettings _settings;
|
||||
|
||||
public PluginController(IServiceProvider services, PluginSettings settings)
|
||||
public PluginController(IServiceProvider services, IUserIdentity user, PluginSettings settings)
|
||||
{
|
||||
_services = services;
|
||||
_user = user;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
[HttpGet("/plugins")]
|
||||
public PagedItems<PluginDef> GetPlugins([FromQuery] PluginFilter filter)
|
||||
public async Task<PagedItems<PluginDef>> GetPlugins([FromQuery] PluginFilter filter)
|
||||
{
|
||||
var userService = _services.GetRequiredService<IUserService>();
|
||||
var user = await userService.GetUser(_user.Id);
|
||||
if (user?.Role != UserRole.Admin)
|
||||
{
|
||||
return new PagedItems<PluginDef>();
|
||||
}
|
||||
|
||||
var loader = _services.GetRequiredService<PluginLoader>();
|
||||
return loader.GetPagedPlugins(_services, filter);
|
||||
}
|
||||
|
||||
[HttpGet("/plugin/menu")]
|
||||
public List<PluginMenuDef> GetPluginMenu()
|
||||
public async Task<List<PluginMenuDef>> GetPluginMenu()
|
||||
{
|
||||
var menu = new List<PluginMenuDef>
|
||||
{
|
||||
new PluginMenuDef("Apps", weight: 5)
|
||||
{
|
||||
IsHeader = true,
|
||||
},
|
||||
new PluginMenuDef("System", weight: 30)
|
||||
{
|
||||
IsHeader = true
|
||||
},
|
||||
new PluginMenuDef("Plugins", link: "page/plugin", icon: "bx bx-plug", weight: 31),
|
||||
new PluginMenuDef("Settings", link: "page/setting", icon: "bx bx-cog", weight: 32),
|
||||
}
|
||||
};
|
||||
|
||||
var userService = _services.GetRequiredService<IUserService>();
|
||||
var user = await userService.GetUser(_user.Id);
|
||||
if (user?.Role == UserRole.Admin)
|
||||
{
|
||||
menu.Add(new PluginMenuDef("System", weight: 30) { IsHeader = true });
|
||||
menu.Add(new PluginMenuDef("Plugins", link: "page/plugin", icon: "bx bx-plug", weight: 31));
|
||||
menu.Add(new PluginMenuDef("Settings", link: "page/setting", icon: "bx bx-cog", weight: 32));
|
||||
}
|
||||
|
||||
var loader = _services.GetRequiredService<PluginLoader>();
|
||||
foreach (var plugin in loader.GetPlugins(_services))
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue