public static ConfigurationData DefaultConfig()
 {
     return(new ConfigurationData
     {
         Name = "Default",
         LogConfiguration = LogConfigurationData.DefaultConfig(),
         PermissionConfiguration = PermissionConfigurationData.DefaultConfig()
     });
 }
        private bool HasPermission(IPlayer parIPlayer, string parCommandName)
        {
            string permissionToTest;
            PermissionConfigurationData permissionConfiguration = GetConfiguration(parIPlayer?.Id).PermissionConfiguration;

            if (!permissionConfiguration.OverwritedCommandsPermission.TryGetValue(parCommandName, out permissionToTest))
            {
                permissionToTest = AdminPermission;
            }

            return(parIPlayer.HasPermission(permissionToTest));
        }
        private void RegisterPermissionWithOverwriteFromConfiguration(string parPlayerIdString = null)
        {
            // check the new permissions
            Dictionary <string, string> changedPermission = new Dictionary <string, string>();
            List <string> permissionToRegister            = new List <string>()
            {
                AdminPermission
            };
            PermissionConfigurationData permissionConfiguration = GetConfiguration(parPlayerIdString).PermissionConfiguration;

            foreach (var permKeyAndValue in permissionConfiguration.OverwritedCommandsPermission)
            {
                string permissionName = permKeyAndValue.Value;
                if (!permissionName.StartsWith(PluginNameLowered))
                {
                    permissionName = PluginNameLowered + "." + permissionName;
                    changedPermission[permKeyAndValue.Key] = permissionName;
                }

                SendMessage(LogLevel.Log, $"Command= '{permKeyAndValue.Key}', overridedPermission= '{permissionName}'", parPlayerIdString);
                if (!permissionToRegister.Contains(permissionName))
                {
                    permissionToRegister.Add(permissionName);
                }
            }

            // Register permissions for commands
            foreach (string permissionName in permissionToRegister)
            {
                permission.RegisterPermission(permissionName, this);
            }


            // update the config with the new permission
            if (changedPermission.Count > 0)
            {
                foreach (var newPerm in changedPermission)
                {
                    permissionConfiguration.OverwritedCommandsPermission[newPerm.Key] = newPerm.Value;
                }
                SaveConfig();
            }
        }