diff --git a/app/Http/Controllers/SessionController.php b/app/Http/Controllers/SessionController.php new file mode 100644 index 0000000..da28c37 --- /dev/null +++ b/app/Http/Controllers/SessionController.php @@ -0,0 +1,41 @@ +validate([ + 'email' => ['required'], + 'password' => ['required'] + ]); + //dd($validatedAtts); + + // Attemp + if (! Auth::attempt($validatedAtts)) { + throw ValidationException::withMessages([ + 'email' => 'The information does not match' + ]); + + }; + + // regenerate the session token + request()->session()->regenerate(); + + //redirect + return redirect()->route('task.index'); + } + + public function destroy() { + Auth::logout(); + return redirect('/'); + } +} diff --git a/app/Http/Controllers/TaskController.php b/app/Http/Controllers/TaskController.php index 58c9f14..14225d1 100644 --- a/app/Http/Controllers/TaskController.php +++ b/app/Http/Controllers/TaskController.php @@ -54,7 +54,7 @@ class TaskController extends Controller 'categories' => $categories ]); } - + public function update(Task $task) { $validatedAtts = request()->validate([ 'name' => ['required'], @@ -75,4 +75,10 @@ class TaskController extends Controller return redirect()->route('task.index')->with('success', 'Task deleted successfully'); } + public function toggleComplete(Task $task) { + $task->completed = !$task->completed; + $task->save(); + return redirect()->back(); + } + } diff --git a/app/Http/Controllers/UserRegisterController.php b/app/Http/Controllers/UserRegisterController.php new file mode 100644 index 0000000..d7f4a8b --- /dev/null +++ b/app/Http/Controllers/UserRegisterController.php @@ -0,0 +1,27 @@ +validate([ + 'name' => ['required'], + 'email' => ['required'], + 'password' => ['required', Password::min(2), 'confirmed'] + ]); + $user = User::create($validatedAtts); + Auth::login($user); + return redirect()->route('task.view'); + } +} diff --git a/app/Models/Task.php b/app/Models/Task.php index b881c3a..e3fb24b 100644 --- a/app/Models/Task.php +++ b/app/Models/Task.php @@ -10,9 +10,21 @@ class Task extends Model { use HasFactory; - protected $attributes = [ + protected static function boot() + { + parent::boot(); + + static::creating(function ($task) { + if (is_null($task->completed)) { + $task->completed = false; // Ensure completed is false when creating a new task + } + $task->user_id = Auth::id(); // Set user_id automatically + }); + } + + /* protected $attributes = [ 'completed' => false, // Set default value for completed - ]; + ]; */ public function user() { diff --git a/routes/web.php b/routes/web.php index d837ecb..b7af915 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,6 +1,8 @@ name('task.index'); Route::get('/task/create', [TaskController::class, 'create']); @@ -17,53 +21,13 @@ Route::get('/task/{task}', [TaskController::class, 'show'])->name('task.show'); Route::post('/task/create', [TaskController::class, 'store'])->name('task.create'); Route::delete('/task/{task}', [TaskController::class, 'destroy']); Route::get('/task/{task}/edit', [TaskController::class, 'edit']); - Route::patch('/task/{task}', [TaskController::class, 'update']); +Route::get('/register', [UserRegisterController::class, 'register']); +Route::post('/register', [UserRegisterController::class, 'store']); +Route::get('/login', [SessionController::class, 'login']); -Route::get('/login', function () { - return view('auth.login'); -}); +Route::post('/login', [SessionController::class, 'store']); -Route::post('/login', function () { - $validatedAtts = request()->validate([ - 'email' => ['required'], - 'password' => ['required'] - ]); - //dd($validatedAtts); - // Attemp - if (! Auth::attempt($validatedAtts)) { - throw ValidationException::withMessages([ - 'email' => 'The information does not match' - ]); - - }; - - // regenerate the session token - request()->session()->regenerate(); - - //redirect - return redirect('/task'); -}); - -Route::get('/register', function () { - return view('auth.register'); -}); - -Route::post('/register', function () { - //validate - $validatedAtts = request()->validate([ - 'name' => ['required'], - 'email' => ['required'], - 'password' => ['required', Password::min(2), 'confirmed'] - ]); - $user = User::create($validatedAtts); - Auth::login($user); - -}); - -Route::post('/logout', function() { - Auth::logout(); - return redirect('/'); -}); \ No newline at end of file +Route::post('/logout', [SessionController::class, 'destroy']); \ No newline at end of file