Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,6 @@ REPLICADO_CODUNDCLG=
REPLICADO_SYBASE=
REPLICADO_FAKE=1

# SENHAUNICA-SOCIALITE ######################################
# https://github.com/uspdev/senhaunica-socialite
SENHAUNICA_KEY=faker
SENHAUNICA_SECRET=faker
SENHAUNICA_CALLBACK_ID=1
SENHAUNICA_ADMINS=110011
SENHAUNICA_DEV="http://auth.local:3141/wsusuario/oauth"

# URL do servidor oauth no ambiente de dev (default: no)
#SENHAUNICA_DEV="https://dev.uspdigital.usp.br/wsusuario/oauth"

Expand All @@ -94,4 +86,12 @@ DUSK_DRIVER_URL='http://selenium:4444/wd/hub'
DUSK_START_MAXIMIZED=true
DUSK_HEADLESS_DISABLED=true

USP_THEME_SKIN=uspdev
# SENHAUNICA-SOCIALITE ######################################
# https://github.com/uspdev/senhaunica-socialite
SENHAUNICA_KEY=faker
SENHAUNICA_SECRET=faker
SENHAUNICA_CALLBACK_ID=1
SENHAUNICA_ADMINS=1111
SENHAUNICA_DEV="http://auth.local:3141/wsusuario/oauth"

USP_THEME_SKIN=uspdev
12 changes: 7 additions & 5 deletions app/Http/Controllers/Api/EquipamentoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,25 @@ public function store(Request $request)

// Validação dos campos
$validated = $request->validate([
'hostname' => 'required',
'model' => 'required',
'hostname' => 'required|string|max:255',
'ip' => 'required|ip',
'qtde_portas' => 'required|integer|min:1|max:48',
'rack_id' => 'required|exists:racks,id',
'modelo_switch_id' => 'required|exists:modelo_switches,id',
'tipo' => 'required|in:A,W,C,V',
'comentario' => 'nullable|string',
'user_id' => 'required|exists:users,id',
'poe_type' => 'boolean'
]);

$validated['ordem'] = Equipamento::where('rack_id', $validated['rack_id'])->max('ordem') + 1;

$equipamento = Equipamento::updateOrCreate(
['hostname' => $validated['hostname']],
$validated
);

return response()->json([
'message' => 'Equipamento criado/atualizado com sucesso',
'equipamento' => $equipamento
'equipamento' => $equipamento->load('modeloSwitch')
], 201);
}
}
36 changes: 19 additions & 17 deletions app/Http/Controllers/EquipamentoController.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace App\Http\Controllers;

use App\Models\Equipamento;
use App\Models\ModeloSwitch;
use App\Models\Predio;
use App\Models\Rack;
use App\Http\Requests\EquipamentoRequest;
Expand All @@ -14,61 +15,62 @@ class EquipamentoController extends Controller
public function create(Request $request)
{
Gate::authorize('admin');

return view('equipamentos.create', [
'racks' => Rack::all(),
'predios' => Predio::all(),
'modelos' => ModeloSwitch::orderBy('fabricante')->orderBy('nome')->get(),
'rack_selecionado' => $request->input('rack_id')
]);
}

