Sistema para gerenciamento de infraestrutura de rede da FFLCH (prédios, salas, racks e equipamentos).
-
Gerenciamento de Prédios
- Cadastro, edição e remoção de prédios
- Visualização da lista de prédios
-
Gerenciamento de Salas/Locais
- Associação de salas a prédios
- Cadastro e edição de salas
-
Gerenciamento de Racks
- Cadastro de racks associados a salas
- Organização de equipamentos por rack
-
Gerenciamento de Equipamentos
- Cadastro de equipamentos de rede
-
Autenticação
- Login via SenhaÚnica USP
- Login local para testes (usuários administrador/comum)
- Backend: Laravel 12
- Frontend: Bootstrap 5, Blade Templates
- Banco de Dados: MariaDB / MySQL
- Autenticação: SenhaÚnica USP + Spatie Permission
- Testes: Laravel Dusk (testes de interface)
git clone LINK
cd rede
docker build --no-cache -t rede .
cp .env.example .env
Edite o .env e ajuste as variáveis necessárias, especialmente:
DB_HOST=rede_mariadb # nome do serviço no docker-compose
DB_DATABASE=rede
DB_USERNAME=rede
DB_PASSWORD=rede
SENHAUNICA_KEY= # credenciais da Senha Única USP
SENHAUNICA_SECRET=
SENHAUNICA_CALLBACK_ID=
SENHAUNICA_ADMINS= # número(s) USP dos administradores
docker compose up -d
docker exec -it rede php artisan key:generate
docker exec -it rede php artisan migrate
A aplicação estará disponível em http://127.0.0.1:8000.
docker compose exec rede_mariadb mariadb -u root -prede \
-e "CREATE DATABASE IF NOT EXISTS rede_dusk;"
docker compose exec rede_mariadb mariadb -u root -prede \
-e "GRANT ALL PRIVILEGES ON rede_dusk.* TO 'rede'@'%'; FLUSH PRIVILEGES;"
cp .env.dusk.local.example .env.dusk.local
Edite o .env.dusk.local e cole o valor de APP_KEY do seu .env:
APP_KEY= # copie do seu .env
Confirme também que a variável DUSK_DRIVER_URL aponta para o Selenium:
DUSK_DRIVER_URL=http://rede_selenium:4444
docker exec -it rede php artisan migrate --env=dusk.local
docker exec -it rede php artisan dusk
No diretório app/Helpers foi criado uma Trait UspdevDuskTrait.php que criar um usuário administrador e outro usuário como a partir da biblioteca senhaunica-socialite, assim em novos testes carregar essa Trait:
use App\Helpers\UspdevDuskTrait;
class NovoTest extends DuskTestCase{
use UspdevDuskTrait;
protected function setUp(): void
{
parent::setUp();
...
$this->setupAdminAndUser(); // cria usuários $this->commonUser e $this->adminUser
}
...
Exemplo de requisição post com shell:
curl --include --header "Authorization: senha-ultra-secreta" \
-X POST -H "Accept: aplication/json" -H "Content-Type: application/json" --data \
'{"hostname": "008.054517","ip": "200.0.1.4","poe_type": true,"model": "hp_comware","qtde_portas": 24,"rack_id": 1,"user_id": 1}' \
http://127.0.0.1:8000/api/equipamentos