Security Block Fully Functional.

This commit is contained in:
AlgorithmX2
2014-01-31 23:37:27 -06:00
parent e134a9806b
commit 97eaf35f6a
15 changed files with 524 additions and 61 deletions
+3 -3
View File
@@ -96,11 +96,11 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
throw new RuntimeException( "Invalid Access to Networked Storage API detected." );
}
private boolean testPermission(BaseActionSource src, SecurityPermissions inject)
private boolean testPermission(BaseActionSource src, SecurityPermissions permission)
{
if ( src.isPlayer() )
{
if ( !security.hasPermission( ((PlayerSource) src).player, SecurityPermissions.INJECT ) )
if ( !security.hasPermission( ((PlayerSource) src).player, permission ) )
return true;
}
else if ( src.isMachine() )
@@ -119,7 +119,7 @@ public class NetworkInventoryHandler<T extends IAEStack<T>> implements IMEInvent
ISecurityGrid sg = gn.getCache( ISecurityGrid.class );
playerID = sg.getOwner();
if ( !security.hasPermission( playerID, SecurityPermissions.INJECT ) )
if ( !security.hasPermission( playerID, permission ) )
return true;
}
}
+20 -3
View File
@@ -4,6 +4,7 @@ import appeng.api.AEApi;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.config.SecurityPermissions;
import appeng.api.implementations.items.IBiometricCard;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.PlayerSource;
import appeng.api.storage.IMEInventoryHandler;
@@ -45,8 +46,7 @@ public class SecurityInventory implements IMEInventoryHandler<IAEItemStack>
{
if ( hasPermission( src ) && AEApi.instance().items().itemBiometricCard.sameAs( input.getItemStack() ) )
{
IAEItemStack stored = storedItems.findPrecise( input );
if ( stored == null || !stored.isMeaninful() )
if ( canAccept( input ) )
{
if ( type == Actionable.SIMULATE )
return null;
@@ -110,7 +110,24 @@ public class SecurityInventory implements IMEInventoryHandler<IAEItemStack>
@Override
public boolean canAccept(IAEItemStack input)
{
return AEApi.instance().items().itemBiometricCard.sameAs( input.getItemStack() );
if ( input.getItem() instanceof IBiometricCard )
{
IBiometricCard tbc = (IBiometricCard) input.getItem();
String newUser = tbc.getUsername( input.getItemStack() );
for (IAEItemStack ais : storedItems)
{
if ( ais.isMeaninful() )
{
String thisUser = tbc.getUsername( ais.getItemStack() );
if ( thisUser.equals( newUser ) )
return false;
}
}
return true;
}
return false;
}
@Override