Search in sources :

Example 1 with SuggestedLevel

use of io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel in project Nucleus by NucleusPowered.

the class SetupPermissionsCommand method setupPerms.

private void setupPerms(CommandSource src, Subject group, SuggestedLevel level, boolean reset, boolean inherit) throws Exception {
    if (inherit && level.getLowerLevel() != null) {
        setupPerms(src, group, level.getLowerLevel(), reset, inherit);
    }
    Set<Context> globalContext = Sets.newHashSet();
    SubjectData data = group.getSubjectData();
    Set<String> definedPermissions = data.getPermissions(ImmutableSet.of()).keySet();
    Logger logger = Nucleus.getNucleus().getLogger();
    MessageProvider messageProvider = Nucleus.getNucleus().getMessageProvider();
    // Register all the permissions, but only those that have yet to be assigned.
    permissionRegistry.getPermissions().entrySet().stream().filter(x -> x.getValue().level == level).filter(x -> reset || !definedPermissions.contains(x.getKey())).forEach(x -> {
        logger.info(messageProvider.getMessageWithFormat("command.nucleus.permission.added", x.getKey(), group.getIdentifier()));
        data.setPermission(globalContext, x.getKey(), Tristate.TRUE);
    });
    src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.nucleus.permission.complete", level.toString().toLowerCase(), group.getIdentifier()));
}
Also used : CommandContext(org.spongepowered.api.command.args.CommandContext) Context(org.spongepowered.api.service.context.Context) RegisterCommand(io.github.nucleuspowered.nucleus.internal.annotations.command.RegisterCommand) NonnullByDefault(org.spongepowered.api.util.annotation.NonnullByDefault) ArgumentParseException(org.spongepowered.api.command.args.ArgumentParseException) CommandArgs(org.spongepowered.api.command.args.CommandArgs) GenericArguments(org.spongepowered.api.command.args.GenericArguments) PermissionService(org.spongepowered.api.service.permission.PermissionService) RunAsync(io.github.nucleuspowered.nucleus.internal.annotations.RunAsync) PermissionRegistry(io.github.nucleuspowered.nucleus.internal.PermissionRegistry) CommandContext(org.spongepowered.api.command.args.CommandContext) Text(org.spongepowered.api.text.Text) SuggestedLevel(io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel) Permissions(io.github.nucleuspowered.nucleus.internal.annotations.command.Permissions) ServiceChangeListener(io.github.nucleuspowered.nucleus.internal.permissions.ServiceChangeListener) Subject(org.spongepowered.api.service.permission.Subject) Nullable(javax.annotation.Nullable) NoModifiers(io.github.nucleuspowered.nucleus.internal.annotations.command.NoModifiers) SubjectData(org.spongepowered.api.service.permission.SubjectData) CommandResult(org.spongepowered.api.command.CommandResult) TextActions(org.spongepowered.api.text.action.TextActions) ImmutableSet(com.google.common.collect.ImmutableSet) Logger(org.slf4j.Logger) Nucleus(io.github.nucleuspowered.nucleus.Nucleus) CommandSource(org.spongepowered.api.command.CommandSource) Context(org.spongepowered.api.service.context.Context) Sponge(org.spongepowered.api.Sponge) Set(java.util.Set) ReturnMessageException(io.github.nucleuspowered.nucleus.internal.command.ReturnMessageException) CommandElement(org.spongepowered.api.command.args.CommandElement) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) Tristate(org.spongepowered.api.util.Tristate) List(java.util.List) AbstractCommand(io.github.nucleuspowered.nucleus.internal.command.AbstractCommand) MessageProvider(io.github.nucleuspowered.nucleus.internal.messages.MessageProvider) Optional(java.util.Optional) Collections(java.util.Collections) MessageProvider(io.github.nucleuspowered.nucleus.internal.messages.MessageProvider) SubjectData(org.spongepowered.api.service.permission.SubjectData) Logger(org.slf4j.Logger)

Example 2 with SuggestedLevel

use of io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel in project Nucleus by NucleusPowered.

the class SetupPermissionsCommand method executeCommand.

