Fallback to default Poller Group on delete (#11278)

* Fallback to default Poller Group on delete

* rewrite to eloquent

* replace column remove with page reload (refresh everything)

* change access verification check method

* .

* Update PollerGroups.php

Co-authored-by: Tony Murray <murraytony@gmail.com>
This commit is contained in:
SourceDoctor
2020-03-20 10:16:49 +01:00
committed by GitHub
parent 0658b56c77
commit 9092988f7b
5 changed files with 42 additions and 44 deletions

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Controllers;
use App\Models\Device;
use App\Models\PollerGroups;
use Illuminate\Http\Request;
class PollerGroupController extends Controller
{
public function destroy(Request $request, PollerGroups $pollergroup)
{
if ($request->user()->isAdmin()) {
$pollergroup->delete();
return response()->json(['status' => 'success']);
} else {
return response()->json(['status' => 'failure']);
}
}
}

View File

@@ -33,6 +33,20 @@ class PollerGroups extends Model
protected $primaryKey = 'id';
protected $fillable = ['group_name', 'descr'];
/**
* Initialize this class
*/
public static function boot()
{
parent::boot();
static::deleting(function (PollerGroups $pollergroup) {
// handle device pollergroup fallback to default poller
$default_poller_id = \LibreNMS\Config::get('distributed_poller_group');
$pollergroup->devices()->update(['poller_group' => $default_poller_id]);
});
}
public function devices()
{
return $this->hasMany('App\Models\Device', 'poller_group', 'id');

View File

@@ -1,35 +0,0 @@
<?php
/*
* LibreNMS
*
* Copyright (c) 2014 Neil Lathwood <https://github.com/laf/ http://www.lathwood.co.uk/fa>
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation, either version 3 of the License, or (at your
* option) any later version. Please see LICENSE.txt at the top level of
* the source code distribution for details.
*/
header('Content-type: text/plain');
if (!Auth::user()->hasGlobalAdmin()) {
die('ERROR: You need to be admin');
}
if (!is_numeric($_POST['group_id'])) {
echo 'error with data';
exit;
} else {
if ($_POST['confirm'] == 'yes') {
$delete = dbDelete('poller_groups', '`id` = ?', array($_POST['group_id']));
if ($delete > '0') {
echo 'Poller group has been removed';
exit;
} else {
echo 'An error occurred removing the Poller group';
exit;
}
}
}

View File

@@ -121,18 +121,17 @@ $('#confirm-delete').on('show.bs.modal', function(e) {
$('#group-removal').click('', function(e) {
e.preventDefault();
group_id = $("#group_id").val();
groupId = $("#group_id").val();
$.ajax({
type: "POST",
url: "ajax_form.php",
data: $('form.remove_group_form').serialize() ,
type: 'DELETE',
url: "ajax/pollergroup/" + groupId,
success: function(msg) {
$("#thanks").html('<div class="alert alert-info">'+msg+'</div>');
toastr.success('@lang('Poller Group deleted')');
$("#confirm-delete").modal('hide');
$("#"+group_id).remove();
location.reload(1);
},
error: function() {
$("#thanks").html('<div class="alert alert-info">An error occurred removing the token.</div>');
error: function(e) {
toastr.error('@lang('Failed to delete Poller Group'): ' + e.statusText)
$("#confirm-delete").modal('hide');
}
});

View File

@@ -67,7 +67,7 @@ Route::group(['middleware' => ['auth', '2fa'], 'guard' => 'auth'], function () {
Route::group(['prefix' => 'ajax'], function () {
// page ajax controllers
Route::resource('location', 'LocationController', ['only' => ['update', 'destroy']]);
Route::resource('pollergroup', 'PollerGroupController', ['only' => ['destroy']]);
// misc ajax controllers
Route::group(['namespace' => 'Ajax'], function () {
Route::post('set_map_group', 'AvailabilityMapController@setGroup');