Using the FunctionManager Service
Information
This explains basic usage of the Sakai FunctionManager Service. This service is used to register new Authz (permission) groups.
Trunk javadocs:
Trunk source location: https://source.sakaiproject.org/svn/authz/trunk/
Accessing the FunctionManager
You can use Spring Framework to inject the service or use the cover
Using Spring to get the service for your class (e.g. YourAppClass) (recommended)
Add the FunctionManager bean to the bean for YourAppClass
<bean id="org.sakaiproject.yourapp.logic.YourAppClass" class="org.sakaiproject.yourapp.logic.impl.YourAppClassImpl"> <property name="functionManager" ref="org.sakaiproject.authz.api.FunctionManager" /> </bean>Add a variable and setter to YourAppClass to use the service in like so:
private FunctionManager functionManager; public void setFunctionManager(FunctionManager functionManager) { this.functionManager = functionManager; }
Using the Component Manager to get the service
Note: This is not the recommended method, you should be using Spring to inject the service
Use the CM cover to get the service
import org.sakaiproject.component.cover.ComponentManager; import org.sakaiproject.authz.api.FunctionManager; ... private FunctionManager functionManager; ... functionManager = (FunctionManager) ComponentManager.get(FunctionManager.class);
Registering a new permission with the Sakai security system
Note: This will cause the permission to appear in the list of perms in Realms
Create a static final String to store the name of the permission
Note: This is partially so you can access this string from elsewhere in your app (if needed)
public final static String TOOL_PERM_NAME = "toolname.perm.name";
Use the FunctionManager to register the permission with the security system when your class initializes
public void init() { functionManager.registerFunction(TOOL_PERM_NAME); }Note: Recommend that you place this in the init function of a business logic class (or service)