package org.jivesoftware.openfire.plugin.gojara.permissions;
import java.util.Collection;
import org.jivesoftware.openfire.group.Group;
import org.jivesoftware.openfire.group.GroupManager;
import org.jivesoftware.util.JiveGlobals;
import org.xmpp.packet.JID;
/**
* Gateways can be limited to a special user group. This manager helps you to
* check if the gateways is limited and if a user is in this group
*
* @author Holger Bergunde
*
*/
public class PermissionManager {
GroupManager _groupManager = GroupManager.getInstance();
public boolean isGatewayLimited(String subdomain) {
return getGroupForGateway(subdomain).length() > 0;
}
public boolean allowedForUser(String gateway, JID jid) {
String groupAllowedFor = getGroupForGateway(gateway);
if (groupAllowedFor != null) {
Collection<Group> groups = _groupManager.getGroups(jid);
for (Group gr : groups) {
if (gr.getName().equals(groupAllowedFor)) {
return true;
}
}
}
return false;
}
/**
* Returns the name of the group the usage is limited for the given gateway
*
* @param gateway
* the subdomain of the gateway
* @return name of the group, or "" if there is no group
*/
public String getGroupForGateway(String gateway) {
return JiveGlobals.getProperty("plugin.remoteroster.permissiongroup." + gateway, "");
}
/**
* Set the group name for the limitation
*
* @param gateway
* subdomain of the component
* @param group
* groupname that exists in openfire
*/
public void setGroupForGateway(String gateway, String group) {
JiveGlobals.setProperty("plugin.remoteroster.permissiongroup." + gateway, group);
}
/**
* Remove the limitaion from the specified gateway
*
* @param gateway
* subdomain of the component
*/
public void removeGatewayLimitation(String gateway) {
setGroupForGateway(gateway, "");
}
}