Enabled default routing

This commit is contained in:
Deon George
2021-08-09 23:35:22 +10:00
parent 7ec01d778a
commit c7388c2db6
8 changed files with 154 additions and 35 deletions

View File

@@ -38,42 +38,48 @@ class Address extends Model
if (! $this->session('sespass'))
return $this->hasMany(self::class,'id','void');
switch ($this->role) {
case DomainController::NODE_ZC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id);
if (! $this->session('default')) {
switch ($this->role) {
case DomainController::NODE_ZC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id);
break;
break;
case DomainController::NODE_RC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id)
->where('region_id',$this->region_id);
case DomainController::NODE_RC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id)
->where('region_id',$this->region_id);
break;
break;
case DomainController::NODE_NC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id)
->where('region_id',$this->region_id)
->where('host_id',$this->host_id);
case DomainController::NODE_NC:
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id)
->where('region_id',$this->region_id)
->where('host_id',$this->host_id);
break;
break;
case DomainController::NODE_HC:
// Identify our children.
$children = self::select('addresses.*')
->where('hub_id',$this->id);
case DomainController::NODE_HC:
// Identify our children.
$children = self::select('addresses.*')
->where('hub_id',$this->id);
break;
break;
case DomainController::NODE_ACTIVE:
case DomainController::NODE_POINT:
// Nodes dont have children, but must return a relationship instance
return $this->hasOne(self::class,NULL,'void');
case DomainController::NODE_ACTIVE:
case DomainController::NODE_POINT:
// Nodes dont have children, but must return a relationship instance
return $this->hasOne(self::class,NULL,'void');
default:
throw new Exception('Unknown role: '.serialize($this->role));
default:
throw new Exception('Unknown role: '.serialize($this->role));
}
} else {
$children = self::select('addresses.*')
->where('zone_id',$this->zone_id);
}
// Remove any children that we have session details for (SAME AS HC)
@@ -116,9 +122,12 @@ class Address extends Model
return $this;
switch ($this->role) {
// ZCs dont have parents.
// ZCs dont have parents, but we may have a default
case DomainController::NODE_ZC:
return NULL;
if (($x=$this->zone->systems->where('pivot.default',TRUE))->count())
return $x->first()->match($this->zone)->first();
else
return NULL;
// RC
case DomainController::NODE_RC:

View File

@@ -34,7 +34,7 @@ class System extends Model
public function sessions()
{
return $this->belongsToMany(Zone::class)
->withPivot(['sespass','pktpass','ticpass','fixpass','zt_ipv4','zt_ipv6']);
->withPivot(['sespass','pktpass','ticpass','fixpass','zt_ipv4','zt_ipv6','default']);
}
/**

View File

@@ -40,4 +40,13 @@ class Zone extends Model
{
return $this->belongsTo(System::class);
}
/**
* Get the default route for this zone
*/
public function systems()
{
return $this->belongsToMany(System::class)
->withPivot(['default']);
}
}