
org.intellimate.izou.security.RootPermission Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of izou Show documentation
Show all versions of izou Show documentation
Izou is a framework used for an addon-based personal assistant
The newest version!
package org.intellimate.izou.security;
import org.intellimate.izou.addon.AddOnModel;
import org.intellimate.izou.main.Main;
import org.intellimate.izou.security.exceptions.IzouPermissionException;
import org.intellimate.izou.security.exceptions.IzouSocketPermissionException;
import ro.fortsoft.pf4j.PluginDescriptor;
import java.io.FilePermission;
import java.security.Permission;
import java.util.function.Function;
/**
* @author LeanderK
* @version 1.0
*/
public class RootPermission extends PermissionModule {
/**
* Creates a new PermissionModule
*
* @param main an instance of main
* @param securityManager an instance of security-manager
*/
RootPermission(Main main, SecurityManager securityManager) {
super(main, securityManager);
}
/**
* returns true if able to check permissions
*
* @param permission the permission to check
* @return true if able to, false if not
*/
@Override
public boolean canCheckPermission(Permission permission) {
return true;
}
/**
* Checks if the given addOn is allowed to access the requested service and registers them if not yet registered.
*
* @param permission the Permission to check
* @param addon the identifiable to check
* @throws IzouPermissionException thrown if the addOn is not allowed to access its requested service
*/
@Override
public void checkPermission(Permission permission, AddOnModel addon) throws IzouPermissionException {
if (isRegistered(addon))
return;
if (permission instanceof FilePermission && !permission.getActions().intern().toLowerCase().equals("read")) {
String canonicalName = permission.getName().intern().toLowerCase();
getSecurityManager().getPermissionManager().getFilePermissionModule().fileWriteCheck(canonicalName, addon);
}
Function checkPermission = descriptor -> {
try {
return descriptor.getAddOnProperties().get("root").equals("true");
} catch (NullPointerException e) {
return false;
}
};
String exceptionMessage = "Root permission denied for: " + addon + "is not registered to "
+ "use socket root connections.";
registerOrThrow(addon, () -> new IzouSocketPermissionException(exceptionMessage), checkPermission);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy