Fix for system registration, new systems couldnt be added.

This commit is contained in:
Deon George 2023-04-14 19:47:33 +10:00
parent 51e915b73d
commit c5500020ae
3 changed files with 29 additions and 27 deletions

View File

@ -580,7 +580,7 @@ class SystemController extends Controller
}
/**
* register system
* Register a system, or link to an existing system
*/
public function system_register(SystemRegister $request)
{
@ -588,14 +588,14 @@ class SystemController extends Controller
if ($request->isMethod('GET'))
return view('user.system.register');
if ($request->action != 'create')
if ($request->action === 'register' && $request->system_id)
return view('user.system.widget.register_confirm')
->with('o',System::findOrFail($request->system_id));
$o = System::findOrNew($request->system_id);
// If the system exists, and we are 'register', we'll start the address claim process
if ($o->exists && $request->action == 'register') {
if ($o->exists && $request->action === 'Link') {
$validate = Setup::findOrFail(config('app.id'))->system->inMyZones($o->addresses);
// If we have addresses, we'll trigger the routed netmail

View File

@ -12,39 +12,41 @@ class SystemRegister extends FormRequest
{
private System $so;
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize(Request $request)
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize(Request $request)
{
$this->so = System::findOrNew($request->system_id);
return Gate::allows($this->so->users->count() ? 'update' : 'register',$this->so);
}
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules(Request $request)
{
if ((! $request->isMethod('post')) || ($request->action == 'register'))
/**
* Get the validation rules that apply to the request.
*
* If the system exists (POST & action="register" & system_id=<value>), then no validation required
* If the system doesnt exist (POST & action="register" & system_id undefined) then we need just a name to start the process (action="create")
* Then, full validation
* @return array
*/
public function rules(Request $request)
{
if ((! $request->isMethod('post')) || ($request->action === 'register'))
return [];
if ((! $this->so->exists) && ($request->action == 'create')) {
if ((! $this->so->exists) && ($request->action === 'create'))
return [
'name' => 'required|min:3',
];
}
return array_filter(array_merge(
return array_filter(array_merge(
[
'name' => 'required|min:3',
],
($this->so->exists || ($request->action != 'create')) ? [
($this->so->exists || ($request->action !== 'create')) ? [
'location' => 'required|min:3',
'sysop' => 'required|min:3',
@ -62,5 +64,5 @@ class SystemRegister extends FormRequest
'hold' => 'required|boolean',
] : [],
));
}
}
}

View File

@ -34,7 +34,7 @@
</div>
</div>
@if (old('submit') != 'create')
@if (old('submit') !== 'create')
<div class="row">
<div class="col-12 pb-2">
<button type="button" name="submit" class="btn btn-success">Next</button><span id="next" class="m-2"><i class="spinner-border spinner-border-sm text-light d-none"></i></span>
@ -131,7 +131,7 @@
switch (data.status) {
case 200:
// if json is null, means no match, won't do again.
if(data.responseText==null || (data.responseText.length===0)) return;
if(data.responseText===null || (data.responseText.length===0)) return;
$('#create').empty().append(data.responseText);
@if($errors->count())
@ -166,7 +166,7 @@
})
}
if ({{ old('submit') == 'create' ? 'true' : 'false' }}) {
if ({{ old('submit') === 'create' ? 'true' : 'false' }}) {
getform();
}