public function store(EquipamentoRequest $request)
{
{
Gate::authorize('admin');

$equipamento = Equipamento::create($request->validated() + ['user_id' => auth()->id()]);


$data = $request->validated();
$data['user_id'] = auth()->id();
$data['ordem'] = Equipamento::where('rack_id', $request->rack_id)->max('ordem') + 1;

$equipamento = Equipamento::create($data);

session()->flash('alert-success', 'Equipamento criado com sucesso!');
return redirect("/racks/{$equipamento->rack_id}");
}

public function show(Equipamento $equipamento)
{
Gate::authorize('admin');

return view('equipamentos.show', [
'equipamento' => $equipamento
]);
return view('equipamentos.show', ['equipamento' => $equipamento]);
}

public function edit(Equipamento $equipamento)
{
Gate::authorize('admin');

return view('equipamentos.edit', [
'equipamento' => $equipamento,
'predios' => Predio::all(),
'racks' => Rack::all()
'racks' => Rack::all(),
'modelos' => ModeloSwitch::orderBy('fabricante')->orderBy('nome')->get(),
]);
}

public function update(EquipamentoRequest $request, Equipamento $equipamento)
{
Gate::authorize('admin');

$equipamento->update($request->validated() + ['user_id' => auth()->id()]);

session()->flash('alert-success', 'Equipamento atualizado com sucesso!');
return redirect("/equipamentos/{$equipamento->id}");
}

public function destroy(Equipamento $equipamento)
{
Gate::authorize('admin');

$rack_id = $equipamento->rack_id;
$equipamento->delete();

session()->flash('alert-success', 'Equipamento removido com sucesso!');
return redirect("/racks/{$rack_id}");
}
Expand Down
66 changes: 66 additions & 0 deletions app/Http/Controllers/ModeloSwitchController.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?php

namespace App\Http\Controllers;

use App\Models\ModeloSwitch;
use App\Http\Requests\ModeloSwitchRequest;
use Illuminate\Support\Facades\Gate;

class ModeloSwitchController extends Controller
{
public function index()
{
Gate::authorize('admin');
return view('modelo-switches.index', [
'modelos' => ModeloSwitch::orderBy('fabricante')->orderBy('nome')->get(),
]);
}

public function create()
{
Gate::authorize('admin');
return view('modelo-switches.create');
}

public function store(ModeloSwitchRequest $request)
{
Gate::authorize('admin');
ModeloSwitch::create($request->validated() + ['user_id' => auth()->id()]);
session()->flash('alert-success', 'Modelo cadastrado com sucesso!');
return redirect('/modelo-switches');
}

public function show(ModeloSwitch $modeloSwitch)
{
Gate::authorize('admin');
return view('modelo-switches.show', ['modelo' => $modeloSwitch]);
}

public function edit(ModeloSwitch $modeloSwitch)
{
Gate::authorize('admin');
return view('modelo-switches.edit', ['modelo' => $modeloSwitch]);
}

public function update(ModeloSwitchRequest $request, ModeloSwitch $modeloSwitch)
{
Gate::authorize('admin');
$modeloSwitch->update($request->validated() + ['user_id' => auth()->id()]);
session()->flash('alert-success', 'Modelo atualizado com sucesso!');
return redirect('/modelo-switches');
}

public function destroy(ModeloSwitch $modeloSwitch)
{
Gate::authorize('admin');

if ($modeloSwitch->equipamentos()->count() > 0) {
session()->flash('alert-danger', 'Não é possível remover: existem equipamentos usando este modelo.');
return back();
}

$modeloSwitch->delete();
session()->flash('alert-success', 'Modelo removido com sucesso!');
return redirect('/modelo-switches');
}
}
4 changes: 2 additions & 2 deletions app/Http/Controllers/PredioController.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public function show(Predio $predio)
Gate::authorize('admin');
return view('predios.show', [
'predio' => $predio,
'racks' => $predio->racks,
'salas' => $predio->salas,
'racks' => $predio->racks()->orderBy('nome')->get(),
'salas' => $predio->salas()->orderBy('nome')->get(),
]);
}

Expand Down
28 changes: 27 additions & 1 deletion app/Http/Controllers/RackController.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
use Illuminate\Http\Request;
use App\Models\Rack;
use App\Models\Predio;
use App\Models\PatchPanel;
use App\Models\Equipamento;
use App\Http\Requests\RackRequest;
use Illuminate\Support\Facades\Gate;

Expand Down Expand Up @@ -64,12 +66,36 @@ public function destroy(Rack $rack)
{
Gate::authorize('admin');

if ($rack->patchPanels->isEmpty()) {
if ($rack->patchPanels->isEmpty() && $rack->equipamentos->isEmpty()){
$rack->delete();
session()->flash('alert-success', 'Rack deletado com sucesso');
} else {
session()->flash('alert-danger', 'Não foi possível deletar, pois existem patch panels cadastrados neste rack');
}
return redirect()->back();
}

public function reordenar(Rack $rack, Request $request)
{
Gate::authorize('admin');

$request->validate([
'itens' => 'required|array',
'itens.*.tipo' => 'required|in:equipamento,patchpanel',
'itens.*.id' => 'required|integer',
'itens.*.ordem' => 'required|integer',
]);

foreach ($request->itens as $item) {
if ($item['tipo'] === 'equipamento') {
Equipamento::where('id', $item['id'])->where('rack_id', $rack->id)
->update(['ordem' => $item['ordem']]);
} else {
PatchPanel::where('id', $item['id'])->where('rack_id', $rack->id)
->update(['ordem' => $item['ordem']]);
}
}

return response()->json(['success' => true]);
}
}
Loading
Loading