Skip to content

Commit b365888

Browse files
committed
Reload permissions on cache purge
1 parent b971178 commit b365888

File tree

4 files changed

+24
-17
lines changed

4 files changed

+24
-17
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ public void clear(List<UUID> onlinePlayers) {
211211
PermissifyAPI.get().ifPresent(api -> api.getDisplayUtil().displayError(ConnectionError.REJECTED, Optional.of(e)));
212212
}
213213
} else PermissifyAPI.get().ifPresent(api -> api.getDisplayUtil().displayError(ConnectionError.REJECTED, Optional.empty()));
214+
onlinePlayers.forEach(this::getPermissions);
214215
}
215216

216217
@Override
@@ -313,11 +314,7 @@ public boolean hasPermission(UUID uuid, String permission) {
313314

314315
@Override
315316
public List<Permission> getPermissions(UUID uuid) {
316-
if (cachedPermissions.containsKey(uuid)) {
317-
System.out.println("Found cached permissions for " + uuid);
318-
return cachedPermissions.get(uuid);
319-
}
320-
System.out.println("No cache for " + uuid + " found. Getting.");
317+
if (cachedPermissions.containsKey(uuid)) return cachedPermissions.get(uuid);
321318
Optional<Connection> connection = getConnection();
322319
List<Permission> permissions = new ArrayList<>();
323320

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ private CommandResponse handleCachePurge(CommandSender sender, String[] args) {
6262
if (!PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().isPresent())
6363
return new CommandResponse(PermissifyConstants.UNABLE_OTHER.replace("<REASON>", "No database handler"), false);
6464
PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().get().clear(Bukkit.getOnlinePlayers().stream().map(Player::getUniqueId).collect(Collectors.toList()));
65+
Bukkit.getScheduler().runTaskAsynchronously(PermissifyMain.getInstance(), () -> Bukkit.getOnlinePlayers().forEach(PermissionUtil::applyPermissions));
6566
return new CommandResponse(PermissifyConstants.CACHE_PURGED, true);
6667
}
6768
}

Spigot/src/main/java/me/innectic/permissify/spigot/events/PlayerJoin.java

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import me.innectic.permissify.api.permission.Permission;
2828
import me.innectic.permissify.api.permission.PermissionGroup;
2929
import me.innectic.permissify.spigot.PermissifyMain;
30+
import me.innectic.permissify.spigot.utils.PermissionUtil;
3031
import org.bukkit.Bukkit;
3132
import org.bukkit.entity.Player;
3233
import org.bukkit.event.EventHandler;
@@ -47,18 +48,7 @@ public void onPlayerJoinEvent(PlayerJoinEvent e) {
4748
Player player = e.getPlayer();
4849
if (player == null) return;
4950
// Set the permissions of the player
50-
PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().ifPresent(handler -> {
51-
// Check if the player should be in a default group.
52-
if (handler.getDefaultGroup().isPresent() && !handler.getDefaultGroup().get().hasPlayer(player.getUniqueId())) {
53-
handler.addPlayerToGroup(player.getUniqueId(), handler.getDefaultGroup().get());
54-
handler.setPrimaryGroup(handler.getDefaultGroup().get(), player.getUniqueId());
55-
}
56-
handler.updateCache(player.getUniqueId());
57-
List<Permission> permissions = handler.getPermissions(player.getUniqueId());
58-
// Add the permissions to the player
59-
handler.getGroups(player.getUniqueId()).stream().map(PermissionGroup::getPermissions).forEach(permissions::addAll);
60-
permissions.forEach(permission -> player.addAttachment(PermissifyMain.getInstance(), permission.getPermission(), permission.isGranted()));
61-
});
51+
PermissionUtil.applyPermissions(player);
6252
});
6353
}
6454
}

Spigot/src/main/java/me/innectic/permissify/spigot/utils/PermissionUtil.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@
2424
*/
2525
package me.innectic.permissify.spigot.utils;
2626

27+
import me.innectic.permissify.api.permission.Permission;
28+
import me.innectic.permissify.api.permission.PermissionGroup;
2729
import me.innectic.permissify.spigot.PermissifyMain;
2830
import org.bukkit.entity.Player;
2931

32+
import java.util.List;
33+
3034
/**
3135
* @author Innectic
3236
* @since 8/21/2017
@@ -38,4 +42,19 @@ public static boolean hasPermissionOrSuperAdmin(Player player, String permission
3842
(PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().map(handler ->
3943
handler.isSuperAdmin(player.getUniqueId())).orElse(false));
4044
}
45+
46+
public static void applyPermissions(Player player) {
47+
PermissifyMain.getInstance().getPermissifyAPI().getDatabaseHandler().ifPresent(handler -> {
48+
// Check if the player should be in a default group.
49+
if (handler.getDefaultGroup().isPresent() && !handler.getDefaultGroup().get().hasPlayer(player.getUniqueId())) {
50+
handler.addPlayerToGroup(player.getUniqueId(), handler.getDefaultGroup().get());
51+
handler.setPrimaryGroup(handler.getDefaultGroup().get(), player.getUniqueId());
52+
}
53+
handler.updateCache(player.getUniqueId());
54+
List<Permission> permissions = handler.getPermissions(player.getUniqueId());
55+
// Add the permissions to the player
56+
handler.getGroups(player.getUniqueId()).stream().map(PermissionGroup::getPermissions).forEach(permissions::addAll);
57+
permissions.forEach(permission -> player.addAttachment(PermissifyMain.getInstance(), permission.getPermission(), permission.isGranted()));
58+
});
59+
}
4160
}

0 commit comments

Comments
 (0)