View Javadoc

1   package com.atlassian.plugin;
2   
3   import com.atlassian.fugue.Option;
4   import com.google.common.collect.ImmutableSet;
5   
6   import static com.atlassian.fugue.Option.option;
7   import static com.google.common.base.Preconditions.checkNotNull;
8   
9   /**
10   * @since 3.0
11   */
12  public final class Permissions
13  {
14      /**
15       * <p>Represents all the permissions in one. This is useful for plugins before version 3 which by default require all
16       * permissions.
17       * <p>It is not a good idea to use this as a plugin developer, as this is a way internally to define permissions for
18       * legacy plugins.
19       */
20      public static final String ALL_PERMISSIONS = "all_permissions";
21  
22      /**
23       * A permission to execute java code. You will need this permission if as a plugin developers you write your own
24       * java components for your plugin, be it a simple service, a servlet, etc.
25       */
26      public static final String EXECUTE_JAVA = "execute_java";
27  
28      /**
29       * <p>A permission to generate arbitrary HTML.
30       * <p>Generating arbitrary HTML can be a security threat hence why it would require such permission.
31       */
32      public static final String GENERATE_ANY_HTML = "generate_any_html";
33  
34      private Permissions()
35      {
36      }
37  
38      public static Plugin addPermission(Plugin plugin, String permission, InstallationMode mode)
39      {
40          checkNotNull(plugin);
41  
42          getPluginInformation(plugin).setPermissions(
43                  ImmutableSet.<PluginPermission>builder()
44                          .addAll(getPluginInformation(plugin).getPermissions())
45                          .add(new PluginPermission(permission, Option.<InstallationMode>option(mode)))
46                          .build());
47          return plugin;
48      }
49  
50      private static PluginInformation getPluginInformation(Plugin plugin)
51      {
52          return option(plugin.getPluginInformation()).getOrElse(new PluginInformation());
53      }
54  }