mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-09-21 13:15:35 +00:00
bug 4813: building the identifier for permissions checks is now be done
by supporting a TypeRelativeObjectIdentifer object that has to be built by domain objects
This commit is contained in:
@@ -6,8 +6,7 @@ Bundle-Version: 1.0.0.qualifier
|
||||
Bundle-Vendor: SAP
|
||||
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
|
||||
Export-Package: com.sap.sailing.expeditionconnector,
|
||||
com.sap.sailing.expeditionconnector.impl;x-friends:="com.sap.sailing.server.test,com.sap.sailing.expeditionconnector.persistence",
|
||||
com.sap.sailing.expeditionconnector.security
|
||||
com.sap.sailing.expeditionconnector.impl;x-friends:="com.sap.sailing.server.test,com.sap.sailing.expeditionconnector.persistence"
|
||||
Require-Bundle: com.sap.sailing.domain,
|
||||
com.sap.sailing.declination,
|
||||
com.sap.sailing.udpconnector,
|
||||
|
||||
+7
-5
@@ -14,6 +14,7 @@ import org.osgi.framework.BundleContext;
|
||||
import org.osgi.framework.ServiceRegistration;
|
||||
import org.osgi.util.tracker.ServiceTracker;
|
||||
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sailing.domain.racelogtracking.DeviceIdentifierStringSerializationHandler;
|
||||
import com.sap.sailing.domain.tracking.WindTrackerFactory;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionDeviceConfiguration;
|
||||
@@ -24,11 +25,11 @@ import com.sap.sailing.expeditionconnector.persistence.ExpeditionGpsDeviceIdenti
|
||||
import com.sap.sailing.expeditionconnector.persistence.ExpeditionGpsDeviceIdentifierJsonHandler;
|
||||
import com.sap.sailing.expeditionconnector.persistence.MongoObjectFactory;
|
||||
import com.sap.sailing.expeditionconnector.persistence.PersistenceFactory;
|
||||
import com.sap.sailing.expeditionconnector.security.ExpeditionSecuredDomainTypes;
|
||||
import com.sap.sailing.server.gateway.serialization.racelog.tracking.DeviceIdentifierJsonHandler;
|
||||
import com.sap.sse.common.TypeBasedServiceFinder;
|
||||
import com.sap.sse.security.SecurityService;
|
||||
import com.sap.sse.security.shared.QualifiedObjectIdentifier;
|
||||
import com.sap.sse.security.shared.impl.WildcardPermissionEncoder;
|
||||
import com.sap.sse.util.ServiceTrackerFactory;
|
||||
import com.sap.sse.util.impl.ThreadFactoryWithPriority;
|
||||
|
||||
@@ -93,14 +94,15 @@ public class Activator implements BundleActivator {
|
||||
.createAndOpen(context, SecurityService.class);
|
||||
try {
|
||||
final SecurityService securityService = securityServiceServiceTracker.waitForService(0);
|
||||
final WildcardPermissionEncoder permissionEncoder = new WildcardPermissionEncoder();
|
||||
for (ExpeditionDeviceConfiguration deviceConfiguration : expeditionTrackerFactory
|
||||
.getDeviceConfigurations()) {
|
||||
QualifiedObjectIdentifier identifier = ExpeditionSecuredDomainTypes.EXPEDITION_DEVICE_CONFIGURATION
|
||||
.getQualifiedObjectIdentifier(deviceConfiguration);
|
||||
securityService.migrateOwnership(identifier, identifier.getTypeRelativeObjectIdentifier());
|
||||
QualifiedObjectIdentifier identifier = deviceConfiguration.getIdentifier();
|
||||
securityService.migrateOwnership(identifier, permissionEncoder.decodePermissionPart(
|
||||
deviceConfiguration.getTypeRelativeObjectIdentifier().toString()));
|
||||
}
|
||||
securityService
|
||||
.assumeOwnershipMigrated(ExpeditionSecuredDomainTypes.EXPEDITION_DEVICE_CONFIGURATION.getName());
|
||||
.assumeOwnershipMigrated(SecuredDomainType.EXPEDITION_DEVICE_CONFIGURATION.getName());
|
||||
} catch (Exception e) {
|
||||
logger.log(Level.SEVERE, "Exception trying to migrate IgtimiAccounts implementation", e);
|
||||
}
|
||||
|
||||
-51
@@ -1,51 +0,0 @@
|
||||
package com.sap.sailing.expeditionconnector.security;
|
||||
|
||||
import com.sap.sailing.domain.common.security.SecuredDomainType;
|
||||
import com.sap.sailing.expeditionconnector.ExpeditionDeviceConfiguration;
|
||||
import com.sap.sse.ServerInfo;
|
||||
import com.sap.sse.security.shared.HasPermissions;
|
||||
import com.sap.sse.security.shared.IdentifierStrategy;
|
||||
import com.sap.sse.security.shared.impl.WildcardPermissionEncoder;
|
||||
|
||||
public class ExpeditionSecuredDomainTypes extends SecuredDomainType {
|
||||
|
||||
private static final long serialVersionUID = 8407831418440433245L;
|
||||
|
||||
public ExpeditionSecuredDomainTypes(String logicalTypeName, IdentifierStrategy identiferStrategy,
|
||||
Action... availableActions) {
|
||||
super(logicalTypeName, identiferStrategy, availableActions);
|
||||
}
|
||||
|
||||
public ExpeditionSecuredDomainTypes(String logicalTypeName, IdentifierStrategy identiferStrategy) {
|
||||
super(logicalTypeName, identiferStrategy);
|
||||
}
|
||||
|
||||
/**
|
||||
* Describes access permissions to {@code ExpeditionDeviceConfiguration} objects. Type-relative object identifier is
|
||||
* the WildcardPermissionEncoder.encode(getServerInfo().getServerName(), deviceConfiguration.getName());
|
||||
*/
|
||||
public static final HasPermissions EXPEDITION_DEVICE_CONFIGURATION = new SecuredDomainType(
|
||||
"EXPEDITION_DEVICE_CONFIGURATION", SwissTimingsIdentifierStrategy.EXPEDITION_DEVICE_CONFIGURATION);
|
||||
|
||||
private interface SwissTimingsIdentifierStrategy {
|
||||
static IdentifierStrategy EXPEDITION_DEVICE_CONFIGURATION = new IdentifierStrategy() {
|
||||
|
||||
@Override
|
||||
public String getIdentifierAsString(Object... object) {
|
||||
assert object.length == 1;
|
||||
ExpeditionDeviceConfiguration expeditionDeviceConfiguration = (ExpeditionDeviceConfiguration) object[0];
|
||||
return WildcardPermissionEncoder.encode(ServerInfo.getName(), expeditionDeviceConfiguration.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String convertNewIdentifer(Object... object) {
|
||||
// TODO: check again, what type can be used, for now assuming String for the
|
||||
// expeditionDeviceConfiguration.getName()
|
||||
assert object.length == 1;
|
||||
String identifier = (String) object[0];
|
||||
return WildcardPermissionEncoder.encode(ServerInfo.getName(), identifier);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user