package de.skuzzle.polly.core.internal.roles; import de.skuzzle.polly.core.internal.ModuleStates; import de.skuzzle.polly.core.internal.persistence.PersistenceManagerV2Impl; import de.skuzzle.polly.core.moduleloader.AbstractProvider; import de.skuzzle.polly.core.moduleloader.ModuleLoader; import de.skuzzle.polly.core.moduleloader.SetupException; import de.skuzzle.polly.core.moduleloader.annotations.Module; import de.skuzzle.polly.core.moduleloader.annotations.Provide; import de.skuzzle.polly.core.moduleloader.annotations.Require; import de.skuzzle.polly.sdk.roles.RoleManager; @Module( requires = { @Require(component = PersistenceManagerV2Impl.class), @Require(state = ModuleStates.PERSISTENCE_READY) }, provides = { @Provide(component = RoleManagerImpl.class), @Provide(state = ModuleStates.ROLES_READY) } ) public class RoleManagerProvider extends AbstractProvider { private RoleManagerImpl roleManager; public RoleManagerProvider(ModuleLoader loader) { super("ROLE_MANAGER_PROVIDER", loader, true); } @Override public void setup() throws SetupException { PersistenceManagerV2Impl persistence = this.requireNow(PersistenceManagerV2Impl.class, true); this.roleManager = new RoleManagerImpl(persistence); this.provideComponent(roleManager); } @Override public void run() throws Exception { // Add default roles and permissions this.roleManager.createRole(RoleManager.ADMIN_ROLE); this.roleManager.createRole(RoleManager.DEFAULT_ROLE); this.roleManager.registerPermission(RoleManager.NONE_PERMISSION); this.roleManager.registerPermission(RoleManager.REGISTERED_PERMISSION); this.roleManager.registerPermission(RoleManager.ADMIN_PERMISSION); this.roleManager.assignPermission(RoleManager.DEFAULT_ROLE, RoleManager.REGISTERED_PERMISSION); this.roleManager.assignPermission(RoleManager.ADMIN_ROLE, RoleManager.ADMIN_PERMISSION); this.addState(ModuleStates.ROLES_READY); } }