@Override
public CommandResult executeCommand(CommandSource src, CommandContext args) throws Exception {
    if (args.hasAny(this.withGroupsKey)) {
        if (ServiceChangeListener.isOpOnly()) {
            // Fail
            throw ReturnMessageException.fromKey("args.permissiongroup.noservice");
        }
        if (args.hasAny(this.acceptGroupKey)) {
            setupGroups(src);
        } else {
            src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.nucleus.permission.groups.info"));
            src.sendMessage(plugin.getMessageProvider().getTextMessageWithFormat("command.nucleus.permission.groups.info2").toBuilder().onClick(TextActions.runCommand("/nucleus:nucleus setupperms -g -y")).onHover(TextActions.showText(Text.of("/nucleus:nucleus setupperms -g -y"))).build());
        }
        return CommandResult.success();
    }
    // The GroupArgument should have already checked for this.
    SuggestedLevel sl = args.<SuggestedLevel>getOne(roleKey).get();
    Subject group = args.<Subject>getOne(groupKey).get();
    boolean reset = args.hasAny("r");
    boolean inherit = args.hasAny("i");
    setupPerms(src, group, sl, reset, inherit);
    return CommandResult.success();
}
Also used : SuggestedLevel(io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel) Subject(org.spongepowered.api.service.permission.Subject)

Example 3 with SuggestedLevel

use of io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel in project Nucleus by NucleusPowered.

the class NucleusPlugin method registerPermissions.

