package com.alecgorge.minecraft.jsonapi.permissions;
import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import com.alecgorge.minecraft.jsonapi.config.GroupsConfig;
import com.alecgorge.minecraft.jsonapi.config.UsersConfig;
import com.alecgorge.minecraft.jsonapi.event.JSONAPIAuthEvent;
import com.alecgorge.minecraft.jsonapi.JSONAPI;
public class GroupManager {
JSONAPI plugin;
public GroupManager(JSONAPI plugin) {
this.plugin = plugin;
JSONAPI.dbug("registering for jsonapiauthevents");
plugin.getServer().getPluginManager().registerEvents(new JSONAPIPermissionsListener(), plugin);
}
public void loadFromConfig() {
try {
UsersConfig.config().init();
GroupsConfig.config().init();
}
catch (InvalidConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
boolean effectivePermission(JSONAPIUser username, String method, boolean stream) {
JSONAPI.dbug("Testing " + method + " (" + stream + ")" + " on " + username);
if (username == null) {
return false;
}
if (stream) {
return username.canUseStream(method);
}
else {
return username.canUseMethod(method);
}
}
public class JSONAPIPermissionsListener implements Listener {
@EventHandler
public void onJSONAPIAuthChallenge(JSONAPIAuthEvent e) {
JSONAPI.dbug("Recieved authevent " + e);
e.getAuthResponse().setAllowed(effectivePermission(e.getUser(), e.getMethod(), e.isStream()));
}
}
}