public void Visit(CorporateHangar hangar) { Visit((Container)hangar); if (_error != ErrorCodes.NoError) { return; } if (hangar.IsLeaseExpired && _access != ContainerAccess.LogList) { _error = ErrorCodes.CorporationHangarLeaseExpired; return; } if (!(_access == ContainerAccess.LogList || _access == ContainerAccess.LogClear || _access == ContainerAccess.LogStart || _access == ContainerAccess.List || _access == ContainerAccess.LogStop)) { _error = CheckDockedState(hangar); if (_error != ErrorCodes.NoError) { return; } } //is the owner of this container is the corporation the character is a member of? var corpEid = _character.CorporationEid; if (DefaultCorporationDataCache.IsCorporationDefault(corpEid)) { _error = ErrorCodes.CharacterMustBeInPrivateCorporation; return; } if (!Corporation.Exists(corpEid)) { Logger.Error("a character found with a non-existing corporationEID. characterID:" + _character + " corpEID:" + corpEid); _error = ErrorCodes.InsufficientPrivileges; //no such corporation return; } if (hangar.Owner != corpEid) { _error = ErrorCodes.InsufficientPrivileges; return; } //if his corporation owns this container //check role var memberRole = Corporation.GetRoleFromSql(_character); if (!hangar.HasAccess(memberRole, _access)) { _error = ErrorCodes.InsufficientPrivileges; } }