@Override
protected void registerPermissions() {
    Optional<PermissionService> ops = Sponge.getServiceManager().provide(PermissionService.class);
    ops.ifPresent(permissionService -> {
        Map<String, PermissionInformation> m = this.getPermissionRegistry().getPermissions();
        m.entrySet().stream().filter(x -> {
            SuggestedLevel lvl = x.getValue().level;
            return lvl == SuggestedLevel.ADMIN || lvl == SuggestedLevel.OWNER;
        }).filter(x -> x.getValue().isNormal).forEach(k -> permissionService.newDescriptionBuilder(this).assign(PermissionDescription.ROLE_ADMIN, true).description(k.getValue().description).id(k.getKey()).register());
        m.entrySet().stream().filter(x -> x.getValue().level == SuggestedLevel.MOD).filter(x -> x.getValue().isNormal).forEach(k -> permissionService.newDescriptionBuilder(this).assign(PermissionDescription.ROLE_STAFF, true).description(k.getValue().description).id(k.getKey()).register());
        m.entrySet().stream().filter(x -> x.getValue().level == SuggestedLevel.USER).filter(x -> x.getValue().isNormal).forEach(k -> permissionService.newDescriptionBuilder(this).assign(PermissionDescription.ROLE_USER, true).description(k.getValue().description).id(k.getKey()).register());
    });
}
Also used : PermissionService(org.spongepowered.api.service.permission.PermissionService) GameStoppedServerEvent(org.spongepowered.api.event.game.state.GameStoppedServerEvent) CatalogTypeFinalStaticProcessor(io.github.nucleuspowered.nucleus.internal.CatalogTypeFinalStaticProcessor) TypeToken(com.google.gson.reflect.TypeToken) GameInitializationEvent(org.spongepowered.api.event.game.state.GameInitializationEvent) VERSION(io.github.nucleuspowered.nucleus.PluginInfo.VERSION) PermissionService(org.spongepowered.api.service.permission.PermissionService) Map(java.util.Map) SuggestedLevel(io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel) ServiceChangeListener(io.github.nucleuspowered.nucleus.internal.permissions.ServiceChangeListener) Path(java.nio.file.Path) PrintWriter(java.io.PrintWriter) CommandPermissionHandler(io.github.nucleuspowered.nucleus.internal.CommandPermissionHandler) NameBanService(io.github.nucleuspowered.nucleus.dataservices.NameBanService) Set(java.util.Set) ResourceMessageProvider(io.github.nucleuspowered.nucleus.internal.messages.ResourceMessageProvider) MessageProvider(io.github.nucleuspowered.nucleus.internal.messages.MessageProvider) BaseModuleEvent(io.github.nucleuspowered.nucleus.internal.qsml.event.BaseModuleEvent) ConfigException(com.typesafe.config.ConfigException) KitService(io.github.nucleuspowered.nucleus.dataservices.KitService) ConfigurateHelper(io.github.nucleuspowered.nucleus.configurate.ConfigurateHelper) ModularGeneralService(io.github.nucleuspowered.nucleus.dataservices.modular.ModularGeneralService) PermissionInformation(io.github.nucleuspowered.nucleus.internal.permissions.PermissionInformation) GamePostInitializationEvent(org.spongepowered.api.event.game.state.GamePostInitializationEvent) TextParsingUtils(io.github.nucleuspowered.nucleus.internal.text.TextParsingUtils) Supplier(java.util.function.Supplier) ID(io.github.nucleuspowered.nucleus.PluginInfo.ID) Lists(com.google.common.collect.Lists) Text(org.spongepowered.api.text.Text) WorldDataManager(io.github.nucleuspowered.nucleus.dataservices.loaders.WorldDataManager) NucleusLoggerProxy(io.github.nucleuspowered.nucleus.internal.qsml.NucleusLoggerProxy) QuickStartModuleConstructor(io.github.nucleuspowered.nucleus.internal.qsml.QuickStartModuleConstructor) NucleusTeleportHandler(io.github.nucleuspowered.nucleus.internal.teleport.NucleusTeleportHandler) NucleusModuleService(io.github.nucleuspowered.nucleus.api.service.NucleusModuleService) QuickStartModuleLoaderException(uk.co.drnaylor.quickstart.exceptions.QuickStartModuleLoaderException) ModuleData(uk.co.drnaylor.quickstart.annotations.ModuleData) PluginContainer(org.spongepowered.api.plugin.PluginContainer) TextColors(org.spongepowered.api.text.format.TextColors) Nullable(javax.annotation.Nullable) WarmupConfig(io.github.nucleuspowered.nucleus.modules.core.config.WarmupConfig) NucleusAPITokens(io.github.nucleuspowered.nucleus.api.NucleusAPITokens) UserCacheService(io.github.nucleuspowered.nucleus.dataservices.UserCacheService) UserDataManager(io.github.nucleuspowered.nucleus.dataservices.loaders.UserDataManager) Files(java.nio.file.Files) CommandsConfig(io.github.nucleuspowered.nucleus.config.CommandsConfig) StringWriter(java.io.StringWriter) TextFileController(io.github.nucleuspowered.nucleus.internal.TextFileController) IOException(java.io.IOException) Reloadable(io.github.nucleuspowered.nucleus.internal.interfaces.Reloadable) QuickStartModuleDiscoveryException(uk.co.drnaylor.quickstart.exceptions.QuickStartModuleDiscoveryException) PreloadTasks(io.github.nucleuspowered.nucleus.internal.PreloadTasks) NucleusTokenServiceImpl(io.github.nucleuspowered.nucleus.internal.text.NucleusTokenServiceImpl) ObjectMappingException(ninja.leaping.configurate.objectmapping.ObjectMappingException) Paths(java.nio.file.Paths) MessageReceiver(org.spongepowered.api.text.channel.MessageReceiver) ConsoleSource(org.spongepowered.api.command.source.ConsoleSource) Game(org.spongepowered.api.Game) NoModuleException(uk.co.drnaylor.quickstart.exceptions.NoModuleException) EconHelper(io.github.nucleuspowered.nucleus.internal.EconHelper) Strategy(uk.co.drnaylor.quickstart.modulecontainers.discoverystrategies.Strategy) DESCRIPTION(io.github.nucleuspowered.nucleus.PluginInfo.DESCRIPTION) CoreModule(io.github.nucleuspowered.nucleus.modules.core.CoreModule) CoreConfigAdapter(io.github.nucleuspowered.nucleus.modules.core.config.CoreConfigAdapter) NucleusWarmupManagerService(io.github.nucleuspowered.nucleus.api.service.NucleusWarmupManagerService) ItemDataService(io.github.nucleuspowered.nucleus.dataservices.ItemDataService) Order(org.spongepowered.api.event.Order) Gson(com.google.gson.Gson) CoreConfig(io.github.nucleuspowered.nucleus.modules.core.config.CoreConfig) NucleusMessageTokenService(io.github.nucleuspowered.nucleus.api.service.NucleusMessageTokenService) WorldCorrector(io.github.nucleuspowered.nucleus.internal.WorldCorrector) EconomyService(org.spongepowered.api.service.economy.EconomyService) ClientMessageReciever(io.github.nucleuspowered.nucleus.internal.client.ClientMessageReciever) GamePreInitializationEvent(org.spongepowered.api.event.game.state.GamePreInitializationEvent) UniqueUserCountTransientModule(io.github.nucleuspowered.nucleus.modules.core.datamodules.UniqueUserCountTransientModule) Sponge(org.spongepowered.api.Sponge) Instant(java.time.Instant) Sets(com.google.common.collect.Sets) DataProviders(io.github.nucleuspowered.nucleus.dataservices.dataproviders.DataProviders) List(java.util.List) NAME(io.github.nucleuspowered.nucleus.PluginInfo.NAME) GameStartedServerEvent(org.spongepowered.api.event.game.state.GameStartedServerEvent) Optional(java.util.Optional) ConfigMessageProvider(io.github.nucleuspowered.nucleus.internal.messages.ConfigMessageProvider) Asset(org.spongepowered.api.asset.Asset) DocGenCache(io.github.nucleuspowered.nucleus.internal.docgen.DocGenCache) PermissionDescription(org.spongepowered.api.service.permission.PermissionDescription) GameStartingServerEvent(org.spongepowered.api.event.game.state.GameStartingServerEvent) Platform(org.spongepowered.api.Platform) Inject(javax.inject.Inject) PermissionRegistry(io.github.nucleuspowered.nucleus.internal.PermissionRegistry) ModuleRegistrationProxyService(io.github.nucleuspowered.nucleus.internal.qsml.ModuleRegistrationProxyService) NucleusConfigAdapter(io.github.nucleuspowered.nucleus.internal.qsml.NucleusConfigAdapter) Task(org.spongepowered.api.scheduler.Task) GameState(org.spongepowered.api.GameState) IncorrectAdapterTypeException(uk.co.drnaylor.quickstart.exceptions.IncorrectAdapterTypeException) WarmupManager(io.github.nucleuspowered.nucleus.internal.services.WarmupManager) Logger(org.slf4j.Logger) HoconConfigurationLoader(ninja.leaping.configurate.hocon.HoconConfigurationLoader) InternalServiceManager(io.github.nucleuspowered.nucleus.internal.InternalServiceManager) ConstructionPhase(uk.co.drnaylor.quickstart.enums.ConstructionPhase) ConfigDir(org.spongepowered.api.config.ConfigDir) Maps(com.google.common.collect.Maps) Plugin(org.spongepowered.api.plugin.Plugin) UUIDChangeService(io.github.nucleuspowered.nucleus.modules.core.service.UUIDChangeService) Listener(org.spongepowered.api.event.Listener) DiscoveryModuleContainer(uk.co.drnaylor.quickstart.modulecontainers.DiscoveryModuleContainer) DebugLogger(io.github.nucleuspowered.nucleus.logging.DebugLogger) Collections(java.util.Collections) SuggestedLevel(io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel) PermissionInformation(io.github.nucleuspowered.nucleus.internal.permissions.PermissionInformation)

