fix run as command config not being honored properly
This commit is contained in:
parent
56aec53e72
commit
0019ed8dde
@ -39,7 +39,10 @@ namespace IW4MAdmin.Application.Factories
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Server CreateServer(ServerConfiguration config, IManager manager)
|
public Server CreateServer(ServerConfiguration config, IManager manager)
|
||||||
{
|
{
|
||||||
return new IW4MServer(config, _translationLookup, _metaService, _serviceProvider, _serviceProvider.GetRequiredService<IClientNoticeMessageFormatter>(), _serviceProvider.GetRequiredService<ILookupCache<EFServer>>());
|
return new IW4MServer(config,
|
||||||
|
_serviceProvider.GetRequiredService<CommandConfiguration>(), _translationLookup, _metaService,
|
||||||
|
_serviceProvider, _serviceProvider.GetRequiredService<IClientNoticeMessageFormatter>(),
|
||||||
|
_serviceProvider.GetRequiredService<ILookupCache<EFServer>>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -39,9 +39,11 @@ namespace IW4MAdmin
|
|||||||
private readonly IServiceProvider _serviceProvider;
|
private readonly IServiceProvider _serviceProvider;
|
||||||
private readonly IClientNoticeMessageFormatter _messageFormatter;
|
private readonly IClientNoticeMessageFormatter _messageFormatter;
|
||||||
private readonly ILookupCache<EFServer> _serverCache;
|
private readonly ILookupCache<EFServer> _serverCache;
|
||||||
|
private readonly CommandConfiguration _commandConfiguration;
|
||||||
|
|
||||||
public IW4MServer(
|
public IW4MServer(
|
||||||
ServerConfiguration serverConfiguration,
|
ServerConfiguration serverConfiguration,
|
||||||
|
CommandConfiguration commandConfiguration,
|
||||||
ITranslationLookup lookup,
|
ITranslationLookup lookup,
|
||||||
IMetaService metaService,
|
IMetaService metaService,
|
||||||
IServiceProvider serviceProvider,
|
IServiceProvider serviceProvider,
|
||||||
@ -58,6 +60,7 @@ namespace IW4MAdmin
|
|||||||
_serviceProvider = serviceProvider;
|
_serviceProvider = serviceProvider;
|
||||||
_messageFormatter = messageFormatter;
|
_messageFormatter = messageFormatter;
|
||||||
_serverCache = serverCache;
|
_serverCache = serverCache;
|
||||||
|
_commandConfiguration = commandConfiguration;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override async Task<EFClient> OnClientConnected(EFClient clientFromLog)
|
public override async Task<EFClient> OnClientConnected(EFClient clientFromLog)
|
||||||
@ -158,7 +161,7 @@ namespace IW4MAdmin
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
C = await SharedLibraryCore.Commands.CommandProcessing.ValidateCommand(E, Manager.GetApplicationSettings().Configuration());
|
C = await SharedLibraryCore.Commands.CommandProcessing.ValidateCommand(E, Manager.GetApplicationSettings().Configuration(), _commandConfiguration);
|
||||||
}
|
}
|
||||||
|
|
||||||
catch (CommandException e)
|
catch (CommandException e)
|
||||||
|
@ -11,7 +11,7 @@ namespace SharedLibraryCore.Commands
|
|||||||
{
|
{
|
||||||
public class CommandProcessing
|
public class CommandProcessing
|
||||||
{
|
{
|
||||||
public static async Task<Command> ValidateCommand(GameEvent E, ApplicationConfiguration appConfig)
|
public static async Task<Command> ValidateCommand(GameEvent E, ApplicationConfiguration appConfig, CommandConfiguration commandConfig)
|
||||||
{
|
{
|
||||||
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
var loc = Utilities.CurrentLocalization.LocalizationIndex;
|
||||||
var Manager = E.Owner.Manager;
|
var Manager = E.Owner.Manager;
|
||||||
@ -40,7 +40,11 @@ namespace SharedLibraryCore.Commands
|
|||||||
|
|
||||||
C.IsBroadcast = isBroadcast;
|
C.IsBroadcast = isBroadcast;
|
||||||
|
|
||||||
if (!C.AllowImpersonation && E.ImpersonationOrigin != null)
|
var allowImpersonation = commandConfig?.Commands?.ContainsKey(C.GetType().Name) ?? false
|
||||||
|
? commandConfig.Commands[C.GetType().Name].AllowImpersonation
|
||||||
|
: C.AllowImpersonation;
|
||||||
|
|
||||||
|
if (!allowImpersonation && E.ImpersonationOrigin != null)
|
||||||
{
|
{
|
||||||
E.ImpersonationOrigin.Tell(loc["COMMANDS_RUN_AS_FAIL"]);
|
E.ImpersonationOrigin.Tell(loc["COMMANDS_RUN_AS_FAIL"]);
|
||||||
throw new CommandException($"Command {C.Name} cannot be run as another client");
|
throw new CommandException($"Command {C.Name} cannot be run as another client");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user