diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
new file mode 100644
index 0000000..101ed74
--- /dev/null
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -0,0 +1,45 @@
+validate([
+ 'email' => 'required',
+ 'password' => 'required'
+ ]);
+
+ $credentials = $request->only(['email', 'password']);
+
+ if (Auth::attempt($credentials)) {
+ $user = Auth::user();
+ if ($user->role === 1 || $user->role === 2){
+ return redirect()->route('bo.dashboard');
+ }else{
+ if ($user->email_verified_at === NULL) {
+ Auth::logout();
+ return view('auth.login')->withErrors('Compte non activé.');
+ }
+ return redirect()->intended('/');
+ }
+ }
+ return view('auth.login')->withErrors('Informations incorrectes.');
+ }
+
+ public function logout(Request $request)
+ {
+ Auth::logout();
+ return redirect()->route('home');
+ }
+}
diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
new file mode 100644
index 0000000..1c235b5
--- /dev/null
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -0,0 +1,41 @@
+validate([
+ 'lastname' => 'required|string|max:255',
+ 'firstname' => 'required|string|max:255',
+ 'date_of_birth' => 'required|date|before_or_equal:' . Carbon::now()->subYears(18)->toDateString(),
+ 'email' => 'required|string|email|max:255|unique:users|confirmed',
+ 'password' => 'required|string|min:8',
+ ]);
+
+ User::create([
+ 'firstname' => $request->firstname,
+ 'lastname' => $request->lastname,
+ 'date_of_birth' => $request->date_of_birth,
+ 'email' => $request->email,
+ 'password' => Hash::make($request->password),
+ 'role' => 3
+ ]);
+
+ // Envoi mail activation
+
+ return redirect()->route('auth.register')->with('success', 'Mail envoyé pour confirmation');
+ }
+}
diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php
new file mode 100644
index 0000000..acc775c
--- /dev/null
+++ b/app/Http/Controllers/Auth/ResetPasswordController.php
@@ -0,0 +1,14 @@
+ \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
+ 'is-admin' => isAdmin::class,
];
}
diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php
index 704089a..67c7daf 100644
--- a/app/Http/Middleware/Authenticate.php
+++ b/app/Http/Middleware/Authenticate.php
@@ -15,7 +15,7 @@ class Authenticate extends Middleware
protected function redirectTo($request)
{
if (! $request->expectsJson()) {
- return route('login');
+ return route('auth.login');
}
}
}
diff --git a/app/Http/Middleware/isAdmin.php b/app/Http/Middleware/isAdmin.php
new file mode 100644
index 0000000..1ad0d89
--- /dev/null
+++ b/app/Http/Middleware/isAdmin.php
@@ -0,0 +1,24 @@
+role;
+ if ($role === 1 || $role === 2)
+ return $next($request);
+ abort(404, "Cette page n'existe pas.");
+ }
+}
diff --git a/app/Models/User.php b/app/Models/User.php
index 804799b..bad987f 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -17,9 +17,12 @@ class User extends Authenticatable
* @var array
*/
protected $fillable = [
- 'name',
+ 'firstname',
+ 'lastname',
'email',
'password',
+ 'date_of_birth',
+ 'role'
];
/**
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
index 3bd3c81..affd6da 100644
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -17,7 +17,7 @@ class RouteServiceProvider extends ServiceProvider
*
* @var string
*/
- public const HOME = '/home';
+ public const HOME = '/';
/**
* The controller namespace for the application.
diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php
index 621a24e..dfd1a40 100644
--- a/database/migrations/2014_10_12_000000_create_users_table.php
+++ b/database/migrations/2014_10_12_000000_create_users_table.php
@@ -15,10 +15,13 @@ class CreateUsersTable extends Migration
{
Schema::create('users', function (Blueprint $table) {
$table->id();
- $table->string('name');
+ $table->string('firstname');
+ $table->string('lastname');
+ $table->date('date_of_birth');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
+ $table->integer('role');
$table->rememberToken();
$table->timestamps();
});
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
new file mode 100644
index 0000000..489553a
--- /dev/null
+++ b/resources/views/auth/login.blade.php
@@ -0,0 +1,23 @@
+@extends('layouts.front-layout')
+
+@section('content')
+
Se connecter
+ @if ($errors->any())
+
+
+ @foreach ($errors->all() as $error)
+ {{ $error }}
+ @endforeach
+
+
+ @endif
+
+
+@endsection
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
new file mode 100644
index 0000000..a6e628f
--- /dev/null
+++ b/resources/views/auth/register.blade.php
@@ -0,0 +1,37 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Inscription
+
+ @if ($errors->any())
+
+
+ @foreach ($errors->all() as $error)
+ {{ $error }}
+ @endforeach
+
+
+ @endif
+
+ @if (session('success'))
+ {{ session('success') }}
+ @else
+
+ @endif
+
+@endsection
diff --git a/resources/views/auth/reset-password.blade.php b/resources/views/auth/reset-password.blade.php
new file mode 100644
index 0000000..5f2597b
--- /dev/null
+++ b/resources/views/auth/reset-password.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Mot de passe oublié ?
+@endsection
diff --git a/resources/views/basket.blade.php b/resources/views/basket.blade.php
new file mode 100644
index 0000000..145111d
--- /dev/null
+++ b/resources/views/basket.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Mon panier
+@endsection
diff --git a/resources/views/contact.blade.php b/resources/views/contact.blade.php
new file mode 100644
index 0000000..842f94c
--- /dev/null
+++ b/resources/views/contact.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Contact
+@endsection
diff --git a/resources/views/faq.blade.php b/resources/views/faq.blade.php
new file mode 100644
index 0000000..2bcb5f9
--- /dev/null
+++ b/resources/views/faq.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ FAQ
+@endsection
diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php
new file mode 100644
index 0000000..fd03436
--- /dev/null
+++ b/resources/views/home.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Home
+@endsection
diff --git a/resources/views/layouts/front-layout.blade.php b/resources/views/layouts/front-layout.blade.php
new file mode 100644
index 0000000..b27ef90
--- /dev/null
+++ b/resources/views/layouts/front-layout.blade.php
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+ Laravel
+
+
+
+
+ Accueil
+ Contact
+ Mentions Légales
+ CGV
+ Politique de confidentialité
+ FAQ
+ -
+ @auth
+ Se déconnecter
+ @else
+ Se connecter
+ Inscription
+ Mot de passe oublié ?
+ @endif
+ -
+ Mon Panier
+ -
+ Gammes de produits
+ Gamme de produits - Toto
+
+
+
+
+
+@yield('content')
+
+
diff --git a/resources/views/legal-notice.blade.php b/resources/views/legal-notice.blade.php
new file mode 100644
index 0000000..5040883
--- /dev/null
+++ b/resources/views/legal-notice.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Mentions Légales
+@endsection
diff --git a/resources/views/privacy.blade.php b/resources/views/privacy.blade.php
new file mode 100644
index 0000000..c331c6e
--- /dev/null
+++ b/resources/views/privacy.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Politique de confidentialité
+@endsection
diff --git a/resources/views/range.blade.php b/resources/views/range.blade.php
new file mode 100644
index 0000000..0618b55
--- /dev/null
+++ b/resources/views/range.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Gamme de produits
+@endsection
diff --git a/resources/views/ranges.blade.php b/resources/views/ranges.blade.php
new file mode 100644
index 0000000..f8f6efc
--- /dev/null
+++ b/resources/views/ranges.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ Gammes de produits
+@endsection
diff --git a/resources/views/terms.blade.php b/resources/views/terms.blade.php
new file mode 100644
index 0000000..e2ece24
--- /dev/null
+++ b/resources/views/terms.blade.php
@@ -0,0 +1,5 @@
+@extends('layouts.front-layout')
+
+@section('content')
+ CGV
+@endsection
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php
deleted file mode 100644
index ed7110b..0000000
--- a/resources/views/welcome.blade.php
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-
-
-
-
- Laravel
-
-
-
-
-
-
-
-
-
-
-
- @if (Route::has('login'))
-
- @auth
-
Home
- @else
-
Login
-
- @if (Route::has('register'))
-
Register
- @endif
- @endif
-
- @endif
-
-
-
-
-
-
-
-
-
-
-
- Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
-
-
-
-
-
-
-
-
-
- Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
-
-
-
-
-
-
-
-
-
- Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
-
-
-
-
-
-
-
-
-
- Laravel's robust library of first-party tools and libraries, such as
Forge ,
Vapor ,
Nova , and
Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like
Cashier ,
Dusk ,
Echo ,
Horizon ,
Sanctum ,
Telescope , and more.
-
-
-
-
-
-
-
-
-
-
- Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
-
-
-
-
-
-
diff --git a/routes/web.php b/routes/web.php
index b130397..a6fa327 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -2,6 +2,16 @@
use Illuminate\Support\Facades\Route;
+use App\Http\Controllers\IndexController;
+use App\Http\Controllers\BasketController;
+use App\Http\Controllers\ProductsController;
+// BO
+use App\Http\Controllers\Bo\DashboardController;
+// AUTH
+use App\Http\Controllers\Auth\LoginController;
+use App\Http\Controllers\Auth\RegisterController;
+use App\Http\Controllers\Auth\ResetPasswordController;
+
/*
|--------------------------------------------------------------------------
| Web Routes
@@ -13,6 +23,31 @@ use Illuminate\Support\Facades\Route;
|
*/
-Route::get('/', function () {
- return view('welcome');
-});
+Route::get('/', [IndexController::class, 'index'])->name('home');
+Route::get('/contact', [IndexController::class, 'contact'])->name('contact');
+Route::get('/mentions-legales', [IndexController::class, 'legalNotice'])->name('legal-notice');
+Route::get('/cgv', [IndexController::class, 'terms'])->name('terms');
+Route::get('/politique-de-confidentialite', [IndexController::class, 'privacy'])->name('privacy');
+Route::get('/faq', [IndexController::class, 'faq'])->name('faq');
+Route::get('/mon-panier', [BasketController::class, 'index'])->name('basket');
+Route::get('/gammes-de-produits', [ProductsController::class, 'ranges'])->name('ranges');
+Route::get('/gamme-de-produits/{rangeSlug}', [ProductsController::class, 'range'])->name('range');
+
+Route::namespace('Bo')
+ ->prefix('bo')
+ ->name('bo.')
+ ->middleware(['auth', 'is-admin'])
+ ->group(function () {
+ Route::get('/', [DashboardController::class, 'index'])->name('dashboard');
+ });
+
+Route::namespace('Auth')
+ ->name('auth.')
+ ->group(function () {
+ Route::get('/se-connecter', [LoginController::class, 'index'])->name('login')->middleware('guest');
+ Route::post('/login', [LoginController::class, 'login'])->name('login.post')->middleware('guest');
+ Route::get('/se-deconnecter', [LoginController::class, 'logout'])->name('logout')->middleware('auth');
+ Route::get('/inscription', [RegisterController::class, 'index'])->name('register')->middleware('guest');
+ Route::post('/register', [RegisterController::class, 'register'])->name('register.post')->middleware('guest');
+ Route::get('/mot-de-passe-oublie', [ResetPasswordController::class, 'index'])->name('reset-password')->middleware('guest');
+ });