Aggregations

Sets (com.google.common.collect.Sets)2 PermissionRegistry (io.github.nucleuspowered.nucleus.internal.PermissionRegistry)2 MessageProvider (io.github.nucleuspowered.nucleus.internal.messages.MessageProvider)2 ServiceChangeListener (io.github.nucleuspowered.nucleus.internal.permissions.ServiceChangeListener)2 SuggestedLevel (io.github.nucleuspowered.nucleus.internal.permissions.SuggestedLevel)2 Subject (org.spongepowered.api.service.permission.Subject)2 ImmutableSet (com.google.common.collect.ImmutableSet)1 Lists (com.google.common.collect.Lists)1 Maps (com.google.common.collect.Maps)1 Gson (com.google.gson.Gson)1 TypeToken (com.google.gson.reflect.TypeToken)1 ConfigException (com.typesafe.config.ConfigException)1 Nucleus (io.github.nucleuspowered.nucleus.Nucleus)1 DESCRIPTION (io.github.nucleuspowered.nucleus.PluginInfo.DESCRIPTION)1 ID (io.github.nucleuspowered.nucleus.PluginInfo.ID)1 NAME (io.github.nucleuspowered.nucleus.PluginInfo.NAME)1 VERSION (io.github.nucleuspowered.nucleus.PluginInfo.VERSION)1 NucleusAPITokens (io.github.nucleuspowered.nucleus.api.NucleusAPITokens)1 NucleusMessageTokenService (io.github.nucleuspowered.nucleus.api.service.NucleusMessageTokenService)1 NucleusModuleService (io.github.nucleuspowered.nucleus.api.service.NucleusModuleService)1