public bool HasAccess(CorporationRole memberRole, ContainerAccess access) { //not defined for this container if (HangarAccess == CorporationRole.NotDefined) { return(true); } //corp lord? if (memberRole.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO)) { return(true); } //return a single bit: the highest var hangarAccess = HangarAccess.GetHighestContainerAccess(); // let's check the action var expectedAccess = (int)memberRole.CleanUpHangarAccess() & (int)hangarAccess; if (expectedAccess == 0) { return(false); } if (access != ContainerAccess.Delete && access != ContainerAccess.Remove && access != ContainerAccess.List) { return(true); } return(memberRole.IsAnyRole(hangarAccess.GetRelatedRemoveAccess())); }
public static CorporationRole CleanUpHangarAccess(this CorporationRole role) { var resultRole = (int)role; //has low remove => needs low access if (role.IsAnyRole(CorporationRole.HangarRemove_low)) { resultRole = (resultRole | (int)CorporationRole.HangarAccess_low); } //has medium remove => needs medium access if (role.IsAnyRole(CorporationRole.HangarRemove_medium)) { resultRole = (resultRole | (int)CorporationRole.HangarAccess_medium); } if (role.IsAnyRole(CorporationRole.HangarRemove_high)) { resultRole = (resultRole | (int)CorporationRole.HangarAccess_high); } if (role.IsAnyRole(CorporationRole.HangarRemove_secure)) { resultRole = (resultRole | (int)CorporationRole.HangarAccess_secure); } return((CorporationRole)resultRole); }
public static CorporationRole GetRelatedRemoveAccess(this CorporationRole corporationRole) { if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_secure)) { return(CorporationRole.HangarRemove_secure); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_high)) { return(CorporationRole.HangarRemove_high); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_medium)) { return(CorporationRole.HangarRemove_medium); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_low)) { return(CorporationRole.HangarRemove_low); } return(CorporationRole.HangarRemove_low); }
public static CorporationRole GetHighestContainerAccess(this CorporationRole corporationRole) { if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_secure)) { return(CorporationRole.HangarAccess_secure); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_high)) { return(CorporationRole.HangarAccess_high); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_medium)) { return(CorporationRole.HangarAccess_medium); } if (corporationRole.IsAnyRole(CorporationRole.HangarAccess_low)) { return(CorporationRole.HangarAccess_low); } return(CorporationRole.HangarAccess_low); }
public static bool IsAllProbesVisible(CorporationRole role) { return(role.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO)); }
private static ChannelMemberRole GetChannelMemberRoleByCorporationRole(CorporationRole corporationRole) { return(corporationRole.IsAnyRole(CorporationRole.CEO, CorporationRole.DeputyCEO, CorporationRole.HRManager, CorporationRole.PRManager) ? ChannelMemberRole.Operator : ChannelMemberRole.Undefined); }