creation and implementation of the crud model for users and start of the pending_users DB
This commit is contained in:
parent
1da54d43f4
commit
c387eae375
|
|
@ -17,6 +17,12 @@
|
||||||
|
|
||||||
class userController extends Controller
|
class userController extends Controller
|
||||||
{
|
{
|
||||||
|
public function UserProfile (){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function authenticate(Request $request)
|
public function authenticate(Request $request)
|
||||||
{
|
{
|
||||||
|
|
@ -34,4 +40,82 @@ public function authenticate(Request $request)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function ListUsers()
|
||||||
|
{
|
||||||
|
$users = User::all();
|
||||||
|
return view('Admin.CrudUsers.listUsers', compact('users'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function show($id)
|
||||||
|
{
|
||||||
|
$user = User::findOrFail($id);
|
||||||
|
return view('Admin.CrudUsers.showUsers', compact('user'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function edit($id)
|
||||||
|
{
|
||||||
|
$user = User::findOrFail($id);
|
||||||
|
return view('Admin.CrudUsers.editUsers', compact('user'));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(Request $request, User $user)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'name' => 'required',
|
||||||
|
'email' => 'required|email|unique:users,email,' . $user->id,
|
||||||
|
'password' => 'nullable|min:8|confirmed',
|
||||||
|
'user_type' => 'required',
|
||||||
|
'user_phone' => 'required',
|
||||||
|
'user_nif' => 'required',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user->update([
|
||||||
|
'name' => $request->get('name'),
|
||||||
|
'email' => $request->get('email'),
|
||||||
|
'password' => $request->filled('password') ? Hash::make($request->get('password')) : $user->password,
|
||||||
|
'user_type' => $request->get('user_type'),
|
||||||
|
'user_phone' => $request->get('user_phone'),
|
||||||
|
'user_nif' => $request->get('user_nif'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return redirect('/users/ListUsers')->with('success', 'Usuario atualizado com Sucesso!!');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function create()
|
||||||
|
{
|
||||||
|
return view('users.create');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function store(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'name' => 'required',
|
||||||
|
'email' => 'required|email|unique:users',
|
||||||
|
'password' => 'required|min:8|confirmed',
|
||||||
|
'user_type' => 'required',
|
||||||
|
'user_phone' => 'required',
|
||||||
|
'user_nif' => 'required',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user = new User([
|
||||||
|
'name' => $request->get('name'),
|
||||||
|
'email' => $request->get('email'),
|
||||||
|
'password' => Hash::make($request->get('password')),
|
||||||
|
'user_type' => $request->get('user_type'),
|
||||||
|
'user_phone' => $request->get('user_phone'),
|
||||||
|
'user_nif' => $request->get('user_nif'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
$user->save();
|
||||||
|
return redirect('/users')->with('success', 'User created successfully!');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function destroy(User $user)
|
||||||
|
{
|
||||||
|
$user->delete();
|
||||||
|
return redirect('/users/ListUsers')->with('success', 'User deleted successfully!');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ class CheckSuperAdmin
|
||||||
*/
|
*/
|
||||||
public function handle(Request $request, Closure $next): Response
|
public function handle(Request $request, Closure $next): Response
|
||||||
{
|
{
|
||||||
if (auth()->user() && auth()->user()->user_type == 'Super_Admin') {
|
if (auth()->user() && auth()->user()->user_type == 'Super_Administrador') {
|
||||||
return $next($request);
|
return $next($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
11
app/Models/pending_user.php
Normal file
11
app/Models/pending_user.php
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class pending_user extends Model
|
||||||
|
{
|
||||||
|
use HasFactory;
|
||||||
|
}
|
||||||
1
resources/views/Admin/CrudUsers/createUser.blade.php
Normal file
1
resources/views/Admin/CrudUsers/createUser.blade.php
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
<h1>CRUD USERS</h1>
|
||||||
116
resources/views/Admin/CrudUsers/editUsers.blade.php
Normal file
116
resources/views/Admin/CrudUsers/editUsers.blade.php
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
@section('content-wrapper')
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
<div class="container-fluid">
|
||||||
|
{{-- <h1>Editar dados do {{$user->name }}</h1>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
Detalhes do usuário :: {{ $user->name }}</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm">
|
||||||
|
<input type="text">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm">
|
||||||
|
<input type="text">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<button class="btn btn-primary">Editar</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div> --}}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-8 col-md-offset-2">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">Editar Usuário</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<form action="{{ route('users.update', $user->id) }}" method="POST">
|
||||||
|
@csrf
|
||||||
|
@method('PUT')
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="name">Nome:</label>
|
||||||
|
<input type="text" class="form-control" id="name" name="name" value="{{ $user->name }}" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="email">Email:</label>
|
||||||
|
<input type="email" class="form-control" id="email" name="email" value="{{ $user->email }}" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="password">Senha:</label>
|
||||||
|
<input type="password" class="form-control" id="password" name="password" placeholder="Deixe em branco para não alterar">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="password_confirmation">Confirme a senha:</label>
|
||||||
|
<input type="password" class="form-control" id="password_confirmation" name="password_confirmation">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="user_type">Tipo de Usuário:</label>
|
||||||
|
<select class="form-control" id="user_type" name="user_type" required>
|
||||||
|
<option value="Super_Administrador" {{ $user->user_type == 'Super_Administrador' ? 'selected' : '' }}>Super Administrador</option>
|
||||||
|
<option value="Administrador" {{ $user->user_type == 'Administrador' ? 'selected' : '' }}>Administrador</option>
|
||||||
|
<option value="Utilizador" {{ $user->user_type == 'Utilizador' ? 'selected' : '' }}>Utilizador</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="user_phone">Telemóvel:</label>
|
||||||
|
<input type="text" class="form-control" id="user_phone" name="user_phone" value="{{ $user->user_phone }}" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="user_nif">NIF:</label>
|
||||||
|
<input type="text" class="form-control" id="user_nif" name="user_nif" value="{{ $user->user_nif }}" required>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-primary">Salvar</button>
|
||||||
|
<a href="{{ route('users.list') }}" class="btn btn-secondary">Cancelar</a>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{-- ./container-fluid --}}
|
||||||
|
</section>
|
||||||
|
{{-- /.content --}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{-- ./content-wrapper --}}
|
||||||
|
|
||||||
|
|
||||||
|
@endsection
|
||||||
146
resources/views/Admin/CrudUsers/listUsers.blade.php
Normal file
146
resources/views/Admin/CrudUsers/listUsers.blade.php
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
@section('content-wrapper')
|
||||||
|
<div class="content-wrapper">
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<h1>Algum Titulo </h1>
|
||||||
|
@if (session('success'))
|
||||||
|
<div class="alert alert-success">
|
||||||
|
{{ session('success') }}
|
||||||
|
</div>
|
||||||
|
@endif
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Tabela Utilizadores</h3>
|
||||||
|
|
||||||
|
<div class="card-tools">
|
||||||
|
<div class="input-group input-group-sm" style="width: 150px;">
|
||||||
|
<input type="text" name="table_search" class="form-control float-right"
|
||||||
|
placeholder="Search">
|
||||||
|
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="submit" class="btn btn-default">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-header -->
|
||||||
|
<div class="card-body table-responsive p-0">
|
||||||
|
<table class="table table-hover text-nowrap">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<th>Nome</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>Tipo de Usuário</th>
|
||||||
|
<th>Ações</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($users as $user)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $user->id }}</td>
|
||||||
|
<td>{{ $user->name }}</td>
|
||||||
|
<td>{{ $user->email }}</td>
|
||||||
|
<td>{{ $user->user_type }}</td>
|
||||||
|
<td class="text-center d-flex justify-content-around">
|
||||||
|
<a href="{{ route('users.Show', ['id' => $user->id]) }}">
|
||||||
|
<i class="fa-solid fa-eye text-secondary"></i>
|
||||||
|
</a>
|
||||||
|
<a href="{{ route('users.edit', ['id' => $user->id]) }}">
|
||||||
|
<i class="fa-solid fa-edit text-primary"></i>
|
||||||
|
</a>
|
||||||
|
{{-- <a href="#">
|
||||||
|
<i class="fa-solid fa-trash-alt text-danger"></i>
|
||||||
|
</a> --}}
|
||||||
|
<form action="{{ route('users.destroy', $user) }}" method="POST"
|
||||||
|
onsubmit="return confirm('Are you sure you want to delete this user?');"
|
||||||
|
style="display:inline;">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
<button type="submit" class="btn btn-danger btn-sm">
|
||||||
|
<i class="fa-solid fa-trash-alt text-white"></i>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-body -->
|
||||||
|
</div>
|
||||||
|
<!-- /.card -->
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
<h3 class="card-title">Pendentes Utilizadores</h3>
|
||||||
|
|
||||||
|
<div class="card-tools">
|
||||||
|
<div class="input-group input-group-sm" style="width: 150px;">
|
||||||
|
<input type="text" name="table_search" class="form-control float-right"
|
||||||
|
placeholder="Search">
|
||||||
|
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="submit" class="btn btn-default">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-header -->
|
||||||
|
<div class="card-body table-responsive p-0">
|
||||||
|
<table class="table table-hover text-nowrap">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Nome</th>
|
||||||
|
<th>Email</th>
|
||||||
|
<th>Ações</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach ($users as $user)
|
||||||
|
<tr>
|
||||||
|
<td>{{ $user->name }}</td>
|
||||||
|
<td>{{ $user->email }}</td>
|
||||||
|
<td class="text-center d-flex justify-content-around">
|
||||||
|
<a href="{{ route('users.Show', ['id' => $user->id]) }}">
|
||||||
|
<i class="fa-solid fa-thumbs-up text-success"></i>
|
||||||
|
</a>
|
||||||
|
<a href="{{ route('users.edit', ['id' => $user->id]) }}">
|
||||||
|
<i class="fa-solid fa-edit text-primary"></i>
|
||||||
|
</a>
|
||||||
|
{{-- <a href="#">
|
||||||
|
<i class="fa-solid fa-trash-alt text-danger"></i>
|
||||||
|
</a> --}}
|
||||||
|
<form action="{{ route('users.destroy', $user) }}" method="POST"
|
||||||
|
onsubmit="return confirm('Are you sure you want to delete this user?');"
|
||||||
|
style="display:inline;">
|
||||||
|
@csrf
|
||||||
|
@method('DELETE')
|
||||||
|
<button type="submit" class="btn btn-danger btn-sm">
|
||||||
|
<i class="fa-solid fa-trash-alt text-white"></i>
|
||||||
|
</button>
|
||||||
|
</form>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
@endforeach
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-body -->
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{-- /.container-fluid" --}}
|
||||||
|
|
||||||
|
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
61
resources/views/Admin/CrudUsers/showUsers.blade.php
Normal file
61
resources/views/Admin/CrudUsers/showUsers.blade.php
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
@section('content-wrapper')
|
||||||
|
|
||||||
|
<div class="content-wrapper">
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<h1>Detalhes de User</h1>
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">
|
||||||
|
Detalhes do usuário :: {{ $user->name }}</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table table-bordered table-striped">
|
||||||
|
<tr>
|
||||||
|
<th>ID</th>
|
||||||
|
<td>{{ $user->id }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Nome</th>
|
||||||
|
<td>{{ $user->name }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Email</th>
|
||||||
|
<td>{{ $user->email }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Tipo de usuário</th>
|
||||||
|
<td>{{ $user->user_type }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Criado em : </th>
|
||||||
|
<td>{{ $user->created_at }}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>Atualizado em : </th>
|
||||||
|
<td>{{ $user->updated_at }}</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm">
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<a href="{{ route('users.edit', ['id' => $user->id]) }}" class="btn btn-primary">Editar usuário</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{{-- /.container-fluid --}}
|
||||||
|
|
||||||
|
</section>
|
||||||
|
{{-- /.content --}}
|
||||||
|
</div>
|
||||||
|
{{-- /.content-wrapper --}}
|
||||||
|
@endsection
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
@extends('Templates/templateAdmin')
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
@section('content-wrapper')
|
@section('content-wrapper')
|
||||||
|
|
@ -248,6 +247,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{{-- /.container-fluid --}}
|
||||||
</section>
|
</section>
|
||||||
<!-- /.content -->
|
<!-- /.content -->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
100
resources/views/Admin/profile.blade.php
Normal file
100
resources/views/Admin/profile.blade.php
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
@extends('Templates/templateAdmin')
|
||||||
|
|
||||||
|
@section('content-wrapper')
|
||||||
|
<div class="content-wrapper">
|
||||||
|
|
||||||
|
<section class="content">
|
||||||
|
|
||||||
|
<div class="container-fluid">
|
||||||
|
<div class="row justify-content-center">
|
||||||
|
<div class="col-md-12">
|
||||||
|
<!-- Card box User Profile -->
|
||||||
|
<div class="card card-primary">
|
||||||
|
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="row align-items-center">
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="user-panel mt-3 pb-3 mb-3">
|
||||||
|
|
||||||
|
<div class="image d-flex justify-content-center align-items-center">
|
||||||
|
<label for="input-file" class="imgProfile-hover">
|
||||||
|
<img src="{{ asset('/img/avatar5.png') }}"
|
||||||
|
class="img-circle elevation-2 imgProfile" alt="User Image">
|
||||||
|
|
||||||
|
{{-- Parte de baixo para colocar o 'Escolher arquivo' --}}
|
||||||
|
{{-- <div class="input-group input-file">
|
||||||
|
<input type="text" class="form-control"
|
||||||
|
placeholder="Escolha um arquivo" readonly>
|
||||||
|
<span class="input-group-btn">
|
||||||
|
<button class="btn btn-secondary btn-choose"
|
||||||
|
type="button">Escolher arquivo</button>
|
||||||
|
</span>
|
||||||
|
</div> --}}
|
||||||
|
|
||||||
|
</label>
|
||||||
|
{{-- <input type="file" id="input-file" class="d-none"> --}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="info text-center">
|
||||||
|
{{-- <p class="d-block" style="font-size: 2rem;">{{ $tipo_usuario }}</p> --}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
<p>Nome: <input class="form-control" type="text" name=""></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
<p>Email: <input class="form-control" type="text" name=""></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
<p>Telemovel: <input class="form-control" type="text" name=""></p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
<p>NIF: <input class="form-control" type="text" name=""></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
{{-- <p>Nova Senha: <input class="form-control" type="text" name=""></p> --}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-sm form-group align-self-center">
|
||||||
|
<a href="" class="btn btn-primary">Redefinir Senha</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.card-body -->
|
||||||
|
|
||||||
|
<div class="card-footer">
|
||||||
|
<div class="float-right">
|
||||||
|
<button type="submit" class="btn btn-primary">Guardar</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- /.card -->
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
{{-- ./container-fluid" --}}
|
||||||
|
</section>
|
||||||
|
{{-- ./content --}}
|
||||||
|
</div>
|
||||||
|
{{-- ./content-wrapper --}}
|
||||||
|
@endsection
|
||||||
|
|
@ -69,12 +69,13 @@ class="fas fa-bars"></i></a>
|
||||||
<!-- Main Sidebar Container -->
|
<!-- Main Sidebar Container -->
|
||||||
<aside class="main-sidebar sidebar-dark-primary elevation-4">
|
<aside class="main-sidebar sidebar-dark-primary elevation-4">
|
||||||
<!-- Brand Logo -->
|
<!-- Brand Logo -->
|
||||||
<a href="index3.html" class="brand-link">
|
<a href="#" class="brand-link" style="pointer-events: none;">
|
||||||
<img src="{{ asset('/img/ispt.jpg') }}" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
|
<img src="{{ asset('/img/ispt.jpg') }}" alt="AdminLTE Logo" class="brand-image img-circle elevation-3"
|
||||||
style="opacity: .8">
|
style="opacity: .8">
|
||||||
<span class="brand-text font-weight-light">ISPT 4.0</span>
|
<span class="brand-text font-weight-light">ISPT 4.0</span>
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
|
||||||
<!-- Sidebar -->
|
<!-- Sidebar -->
|
||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<!-- Sidebar user panel (optional) -->
|
<!-- Sidebar user panel (optional) -->
|
||||||
|
|
@ -85,14 +86,14 @@ class="fas fa-bars"></i></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
@if (Auth::check())
|
@if (Auth::check())
|
||||||
<a href="{{ 'user' }}" class="d-block">{{ Auth::user()->user_type }}
|
<a href="{{ 'usersProfiles' }}" class="d-block">{{ Auth::user()->user_type }}
|
||||||
</a>
|
</a>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- SidebarSearch Form -->
|
<!-- SidebarSearch Form -->
|
||||||
<div class="form-inline">
|
{{-- <div class="form-inline">
|
||||||
<div class="input-group" data-widget="sidebar-search">
|
<div class="input-group" data-widget="sidebar-search">
|
||||||
<input class="form-control form-control-sidebar" type="search" placeholder="Procurar"
|
<input class="form-control form-control-sidebar" type="search" placeholder="Procurar"
|
||||||
aria-label="search">
|
aria-label="search">
|
||||||
|
|
@ -102,7 +103,7 @@ class="fas fa-bars"></i></a>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div> --}}
|
||||||
|
|
||||||
<!-- Sidebar Menu -->
|
<!-- Sidebar Menu -->
|
||||||
<nav class="mt-2">
|
<nav class="mt-2">
|
||||||
|
|
@ -111,80 +112,38 @@ class="fas fa-bars"></i></a>
|
||||||
<!-- Add icons to the links using the .nav-icon class
|
<!-- Add icons to the links using the .nav-icon class
|
||||||
with font-awesome or any other icon font library -->
|
with font-awesome or any other icon font library -->
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="dashboard.html" class="nav-link active">
|
<a href="{{route('home')}}" class="nav-link active">
|
||||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||||
<p>
|
<p> Dashboard </p>
|
||||||
Dashboard
|
|
||||||
</p>
|
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
<a href="#" class="nav-link">
|
||||||
|
<i class="nav-icon fas fa-helmet-safety"></i>
|
||||||
|
<p> Criar obra </p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
{{-- <li class="nav-item">
|
||||||
<form method="POST" action="{{ route('logout') }}">
|
<form method="POST" action="{{ route('logout') }}">
|
||||||
@csrf
|
@csrf
|
||||||
<button type="submit" class="nav-link active">Logout</button>
|
<button type="submit" class="nav-link active">Logout</button>
|
||||||
</form>
|
</form>
|
||||||
{{-- <a href="{{route('logout')}}" class="nav-link active">
|
</li> --}}
|
||||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
|
||||||
<p>
|
|
||||||
Logout
|
|
||||||
</p>
|
|
||||||
</a> --}}
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="{{ route('formulario') }}" class="nav-link active">
|
|
||||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
|
||||||
<p>
|
|
||||||
Criar Utilizadores
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
|
{{-- <li class="nav-item">
|
||||||
<a href="{{ route('test') }}" class="nav-link active">
|
<a href="{{ route('test') }}" class="nav-link active">
|
||||||
<i class="nav-icon fas fa-tachometer-alt"></i>
|
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||||
<p>
|
<p>
|
||||||
TestController
|
TestController
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li> --}}
|
||||||
|
|
||||||
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="#" class="nav-link">
|
|
||||||
<i class="nav-icon fas fa-helmet-safety"></i>
|
|
||||||
<p>
|
|
||||||
Obras
|
|
||||||
<i class="fas fa-angle-left right"></i>
|
|
||||||
</p>
|
|
||||||
</a>
|
|
||||||
<ul class="nav nav-treeview">
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="planeamento.html" class="nav-link">
|
|
||||||
<i class="fa-solid fa-file-edit"></i>
|
|
||||||
<p>Em planeamento</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="preparadas.html" class="nav-link">
|
|
||||||
<i class="fa-solid fa-file"></i>
|
|
||||||
<p>Preparadas</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="execucao.html" class="nav-link">
|
|
||||||
<i class="fas fa-file-alt"></i>
|
|
||||||
<p>Em execução</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
<li class="nav-item">
|
|
||||||
<a href="concluidas.html" class="nav-link">
|
|
||||||
<i class="fas fa-check-circle"></i>
|
|
||||||
<p>Concluídas</p>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
<!-- /.Multiple menu item -->
|
<!-- /.Multiple menu item -->
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
|
|
@ -197,18 +156,29 @@ class="fas fa-bars"></i></a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="criar-ativos.html" class="nav-link">
|
<a href="#" class="nav-link">
|
||||||
<i class="nav-icon fas fa-briefcase"></i>
|
<i class="nav-icon fas fa-briefcase"></i>
|
||||||
<p>
|
<p> Portefólio
|
||||||
Portefólio
|
|
||||||
<i class="fas fa-angle-left right"></i>
|
<i class="fas fa-angle-left right"></i>
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
<ul class="nav nav-treeview">
|
<ul class="nav nav-treeview">
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="criar-ativos.html" class="nav-link">
|
<a href="utilizadores.html" class="nav-link">
|
||||||
<i class="fa-solid fa-file-edit"></i>
|
<i class="fa-solid fa-file-edit"></i>
|
||||||
<p>Gerir Ativos</p>
|
<p> Gerir Ativos</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="{{route('users.list')}}" class="nav-link">
|
||||||
|
<i class="fa-solid fa-file-edit"></i>
|
||||||
|
<p> Gerir Utilizadores</p>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a href="{{ route('formulario') }}" class="nav-link">
|
||||||
|
<i class="nav-icon fas fa-tachometer-alt"></i>
|
||||||
|
<p> Criar Utilizadores </p>
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
@ -218,8 +188,7 @@ class="fas fa-bars"></i></a>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a href="#" class="nav-link">
|
<a href="#" class="nav-link">
|
||||||
<i class="nav-icon fas fa-gear"></i>
|
<i class="nav-icon fas fa-gear"></i>
|
||||||
<p>
|
<p> Administração
|
||||||
Administração
|
|
||||||
<i class="fas fa-angle-left right"></i>
|
<i class="fas fa-angle-left right"></i>
|
||||||
</p>
|
</p>
|
||||||
</a>
|
</a>
|
||||||
|
|
@ -238,6 +207,7 @@ class="fas fa-bars"></i></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<!-- /.Single menu item -->
|
<!-- /.Single menu item -->
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
|
||||||
100
routes/web.php
100
routes/web.php
|
|
@ -20,6 +20,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Web Routes
|
| Web Routes
|
||||||
|
|
@ -35,7 +39,7 @@
|
||||||
// Rotas protegidas que exigem verificação de e-mail
|
// Rotas protegidas que exigem verificação de e-mail
|
||||||
Route::get('/', function () {
|
Route::get('/', function () {
|
||||||
return view('Admin/index');
|
return view('Admin/index');
|
||||||
});
|
})->name('home');
|
||||||
|
|
||||||
Route::get('formulario', function () {
|
Route::get('formulario', function () {
|
||||||
return view('email/formAdmin');
|
return view('email/formAdmin');
|
||||||
|
|
@ -43,24 +47,83 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| User_Type (Super_Administrador)
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|*** Routes unique access to the Super_Administrator, due to its sensitive data.
|
||||||
|
|
|
||||||
|
|
|
||||||
|
*/
|
||||||
Route::middleware(['auth', 'verified', 'checksuperadmin'])->group(function () {
|
Route::middleware(['auth', 'verified', 'checksuperadmin'])->group(function () {
|
||||||
// Rotas protegidas que exigem verificação de e-mail e user_type Super_Admin
|
// Rotas protegidas que exigem verificação de e-mail e user_type Super_Admin
|
||||||
|
Route::get('/register', [RegisteredUserController::class, 'create'])
|
||||||
|
->name('register');
|
||||||
|
Route::post('/register', [RegisteredUserController::class, 'store']);
|
||||||
|
|
||||||
Route::get('formulario', function () {
|
Route::get('formulario', function () {
|
||||||
return view('email/formAdmin');
|
return view('email/formAdmin');
|
||||||
})->name('formulario');
|
})->name('formulario');
|
||||||
|
|
||||||
|
Route::get('usersProfiles', [userController::class, 'UserProfile'] )-> name('usersProfiles');
|
||||||
|
|
||||||
|
// Rota responsavel por enviar o formulario
|
||||||
|
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
||||||
|
|
||||||
|
Route::get('/CreateUser', function () {
|
||||||
|
return view('Admin/createUser');
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| CRUD - users
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| Definition routes to implement the CRUD model
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
Route::get('users/ListUsers', [userController::class, 'ListUsers'])->name('users.list');
|
||||||
|
});
|
||||||
|
|
||||||
|
Route::get('users/{id}', [userController::class, 'show'])->name('users.Show');
|
||||||
|
|
||||||
|
Route::get('users/{id}/edit',[userController::class, 'edit'])->name('users.edit');
|
||||||
|
|
||||||
|
Route::put('users/{user}', [userController::class, 'update'])->name('users.update');
|
||||||
|
|
||||||
|
Route::delete('users/{user}', [UserController::class, 'destroy'])->name('users.destroy');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Route::get('userProfile', function (){
|
||||||
|
return view('Admin/profile');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Rota responsavel por enviar o formulario
|
Route::get('/test-email', function () {
|
||||||
Route::post('enviar-formulario', [FormController::class, 'enviarEmail'])->name('enviar.formulario');
|
$to = 'ygbanzato@isptgroup.com';
|
||||||
|
$subject = 'Test Email from Laravel';
|
||||||
|
|
||||||
Route::get('/CreateUser', function(){
|
$message = Mail::raw('This is a test email from Laravel.', function ($message) use ($to, $subject) {
|
||||||
return view('email/createUser');
|
$message->to($to)->subject($subject);
|
||||||
|
});
|
||||||
|
|
||||||
|
if ($message) {
|
||||||
|
return 'Email sent successfully';
|
||||||
|
} else {
|
||||||
|
return 'Failed to send email';
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Route::get('test', [userController::class,'test'])->name('test');
|
|
||||||
|
|
||||||
|
// Route::get('/forgot-password', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
|
||||||
|
|
||||||
|
// Route::post('/forgot-password', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
|
||||||
|
|
||||||
|
// Route::get('/reset-password/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset');
|
||||||
|
// Route::post('/reset-password', [ResetPasswordController::class, 'reset'])->name('password.update')
|
||||||
|
|
||||||
|
|
||||||
// Route::post('/reset-password', [ResetPasswordController::class, 'reset'])->name('password.update');
|
// Route::post('/reset-password', [ResetPasswordController::class, 'reset'])->name('password.update');
|
||||||
|
|
@ -90,28 +153,3 @@
|
||||||
|
|
||||||
// return back()->with('status', 'verification-link-sent');
|
// return back()->with('status', 'verification-link-sent');
|
||||||
// })->middleware(['auth', 'throttle:6,1'])->name('verification.send');
|
// })->middleware(['auth', 'throttle:6,1'])->name('verification.send');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Route::get('/test-email', function () {
|
|
||||||
$to = 'vzx1red@gmail.com';
|
|
||||||
$subject = 'Test Email from Laravel';
|
|
||||||
|
|
||||||
$message = Mail::raw('This is a test email from Laravel.', function ($message) use ($to, $subject) {
|
|
||||||
$message->to($to)->subject($subject);
|
|
||||||
});
|
|
||||||
|
|
||||||
if ($message) {
|
|
||||||
return 'Email sent successfully';
|
|
||||||
} else {
|
|
||||||
return 'Failed to send email';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// Route::get('/forgot-password', [ForgotPasswordController::class, 'showLinkRequestForm'])->name('password.request');
|
|
||||||
|
|
||||||
// Route::post('/forgot-password', [ForgotPasswordController::class, 'sendResetLinkEmail'])->name('password.email');
|
|
||||||
|
|
||||||
// Route::get('/reset-password/{token}', [ResetPasswordController::class, 'showResetForm'])->name('password.reset');
|
|
||||||
// Route::post('/reset-password', [ResetPasswordController::class, 'reset'])->name('password.update')
|
|
||||||
Loading…
Reference in New Issue
Block a user