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
59 changes: 0 additions & 59 deletions .env.example

This file was deleted.

43 changes: 19 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,27 @@
### Fonctionnalités principales
- Gestion des rôles (admin, gestionnaire, client).
- Redirection basée sur les rôles.
- Vérification des emails pour les nouveaux utilisateurs.
- Vérification des emails pour les clients.
- Gestion de la récupération de mot de passe.
- Middleware pour restreindre l'accès en fonction des rôles.
- gestion des erreurs de pages ( 404 & 403)

### Instructions pour tester
1. Clonez le dépôt : `git clone https://github.com/GoldenDev74/commerce.git`.
2. Installez les dépendances : `composer install`. & `npm install`

4. Configurez l'environnement : `.env`.
5. Ajoute la méthode suivante dans le fichier AppServiceProvider.php dans le répertoire app/Providers :
```
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=redmoondevs2024@gmail.com
MAIL_PASSWORD=nmhvmabbfaeedmxw
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=redmoondevs2024@gmail.com
MAIL_FROM_NAME=SkydashEcommerce
```
6. Ajoute la méthode suivante dans le fichier AppServiceProvider.php dans le répertoire app/Providers :
```
public function boot()
{
Expand All @@ -36,28 +47,9 @@

## Appendix

pour tester les mails on a utiliser mailtrap. Pour ce faire, ajouter un nouveau compte google à vos compte avec les identifiant suivantes:
pour tester les mails on a utiliser smtp de gmail. Pour ce faire, ajouter un nouveau compte google à vos compte avec les identifiant suivantes:
- email : redmoondevs2024@gmail.com
- mot de passe : redmoon102024
arrivé sur mailtrap

![Capture d'écran 2024-12-01 224735](https://github.com/user-attachments/assets/70e2183e-ee7d-4990-b14e-3f44a29ca195)

![Capture d’écran 2024-12-01 224909](https://github.com/user-attachments/assets/f386814e-b440-4205-a07b-d3d0c299706c)

![Capture d’écran 2024-12-01 225006](https://github.com/user-attachments/assets/44f85e5b-06ac-4135-be21-d998979b958b)

![Capture d’écran 2024-12-01 225049](https://github.com/user-attachments/assets/3410354f-e98d-4754-9bdc-6efff902267b)

assurer de copier ses configuration suivantes :

![Capture d’écran 2024-12-01 225316](https://github.com/user-attachments/assets/9a7b20af-6930-48bd-8b61-7b9739743a81)

dans vôtres fichier .env comme suit :

![Capture d’écran 2024-12-01 225339](https://github.com/user-attachments/assets/91d90333-d266-4c27-aea1-5995861fbaf3)

si tout est bien configurer vous deviez reçevoir les mails de vérification pour l'inscription, les mots de passes oublier.

## Contributing
Voici les collaborateurs intervenues !
Expand All @@ -66,7 +58,6 @@ Voici les collaborateurs intervenues !
- Steventog
- Antoine 253


## ScreenShoot

![image](https://github.com/user-attachments/assets/1e52abf4-af54-4759-a731-de12a550c3da)
Expand All @@ -83,6 +74,10 @@ Voici les collaborateurs intervenues !

![image](https://github.com/user-attachments/assets/a1702d40-f7b6-43ef-9713-5d7ee676637d)

![image](https://github.com/user-attachments/assets/49501512-a7f6-4d96-8dfb-61fdf325228a)
![Capture d'écran 2024-12-19 155639](https://github.com/user-attachments/assets/50fc38e4-d491-46e3-b1f1-3aa3780f8c10)

![Capture d'écran 2024-12-19 145703](https://github.com/user-attachments/assets/bd8b6f07-be5d-4823-ac78-1b380fa21925)

![Capture d'écran 2024-12-19 150352](https://github.com/user-attachments/assets/e09c7179-d621-436f-b738-65c1d8ddec05)


10 changes: 10 additions & 0 deletions app/Exceptions/Handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Throwable;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class Handler extends ExceptionHandler
{
Expand All @@ -27,4 +28,13 @@ public function register(): void
//
});
}

public function render($request, Throwable $exception)
{
if ($exception instanceof NotFoundHttpException) {
return response()->view('errors.404', [], 404);
}

return parent::render($request, $exception);
}
}
2 changes: 1 addition & 1 deletion app/Http/Controllers/AdminController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

class AdminController extends Controller
{
public function dashboard()
public function index()
{
return view('admin.dashboard');
}
Expand Down
5 changes: 1 addition & 4 deletions app/Http/Controllers/Auth/AuthenticatedSessionController.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public function store(LoginRequest $request): RedirectResponse
// Récupérer l'utilisateur connecté
$user = $request->user();

// Redirection basée sur le rôle
if ($user->isAdmin()) {
return redirect()->route('admin.dashboard');
}
Expand All @@ -41,13 +40,11 @@ public function store(LoginRequest $request): RedirectResponse
return redirect()->route('manager.dashboard');
}

// Pour les clients
if ($user->isClient()) {
// Vérifier si l'email est vérifié
if (!$user->hasVerifiedEmail()) {
return redirect()->route('verification.notice');
}
return redirect()->route('client.index');
return redirect()->route('client.dashboard');
}

return redirect('/');
Expand Down
2 changes: 1 addition & 1 deletion app/Http/Controllers/ClientController.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,6 @@ class ClientController extends Controller
{
public function index()
{
return view('client.index');
return view('client.dashboard');
}
}
5 changes: 3 additions & 2 deletions app/Http/Controllers/ManagerController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@

class ManagerController extends Controller
{
public function dashboard()
public function index()
{
return view('manager.dashboard');
// Logique pour afficher la vue du tableau de bord du gestionnaire
return view('manager.dashboard'); // Assurez-vous que cette vue existe
}
}
3 changes: 2 additions & 1 deletion app/Http/Kernel.php
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ class Kernel extends HttpKernel

'api' => [
// \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class.':api',
\Illuminate\Routing\Middleware\ThrottleRequests::class . ':api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
Expand Down Expand Up @@ -78,5 +78,6 @@ class Kernel extends HttpKernel

'admin' => \App\Http\Middleware\AdminMiddleware::class,
'manager' => \App\Http\Middleware\ManagerMiddleware::class,
'role' => \App\Http\Middleware\RoleMiddleware::class,
];
}
33 changes: 33 additions & 0 deletions app/Http/Middleware/RoleMiddleware.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string $role
* @return mixed
*/
public function handle(Request $request, Closure $next, $role)
{
// Vérifiez si l'utilisateur est authentifié
if (!Auth::check()) {
return redirect('/login'); // Redirige vers la page de connexion si non authentifié
}

// Vérifiez si l'utilisateur a le rôle requis
if (Auth::user()->role !== $role) {
return response()->view('errors.403', [], 403); // Affiche une page d'erreur 403 si l'utilisateur n'a pas accès
}

return $next($request);
}
}
9 changes: 4 additions & 5 deletions app/Models/User.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,18 @@ class User extends Authenticatable implements MustVerifyEmail
'password' => 'hashed',
];

public function isAdmin():bool
public function isAdmin(): bool
{
return $this->role === 'admin';
}

public function isManager():bool
public function isManager(): bool
{
return $this->role === 'gestionnaire';
return $this->role === 'manager';
}

public function isClient():bool
public function isClient(): bool
{
return $this->role === 'client';
}

}
2 changes: 1 addition & 1 deletion app/Providers/RouteServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
*
* @var string
*/
public const HOME = '/dashboard';
public const HOME = '/client/dashboard';

/**
* Define your route model bindings, pattern filters, and other route configuration.
Expand Down
13 changes: 13 additions & 0 deletions app/View/Components/AdminAppLayout.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App\View\Components;

use Illuminate\View\Component;

class AdminAppLayout extends Component
{
public function render()
{
return view('layouts.adminapp'); // Assurez-vous que cette vue existe
}
}
13 changes: 13 additions & 0 deletions app/View/Components/ManagerAppLayout.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?php

namespace App\View\Components;

use Illuminate\View\Component;

class ManagerAppLayout extends Component
{
public function render()
{
return view('layouts.managerapp'); // Assurez-vous que cette vue existe
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public function up(): void
$table->string('phone')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->enum('role', ['admin', 'gestionnaire', 'client','livreur'])->default('client');
$table->enum('role', ['admin', 'manager', 'client','livreur'])->default('client');
$table->rememberToken();
$table->timestamps();
});
Expand Down
2 changes: 1 addition & 1 deletion database/seeders/UserSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public function run()
'address' => 'Avepozo',
'phone' => '91919191',
'password' => Hash::make('gestion2024'),
'role' => 'gestionnaire',
'role' => 'manager',
]);

// Vérification immédiate du gestionnaire
Expand Down
5 changes: 2 additions & 3 deletions resources/views/admin/dashboard.blade.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<x-app-layout>
<x-adminapp-layout>
<x-slot name="header">
<h2 class="font-semibold text-xl text-gray-800 leading-tight">
{{ __('Tableau de bord Administrateur') }}
Expand All @@ -14,5 +14,4 @@
</div>
</div>
</div>
</x-app-layout>

</x-adminapp-layout>
17 changes: 0 additions & 17 deletions resources/views/dashboard.blade.php

This file was deleted.

Loading