diff --git a/app/Http/Controllers/WriterController.php b/app/Http/Controllers/WriterController.php new file mode 100644 index 0000000..660188f --- /dev/null +++ b/app/Http/Controllers/WriterController.php @@ -0,0 +1,50 @@ +validate([ + 'email' => ['required', 'email'], + 'password' => ['required'], + ]); + + if (Auth::attempt($credentials)) { + $request->session()->regenerate(); + + return redirect()->intended('writer'); + } + + return back()->withErrors([ + 'email' => 'The provided credentials do not match our records.', + ])->onlyInput('email'); + } + + public function logout(Request $request): RedirectResponse + { + Auth::logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect(route('login')); + } + + public function dashboard(Request $request): View + { + return view('writer.dashboard'); + } + + public function newArticle(Request $request): View + { + return view('writer.new-article'); + } +} diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 14cf441..2ec62de 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -6,6 +6,7 @@ use App\Models\User; use App\Models\Author; use App\Models\Article; use Illuminate\Database\Seeder; +use Illuminate\Support\Facades\Hash; class DatabaseSeeder extends Seeder { @@ -17,6 +18,7 @@ class DatabaseSeeder extends Seeder $test_user = User::factory()->create([ 'name' => 'Test User', 'email' => 'test@example.com', + 'password' => Hash::make('password'), ]); $test_author = Author::factory()->user($test_user)->create(); diff --git a/public/word-salad-writer.css b/public/word-salad-writer.css new file mode 100644 index 0000000..5f35fa0 --- /dev/null +++ b/public/word-salad-writer.css @@ -0,0 +1,3 @@ +.is-invalid { + border: red 4px solid; +} diff --git a/public/word-salad.css b/public/word-salad.css index 4c51a48..1a4fe85 100644 --- a/public/word-salad.css +++ b/public/word-salad.css @@ -22,10 +22,11 @@ a { justify-content: center; } + .bubble-panel { border-radius: 50px; background: #813d9c; box-shadow: -33px 33px 65px #66307b, 33px -33px 65px #9c4abd; padding: 2em; -} +} \ No newline at end of file diff --git a/resources/views/layouts/writer.blade.php b/resources/views/layouts/writer.blade.php index 851f8eb..51e0a49 100644 --- a/resources/views/layouts/writer.blade.php +++ b/resources/views/layouts/writer.blade.php @@ -4,26 +4,22 @@ - + + + + {{-- Include HTMX on the writer-side to enchance our interactivity --}} - - - {{ config('blog.publishing_name') }} | Home + {{ config('blog.publishing_name') }} | @yield('title') -
-

Hey guys, check back soon for some word-based #content

- -
- -
-
+
+ @foreach($errors->all() as $error) + {{ $error }} + @endforeach +
+
+ @yield('content', 'Nothing to see here.') +
diff --git a/resources/views/writer/dashboard.blade.php b/resources/views/writer/dashboard.blade.php new file mode 100644 index 0000000..d5f0d69 --- /dev/null +++ b/resources/views/writer/dashboard.blade.php @@ -0,0 +1,14 @@ +@extends('layouts.writer') + +@section('title', 'Writer Dashboard') + +@section('content') +
+

Writer's Dashboard

+
+ @csrf + +
+ +
+@endsection diff --git a/resources/views/writer/login.blade.php b/resources/views/writer/login.blade.php new file mode 100644 index 0000000..3762b59 --- /dev/null +++ b/resources/views/writer/login.blade.php @@ -0,0 +1,21 @@ +@extends('layouts.writer') + +@section('title', 'Writer Login') + +@section('content') +
+

Writer Login

+
+ + @csrf + + + + + + + + +
+
+@endsection diff --git a/resources/views/writer/new-article.blade.php b/resources/views/writer/new-article.blade.php new file mode 100644 index 0000000..cc48233 --- /dev/null +++ b/resources/views/writer/new-article.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.writer') + +@section('title', 'Write New Article') + +@section('content') +
+ New Article +
+@endsection diff --git a/routes/web.php b/routes/web.php index e9cac4e..aade2ee 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,5 +1,6 @@ $active_article]); })->name('article'); + +Route::get('/writer/login', function () { + return view('writer.login'); +})->name('login'); + +Route::post('/writer/authenticate', [WriterController::class, 'authenticate'])->name('authenticate'); + +Route::middleware('auth')->group(function () { + Route::get('/writer', [WriterController::class, 'dashboard'])->name('dashboard'); + Route::post('/logout', [WriterController::class, 'logout'])->name('logout'); + Route::get('writer/new-article', [WriterController::class, 'newArticle'])->name('new_article'); +});