using HermesSocketLibrary.Requests.Messages; using HermesSocketServer.Models; using ILogger = Serilog.ILogger; namespace HermesSocketServer.Requests { public class CreateGroupPermission : IRequest { public string Name => "create_group_permission"; public string[] RequiredKeys => ["group", "path", "allow"]; private ILogger _logger; public CreateGroupPermission(ILogger logger) { _logger = logger; } public Task Grant(Channel channel, IDictionary data) { var id = Guid.NewGuid(); string groupId = data["group"].ToString()!; string path = data["path"].ToString()!; bool? allow = bool.TryParse(data["allow"].ToString()!, out bool a) ? a : null; var permission = new GroupPermission() { Id = id.ToString(), UserId = channel.Id, GroupId = groupId, Path = path, Allow = allow, }; bool result = channel.GroupPermissions.Set(id.ToString(), permission); if (result) { _logger.Information($"Added group permission to channel [permission id: {id}][group id: {groupId}][path: {path}][allow: {allow}][channel: {channel.Id}]"); return Task.FromResult(RequestResult.Successful(permission)); } return Task.FromResult(RequestResult.Failed("Something went wrong when updating the cache.")); } } }