Fixed group permissions
This commit is contained in:
parent
4d27492e55
commit
d019935392
@ -69,12 +69,12 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
// Check if command can be executed by this chatter.
|
// Check if command can be executed by this chatter.
|
||||||
var command = selectorResult.Command;
|
var command = selectorResult.Command;
|
||||||
long chatterId = long.Parse(message.ChatterUserId);
|
long chatterId = long.Parse(message.ChatterUserId);
|
||||||
if (chatterId != _user.OwnerId)
|
//if (chatterId != _user.OwnerId)
|
||||||
{
|
{
|
||||||
bool executable = command.AcceptCustomPermission ? CanExecute(chatterId, groups, $"tts.command.{com}", selectorResult.Permissions) : false;
|
bool executable = command.AcceptCustomPermission ? CanExecute(chatterId, groups, $"tts.commands.{com}", selectorResult.Permissions) : false;
|
||||||
if (!executable)
|
if (!executable)
|
||||||
{
|
{
|
||||||
_logger.Debug($"Denied permission to use command [chatter id: {chatterId}][command: {com}]");
|
_logger.Warning($"Denied permission to use command [chatter id: {chatterId}][args: {arg}][command type: {command.GetType().Name}]");
|
||||||
return ChatCommandResult.Permission;
|
return ChatCommandResult.Permission;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -116,7 +116,7 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
private bool CanExecute(long chatterId, IEnumerable<string> groups, string path, string[]? additionalPaths)
|
private bool CanExecute(long chatterId, IEnumerable<string> groups, string path, string[]? additionalPaths)
|
||||||
{
|
{
|
||||||
_logger.Debug($"Checking for permission [chatter id: {chatterId}][group: {string.Join(", ", groups)}][path: {path}]{(additionalPaths != null ? "[paths: " + string.Join('|', additionalPaths) + "]" : string.Empty)}");
|
_logger.Debug($"Checking for permission [chatter id: {chatterId}][group: {string.Join(", ", groups)}][path: {path}]{(additionalPaths != null ? "[paths: " + string.Join('|', additionalPaths) + "]" : string.Empty)}");
|
||||||
if (_permissionManager.CheckIfAllowed(groups, path) != false)
|
if (_permissionManager.CheckIfAllowed(groups, path) == true)
|
||||||
{
|
{
|
||||||
if (additionalPaths == null)
|
if (additionalPaths == null)
|
||||||
return true;
|
return true;
|
||||||
|
@ -25,7 +25,7 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
b.CreateVoiceNameParameter("voiceName", true)
|
b.CreateVoiceNameParameter("voiceName", true)
|
||||||
.CreateCommand(new TTSVoiceSelector(_user, _logger))
|
.CreateCommand(new TTSVoiceSelector(_user, _logger))
|
||||||
.CreateMentionParameter("chatter", enabled: true, optional: true)
|
.CreateMentionParameter("chatter", enabled: true, optional: true)
|
||||||
.AddPermission("tts.command.voice.admin")
|
.AddPermission("tts.commands.voice.admin")
|
||||||
.CreateCommand(new TTSVoiceSelectorAdmin(_user, _logger));
|
.CreateCommand(new TTSVoiceSelectorAdmin(_user, _logger));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -56,12 +56,12 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
if (_user.VoicesSelected.ContainsKey(chatterId))
|
if (_user.VoicesSelected.ContainsKey(chatterId))
|
||||||
{
|
{
|
||||||
await hermes.UpdateTTSUser(chatterId, voice.Key);
|
await hermes.UpdateTTSUser(chatterId, voice.Key);
|
||||||
_logger.Debug($"Sent request to create chat TTS voice [voice: {voice.Value}][username: {message.ChatterUserLogin}][reason: command]");
|
_logger.Debug($"Sent request to update chat TTS voice [voice: {voice.Value}][username: {message.ChatterUserLogin}][reason: command]");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await hermes.CreateTTSUser(chatterId, voice.Key);
|
await hermes.CreateTTSUser(chatterId, voice.Key);
|
||||||
_logger.Debug($"Sent request to update chat TTS voice [voice: {voice.Value}][username: {message.ChatterUserLogin}][reason: command]");
|
_logger.Debug($"Sent request to create chat TTS voice [voice: {voice.Value}][username: {message.ChatterUserLogin}][reason: command]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99,12 +99,12 @@ namespace TwitchChatTTS.Chat.Commands
|
|||||||
if (_user.VoicesSelected.ContainsKey(chatterId))
|
if (_user.VoicesSelected.ContainsKey(chatterId))
|
||||||
{
|
{
|
||||||
await hermes.UpdateTTSUser(chatterId, voice.Key);
|
await hermes.UpdateTTSUser(chatterId, voice.Key);
|
||||||
_logger.Debug($"Sent request to create chat TTS voice [voice: {voice.Value}][username: {mention.UserLogin}][reason: command]");
|
_logger.Debug($"Sent request to update chat TTS voice [voice: {voice.Value}][username: {mention.UserLogin}][reason: command]");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
await hermes.CreateTTSUser(chatterId, voice.Key);
|
await hermes.CreateTTSUser(chatterId, voice.Key);
|
||||||
_logger.Debug($"Sent request to update chat TTS voice [voice: {voice.Value}][username: {mention.UserLogin}][reason: command]");
|
_logger.Debug($"Sent request to create chat TTS voice [voice: {voice.Value}][username: {mention.UserLogin}][reason: command]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,30 +18,34 @@ namespace TwitchChatTTS.Chat.Groups.Permissions
|
|||||||
|
|
||||||
public bool? CheckIfAllowed(string path)
|
public bool? CheckIfAllowed(string path)
|
||||||
{
|
{
|
||||||
var res = Get(path)?.Allow;
|
var res = Get(path)!.Allow;
|
||||||
_logger.Debug($"Permission Node GET {path} = {res?.ToString() ?? "null"}");
|
_logger.Debug($"Permission Node GET {path} = {res?.ToString() ?? "null"}");
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? CheckIfDirectAllowed(string path)
|
public bool? CheckIfDirectAllowed(string path)
|
||||||
{
|
{
|
||||||
var res = Get(path)?.DirectAllow;
|
var node = Get(path, nullIfMissing: true);
|
||||||
|
if (node == null)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
var res = node.DirectAllow;
|
||||||
_logger.Debug($"Permission Node GET {path} = {res?.ToString() ?? "null"} [direct]");
|
_logger.Debug($"Permission Node GET {path} = {res?.ToString() ?? "null"} [direct]");
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? CheckIfAllowed(IEnumerable<string> groups, string path)
|
public bool? CheckIfAllowed(IEnumerable<string> groups, string path)
|
||||||
{
|
{
|
||||||
bool overall = false;
|
bool overall = true;
|
||||||
foreach (var group in groups)
|
foreach (var group in groups)
|
||||||
{
|
{
|
||||||
var result = CheckIfAllowed($"{group}.{path}");
|
var result = CheckIfAllowed($"{group}.{path}");
|
||||||
if (result == false)
|
|
||||||
return false;
|
|
||||||
if (result == true)
|
if (result == true)
|
||||||
overall = true;
|
return true;
|
||||||
|
if (result == false)
|
||||||
|
overall = false;
|
||||||
}
|
}
|
||||||
return overall ? true : null;
|
return overall ? null : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool? CheckIfDirectAllowed(IEnumerable<string> groups, string path)
|
public bool? CheckIfDirectAllowed(IEnumerable<string> groups, string path)
|
||||||
@ -83,16 +87,16 @@ namespace TwitchChatTTS.Chat.Groups.Permissions
|
|||||||
public void Set(string path, bool? allow)
|
public void Set(string path, bool? allow)
|
||||||
{
|
{
|
||||||
var node = Get(path, true);
|
var node = Get(path, true);
|
||||||
node.Allow = allow;
|
node!.Allow = allow;
|
||||||
_logger.Debug($"Permission Node ADD {path} = {allow?.ToString() ?? "null"}");
|
_logger.Debug($"Permission Node ADD {path} = {allow?.ToString() ?? "null"}");
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionNode Get(string path, bool edit = false)
|
private PermissionNode? Get(string path, bool edit = false, bool nullIfMissing = false)
|
||||||
{
|
{
|
||||||
return Get(_root, path.ToLower(), edit);
|
return Get(_root, path.ToLower(), edit, nullIfMissing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private PermissionNode Get(PermissionNode node, string path, bool edit)
|
private PermissionNode? Get(PermissionNode node, string path, bool edit, bool nullIfMissing)
|
||||||
{
|
{
|
||||||
if (path.Length == 0)
|
if (path.Length == 0)
|
||||||
return node;
|
return node;
|
||||||
@ -103,12 +107,12 @@ namespace TwitchChatTTS.Chat.Groups.Permissions
|
|||||||
if (next == null)
|
if (next == null)
|
||||||
{
|
{
|
||||||
if (!edit)
|
if (!edit)
|
||||||
return node;
|
return nullIfMissing ? null : node;
|
||||||
|
|
||||||
next = new PermissionNode(name, node, null);
|
next = new PermissionNode(name, node, null);
|
||||||
node.Add(next);
|
node.Add(next);
|
||||||
}
|
}
|
||||||
return Get(next, string.Join('.', parts.Skip(1)), edit);
|
return Get(next, string.Join('.', parts.Skip(1)), edit, nullIfMissing);
|
||||||
}
|
}
|
||||||
|
|
||||||
private sealed class PermissionNode
|
private sealed class PermissionNode
|
||||||
|
Loading…
Reference in New Issue
Block a user