refine code
This commit is contained in:
parent
d0b7e08cfe
commit
39bd401c4f
|
|
@ -144,7 +144,7 @@ public partial class FileRepository
|
|||
|
||||
var userFile = Path.Combine(dir, USER_FILE);
|
||||
user.UpdatedTime = DateTime.UtcNow;
|
||||
File.WriteAllText(_dbSettings.FileRepository, JsonSerializer.Serialize(user, _options));
|
||||
File.WriteAllText(userFile, JsonSerializer.Serialize(user, _options));
|
||||
|
||||
if (isUpdateUserAgents)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -76,12 +76,24 @@ public class AgentController : ControllerBase
|
|||
}
|
||||
|
||||
[HttpGet("/agents")]
|
||||
public async Task<PagedItems<AgentViewModel>> GetAgents([FromQuery] AgentFilter filter)
|
||||
public async Task<PagedItems<AgentViewModel>> GetAgents([FromQuery] AgentFilter filter, [FromQuery] bool checkAuth = false)
|
||||
{
|
||||
var agentSetting = _services.GetRequiredService<AgentSettings>();
|
||||
var userService = _services.GetRequiredService<IUserService>();
|
||||
|
||||
List<AgentViewModel> agents;
|
||||
var pagedAgents = await _agentService.GetAgents(filter);
|
||||
|
||||
if (!checkAuth)
|
||||
{
|
||||
agents = pagedAgents?.Items?.Select(x => AgentViewModel.FromAgent(x))?.ToList() ?? [];
|
||||
return new PagedItems<AgentViewModel>
|
||||
{
|
||||
Items = agents,
|
||||
Count = pagedAgents?.Count ?? 0
|
||||
};
|
||||
}
|
||||
|
||||
var userAgents = new List<UserAgent>();
|
||||
var user = await userService.GetUser(_user.Id);
|
||||
if (!UserConstant.AdminRoles.Contains(user.Role))
|
||||
|
|
@ -89,16 +101,19 @@ public class AgentController : ControllerBase
|
|||
userAgents = await _agentService.GetUserAgents(user.Id);
|
||||
}
|
||||
|
||||
var agents = pagedAgents?.Items?.Select(x =>
|
||||
agents = pagedAgents?.Items?.Select(x =>
|
||||
{
|
||||
var chatable = true;
|
||||
var editable = true;
|
||||
if (!UserConstant.AdminRoles.Contains(user.Role))
|
||||
{
|
||||
var actions = userAgents.FirstOrDefault(a => a.AgentId == x.Id)?.Actions ?? [];
|
||||
chatable = actions.Contains(UserAction.Chat);
|
||||
editable = actions.Contains(UserAction.Edit);
|
||||
}
|
||||
|
||||
var model = AgentViewModel.FromAgent(x);
|
||||
model.Editable = editable;
|
||||
model.Chatable = chatable;
|
||||
return model;
|
||||
})?.ToList() ?? [];
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ namespace BotSharp.OpenAPI.ViewModels.Users;
|
|||
public class UserAgentActionViewModel
|
||||
{
|
||||
[JsonPropertyName("id")]
|
||||
public string Id { get; set; }
|
||||
public string? Id { get; set; }
|
||||
|
||||
[JsonPropertyName("agent_id")]
|
||||
public string AgentId { get; set; }
|
||||
|
|
|
|||
|
|
@ -237,7 +237,9 @@ public partial class MongoRepository
|
|||
|
||||
var userFilter = Builders<UserDocument>.Filter.Eq(x => x.Id, user.Id);
|
||||
var userUpdate = Builders<UserDocument>.Update
|
||||
.Set(x => x.Type, user.Type)
|
||||
.Set(x => x.Role, user.Role)
|
||||
.Set(x => x.Permissions, user.Permissions)
|
||||
.Set(x => x.UpdatedTime, DateTime.UtcNow);
|
||||
|
||||
_dc.Users.UpdateOne(userFilter, userUpdate);
|
||||
|
|
@ -254,7 +256,12 @@ public partial class MongoRepository
|
|||
UpdatedTime = DateTime.UtcNow
|
||||
})?.ToList() ?? [];
|
||||
|
||||
_dc.UserAgents.DeleteMany(Builders<UserAgentDocument>.Filter.Nin(x => x.Id, userAgentDocs.Select(x => x.Id)));
|
||||
var toDelete = _dc.UserAgents.Find(Builders<UserAgentDocument>.Filter.And(
|
||||
Builders<UserAgentDocument>.Filter.Eq(x => x.UserId, user.Id),
|
||||
Builders<UserAgentDocument>.Filter.Nin(x => x.Id, userAgentDocs.Select(x => x.Id))
|
||||
)).ToList();
|
||||
|
||||
_dc.UserAgents.DeleteMany(Builders<UserAgentDocument>.Filter.In(x => x.Id, toDelete.Select(x => x.Id)));
|
||||
foreach (var doc in userAgentDocs)
|
||||
{
|
||||
var userAgentFilter = Builders<UserAgentDocument>.Filter.Eq(x => x.Id, doc.Id);
|
||||
|
|
|
|||
Loading…
Reference in a new issue