Skip to content

Commit 42c3d3b

Browse files
committed
Allow superadmin revoking
1 parent ff6c389 commit 42c3d3b

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

API/src/main/java/me/innectic/permissify/api/PermissifyConstants.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ public class PermissifyConstants {
106106
public static final String NOT_ENOUGH_ARGUMENTS_PROFILE = PERMISSIFY_PREFIX + "&c&lNot enough arguments! &e&l/permissify profile [save|load] [profile]";
107107
public static final String NOT_ENOUGH_ARGUMENTS_PROFILE_SAVE = PERMISSIFY_PREFIX + "&c&lNot enough arguments! &e&l/permissify profile save [fileName]";
108108
public static final String NOT_ENOUGH_ARGUMENTS_PROFILE_LOAD = PERMISSIFY_PREFIX + "&c&lNot enough arguments! &e&l/permissify profile load [source]";
109+
public static final String NOT_ENOUGH_ARGUMENTS_SUPERADMIN = PERMISSIFY_PREFIX + "&c&l/Not enough arguments! &e&l/permissify superadmin <grant|remove> <player>";
110+
public static final String NOT_ENOUGH_ARGUMENTS_SUPERADMIN_GRANT = PERMISSIFY_PREFIX + "&c&lNot enough arguments! &e&l/permissify superadmin grant <player>";
111+
public static final String NOT_ENOUGH_ARGUMENTS_SUPERADMIN_REMOVE = PERMISSIFY_PREFIX + "&c&lNot enough arguments! &e&l/permissify superadmin remove <player>";
109112

110113
public static final String PROFILE_SAVED = PERMISSIFY_PREFIX + "&e&lSaved profile '<PROFILE>'.";
111114
public static final String PROFILE_NOT_SAVED = PERMISSIFY_PREFIX + "&c&lUnable to save profile '<PROFILE>'";
@@ -132,7 +135,8 @@ public class PermissifyConstants {
132135

133136
public static final List<List<String>> PERMISSIFY_HELP_PAGES = new ArrayList<>(Arrays.asList(Arrays.asList(
134137
"&a&l/permissify help [page]",
135-
"&a&l/permissify superadmin <player> - &c&lWARNING: &e&lSUPERADMIN GIVES PERMISSION FOR EVERYTHING!",
138+
"&a&l/permissify superadmin grant <player> - &c&lWARNING: &e&lSUPERADMIN GIVES PERMISSION FOR EVERYTHING!",
139+
"&a&l/permissify superadmin remove <player>",
136140
"&a&l/permissify cache",
137141
"&a&l/permissify cache purge",
138142
"&a&l/permissify group create <name> <display_name> <prefix> <suffix> <chatcolor>",

API/src/main/java/me/innectic/permissify/api/database/handlers/SQLHandler.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -719,6 +719,7 @@ public boolean hasGroupPermission(String group, String permission) {
719719
@Override
720720
public void addSuperAdmin(UUID uuid) {
721721
if (uuid == null) return;
722+
if (superAdmins.contains(uuid)) return;
722723
// Update the cache
723724
superAdmins.add(uuid);
724725
// Update mysql
@@ -746,7 +747,24 @@ public boolean isSuperAdmin(UUID uuid) {
746747

747748
@Override
748749
public void removeSuperAdmin(UUID uuid) {
749-
// TODO: Before 1.0.1
750+
if (uuid == null) return;
751+
superAdmins.removeIf(u -> u.equals(uuid));
752+
753+
Optional<Connection> connection = getConnection();
754+
if (!connection.isPresent()) {
755+
PermissifyAPI.get().ifPresent(api -> api.getDisplayUtil().displayError(ConnectionError.REJECTED, Optional.empty()));
756+
return;
757+
}
758+
try {
759+
PreparedStatement statement = connection.get().prepareStatement("DELETE FROM superAdmin WHERE uuid=?");
760+
statement.setString(1, uuid.toString());
761+
statement.execute();
762+
statement.close();
763+
connection.get().close();
764+
} catch (SQLException e) {
765+
PermissifyAPI.get().ifPresent(api -> api.getDisplayUtil().displayError(ConnectionError.DATABASE_EXCEPTION, Optional.of(e)));
766+
e.printStackTrace();
767+
}
750768
}
751769

752770
@Override

Spigot/src/main/java/me/innectic/permissify/spigot/commands/PermissifyCommand.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,24 @@ public boolean onCommand(CommandSender sender, Command command, String s, String
5454
return;
5555
}
5656
if (sender instanceof ConsoleCommandSender) {
57-
if (args.length >= 2 && args[0].equalsIgnoreCase("superadmin")) {
58-
Player player = Bukkit.getPlayer(args[1]);
59-
if (player == null) return;
60-
plugin.getPermissifyAPI().getDatabaseHandler().get().addSuperAdmin(player.getUniqueId());
61-
return;
57+
if (args[0].equalsIgnoreCase("superadmin")) {
58+
if (args.length < 3) {
59+
sender.sendMessage(ColorUtil.makeReadable(PermissifyConstants.NOT_ENOUGH_ARGUMENTS_SUPERADMIN));
60+
return;
61+
}
62+
Player player = Bukkit.getPlayer(args[2]);
63+
if (player == null || !player.isOnline()) return;
64+
65+
if (args[1].equalsIgnoreCase("grant")) {
66+
plugin.getPermissifyAPI().getDatabaseHandler().get().addSuperAdmin(player.getUniqueId());
67+
return;
68+
} else if (args[1].equalsIgnoreCase("remove")) {
69+
plugin.getPermissifyAPI().getDatabaseHandler().get().removeSuperAdmin(player.getUniqueId());
70+
return;
71+
} else {
72+
sender.sendMessage(ColorUtil.makeReadable(PermissifyConstants.INVALID_ARGUMENT.replace("<ARGUMENT>", args[1])));
73+
return;
74+
}
6275
}
6376
}
6477
if (sender instanceof CommandBlock && !plugin.getConfig().getBoolean("allow-command-block", false)) return;

0 commit comments

Comments
 (0)