Compare commits

...

2 Commits

Author SHA1 Message Date
2590c2de71 Remove deprecated Domain::managed()
All checks were successful
Create Docker Image / Build Docker Image (x86_64) (push) Successful in 37s
Create Docker Image / Build Docker Image (arm64) (push) Successful in 1m49s
Create Docker Image / Final Docker Image Manifest (push) Successful in 10s
2024-05-29 19:45:08 +10:00
31770241ec Fix for when no zones/echoareas have been created yet in a domain 2024-05-29 19:45:00 +10:00
7 changed files with 40 additions and 21 deletions

View File

@ -10,7 +10,7 @@ use App\Models\{Address,Zone};
class ZoneController extends Controller class ZoneController extends Controller
{ {
/** /**
* Add or edit a node * Add or edit a zone
*/ */
public function add_edit(Request $request,Zone $o) public function add_edit(Request $request,Zone $o)
{ {

View File

@ -24,8 +24,25 @@ class DomainRequest extends FormRequest
$o = $this->route('o'); $o = $this->route('o');
return [ return [
'name' => 'required|max:8|regex:/^[a-z-_~]{1,8}$/|unique:domains,name,'.($o->exists ? $o->id : 0), 'name' => [
'dnsdomain' => 'nullable|regex:/^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){1,127}(?![0-9]*$)[a-z0-9-]+\.?)$/i|unique:domains,dnsdomain,'.($o->exists ? $o->id : NULL), 'required',
'max:8',
'regex:/^[a-z-_~]{1,8}$/',
Rule::unique('domains')
->where(fn($query)=>$query
->where('name',$request->post('name'))
->when($o?->exists,fn($query)=>$query->where('id','<>',$o->id))
)
],
'dnsdomain' => [
'nullable',
'regex:/^(?!:\/\/)(?=.{1,255}$)((.{1,63}\.){1,127}(?![0-9]*$)[a-z0-9-]+\.?)$/i',
Rule::unique('domains')
->where(fn($query)=>$query
->where('dnsdomain',$request->post('dnsdomain'))
->when($o?->exists,fn($query)=>$query->where('id','<>',$o->id))
)
],
'active' => 'required|boolean', 'active' => 'required|boolean',
'public' => 'required|boolean', 'public' => 'required|boolean',
'accept_app' => 'required|boolean', 'accept_app' => 'required|boolean',
@ -33,7 +50,7 @@ class DomainRequest extends FormRequest
'nodestatus_id' => [ 'nodestatus_id' => [
'nullable', 'nullable',
Rule::exists(Echoarea::class,'id'), Rule::exists(Echoarea::class,'id'),
Rule::in($o->echoareas->pluck('id')), Rule::in($o?->echoareas->pluck('id')),
] ]
]; ];
} }

View File

@ -8,12 +8,10 @@ use Illuminate\Support\Facades\Gate;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;
use App\Classes\FTN\Packet; use App\Classes\FTN\Packet;
use App\Models\{Setup,System}; use App\Models\Setup;
class SystemRegisterRequest extends FormRequest class SystemRegisterRequest extends FormRequest
{ {
private System $so;
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
* *

View File

@ -69,7 +69,8 @@ class Domain extends Model
public function getCanAcceptAppAttribute(): bool public function getCanAcceptAppAttribute(): bool
{ {
return our_address($this)->count() return ($x=our_address($this))
&& $x->count()
&& $this->active && $this->active
&& $this->accept_app && $this->accept_app
&& Auth::id() && Auth::id()
@ -122,20 +123,18 @@ class Domain extends Model
}); });
} }
public function isManaged(): bool
{
return our_address()->pluck('zone.domain')->pluck('id')->contains($this->id);
}
/** /**
* Determine if this zone is managed by this host * Determine if this zone is managed by this host
* *
* @return bool * @return bool
* @deprecated use self::isManaged(); * @throws \Exception
*/ */
public function managed(): bool public function isManaged(): bool
{ {
return our_address($this)->count() > 0; return ($x=our_address())
&& $x->pluck('zone.domain')
->pluck('id')
->contains($this->id);
} }
/** /**

View File

@ -178,7 +178,7 @@
->orderBy('name') ->orderBy('name')
->with(['echoareas']) ->with(['echoareas'])
->get() as $o) ->get() as $o)
@if ($o->managed()) @if ($o->isManaged())
{ {
name: '{{ $o->name }}', name: '{{ $o->name }}',
data: [], data: [],

View File

@ -1,3 +1,4 @@
<!-- $o=Domain::class -->
@extends('layouts.app') @extends('layouts.app')
@section('htmlheader_title') @section('htmlheader_title')
@ -47,7 +48,7 @@ use App\Models\Echoarea;
</div> </div>
<div class="col-2"> <div class="col-2">
@if ($o->zones->count() > 1) @if ($o->zones?->count() > 1)
<label class="form-label">Flatten Zones <i class="bi bi-info-circle" title="Treat this domain as a 2D domain"></i></label> <label class="form-label">Flatten Zones <i class="bi bi-info-circle" title="Treat this domain as a 2D domain"></i></label>
<div class="input-group"> <div class="input-group">
<div class="btn-group" role="group"> <div class="btn-group" role="group">
@ -62,7 +63,7 @@ use App\Models\Echoarea;
</div> </div>
<div class="col-4"> <div class="col-4">
@if ($o->managed()) @if ($o->isManaged())
@if ($o->nodelist_filename) @if ($o->nodelist_filename)
<label for="nodelist_filename" class="form-label">Nodelist File</label> <label for="nodelist_filename" class="form-label">Nodelist File</label>
<div class="input-group"> <div class="input-group">

View File

@ -3,6 +3,10 @@
Known FTN Networks Known FTN Networks
@endsection @endsection
@php
use App\Models\Domain;
@endphp
@section('content') @section('content')
<div class="row"> <div class="row">
<div class="col-12"> <div class="col-12">
@ -22,7 +26,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@foreach (\App\Models\Domain::public()->orderBy('name')->with(['zones.addresses.system'])->get() as $do) @foreach (Domain::public()->orderBy('name')->with(['zones.addresses.system'])->get() as $do)
<tr> <tr>
<td> <td>
@if($do->active) @if($do->active)
@ -33,7 +37,7 @@
</td> </td>
<td>{{ $do->zones->where('active',TRUE)->pluck('zone_id')->sort()->join(', ') }}</td> <td>{{ $do->zones->where('active',TRUE)->pluck('zone_id')->sort()->join(', ') }}</td>
<td class="text-end">{{ $do->active ? 'Active' : 'Not Active' }}</td> <td class="text-end">{{ $do->active ? 'Active' : 'Not Active' }}</td>
<td class="text-end">{{ $do->managed() ? 'YES' : 'NO' }}</td> <td class="text-end">{{ $do->isManaged() ? 'YES' : 'NO' }}</td>
<td> <td>
@foreach (($x=$do->zones->pluck('addresses')->flatten())->where('role',\App\Models\Address::NODE_ZC)->sortBy('zone.zone_id') as $ao) @foreach (($x=$do->zones->pluck('addresses')->flatten())->where('role',\App\Models\Address::NODE_ZC)->sortBy('zone.zone_id') as $ao)
{{ $ao->system->sysop }}, <a href="{{ url('system/view',$ao->system_id) }}">{{ $ao->system->name }}</a><br> {{ $ao->system->sysop }}, <a href="{{ url('system/view',$ao->system_id) }}">{{ $ao->system->name }}</a><br>