package org.bonitasoft.console.common.server.utils;
import java.io.IOException;
import org.bonitasoft.console.common.server.login.LoginFailedException;
import org.bonitasoft.console.common.server.preferences.properties.CompoundPermissionsMapping;
import org.bonitasoft.console.common.server.preferences.properties.CustomPermissionsMapping;
import org.bonitasoft.console.common.server.preferences.properties.PropertiesFactory;
import org.bonitasoft.console.common.server.preferences.properties.SecurityProperties;
import org.bonitasoft.engine.api.ApplicationAPI;
import org.bonitasoft.engine.api.ProfileAPI;
import org.bonitasoft.engine.api.TenantAPIAccessor;
import org.bonitasoft.engine.exception.BonitaException;
import org.bonitasoft.engine.session.APISession;
public class PermissionsBuilderAccessor {
public static PermissionsBuilder createPermissionBuilder(final APISession session) throws LoginFailedException {
ProfileAPI profileAPI;
ApplicationAPI applicationAPI;
try {
profileAPI = TenantAPIAccessor.getProfileAPI(session);
applicationAPI = TenantAPIAccessor.getLivingApplicationAPI(session);
} catch (final BonitaException e) {
throw new LoginFailedException(e);
}
final SecurityProperties securityProperties = PropertiesFactory.getSecurityProperties(session.getTenantId());
reloadPropertiesIfInDebug(securityProperties, new PlatformManagementUtils());
final CustomPermissionsMapping customPermissionsMapping = PropertiesFactory.getCustomPermissionsMapping(session.getTenantId());
final CompoundPermissionsMapping compoundPermissionsMapping = PropertiesFactory.getCompoundPermissionsMapping(session.getTenantId());
return new PermissionsBuilder(session, profileAPI, applicationAPI, customPermissionsMapping, compoundPermissionsMapping, securityProperties);
}
static void reloadPropertiesIfInDebug(SecurityProperties securityProperties, PlatformManagementUtils platformManagementUtils) throws LoginFailedException {
if (securityProperties.isAPIAuthorizationsCheckInDebugMode()) {
try {
platformManagementUtils.initializePlatformConfiguration();
} catch (BonitaException | IOException e) {
throw new LoginFailedException("Properties are in debug mode, unable to reload configuration", e);
}
}
}
}