From 092307cdb7d1ad1aab1f77185412d50c668e12e6 Mon Sep 17 00:00:00 2001 From: nipunTharuksha Date: Thu, 13 Jan 2022 12:52:41 +0530 Subject: [PATCH 1/2] init command added --- app/Console/Commands/ProjectInitCommand.php | 50 +++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 app/Console/Commands/ProjectInitCommand.php diff --git a/app/Console/Commands/ProjectInitCommand.php b/app/Console/Commands/ProjectInitCommand.php new file mode 100644 index 0000000..4c63bd2 --- /dev/null +++ b/app/Console/Commands/ProjectInitCommand.php @@ -0,0 +1,50 @@ + true, + ]); + $this->info(Artisan::output()); + + $this->info('Make admin user'); + User::factory()->create(['username' => 'MooseS94']); + } +} From 596257c33e6dacfaea225bff205d094b1e11bd83 Mon Sep 17 00:00:00 2001 From: nipunTharuksha Date: Thu, 13 Jan 2022 13:04:19 +0530 Subject: [PATCH 2/2] changes --- app/Console/Commands/ProjectInitCommand.php | 10 ++++-- app/Http/Controllers/AdminPostController.php | 25 +++++-------- app/Http/Middleware/MustBeAdmin.php | 10 +++--- .../Requests/Admin/AdminPostStoreRequest.php | 36 +++++++++++++++++++ .../Requests/Admin/AdminUpdateRequest.php | 30 ++++++++++++++++ app/Models/Category.php | 4 ++- routes/web.php | 4 +-- 7 files changed, 92 insertions(+), 27 deletions(-) create mode 100644 app/Http/Requests/Admin/AdminPostStoreRequest.php create mode 100644 app/Http/Requests/Admin/AdminUpdateRequest.php diff --git a/app/Console/Commands/ProjectInitCommand.php b/app/Console/Commands/ProjectInitCommand.php index 4c63bd2..5e265e1 100644 --- a/app/Console/Commands/ProjectInitCommand.php +++ b/app/Console/Commands/ProjectInitCommand.php @@ -2,6 +2,7 @@ namespace App\Console\Commands; +use App\Models\Category; use App\Models\User; use Illuminate\Console\Command; use Illuminate\Support\Facades\Artisan; @@ -42,9 +43,12 @@ public function handle() Artisan::call('migrate:refresh', [ '--force' => true, ]); - $this->info(Artisan::output()); + $this->info(Artisan::output()); - $this->info('Make admin user'); - User::factory()->create(['username' => 'MooseS94']); + $this->info('Make admin user'); + User::factory()->create(['username' => 'MooseS94']); + + $this->info('Add random categories'); + Category::factory()->count(10)->create(); } } diff --git a/app/Http/Controllers/AdminPostController.php b/app/Http/Controllers/AdminPostController.php index 02206cb..7470543 100644 --- a/app/Http/Controllers/AdminPostController.php +++ b/app/Http/Controllers/AdminPostController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Requests\Admin\AdminPostStoreRequest; use App\Models\Post; use Illuminate\Validation\Rule; @@ -12,28 +13,18 @@ public function create() return view('admin.posts.create'); } - public function store() + public function store(AdminPostStoreRequest $request) { + $data = $request->validated(); - $attributes = request()->validate([ - 'title' => ['required', Rule::unique('posts', 'title')], - 'slug' => '', - 'thumbnail' => 'required|image', - 'excerpt' => 'required', - 'body' => 'required', - 'category_id' => ['required', Rule::exists('categories', 'id')] - ]); - - $title = $attributes['title']; - $attributes['slug'] = $title; - $attributes['user_id'] = auth()->id(); - $attributes['thumbnail'] = request()->file('thumbnail')->store('thumbnails'); + $data = collect($data)->put('slug', $data['title']) + ->put('thumbnail', request()->file('thumbnail')->store('thumbnails'))->toArray(); - Post::create($attributes); + auth()->user()->posts()->create($data); flash('New product has been submitted'); - return redirect('/'); + return redirect()->route('posts.index'); } public function index() @@ -83,4 +74,4 @@ public function destroy(Post $post) return back(); } -} \ No newline at end of file +} diff --git a/app/Http/Middleware/MustBeAdmin.php b/app/Http/Middleware/MustBeAdmin.php index 181917b..c7f4636 100644 --- a/app/Http/Middleware/MustBeAdmin.php +++ b/app/Http/Middleware/MustBeAdmin.php @@ -3,6 +3,7 @@ namespace App\Http\Middleware; use Closure; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Symfony\Component\HttpFoundation\Response; @@ -11,12 +12,13 @@ class MustBeAdmin /** * Handle an incoming request. * - * @param \Illuminate\Http\Request $request - * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next - * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse + * @param Request $request + * @param Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next + * @return \Illuminate\Http\Response|RedirectResponse */ public function handle(Request $request, Closure $next) { + //Need to change with roles and permmisions if (auth()->user()?->username != 'MooseS94') { abort(Response::HTTP_FORBIDDEN); @@ -24,4 +26,4 @@ public function handle(Request $request, Closure $next) return $next($request); } -} \ No newline at end of file +} diff --git a/app/Http/Requests/Admin/AdminPostStoreRequest.php b/app/Http/Requests/Admin/AdminPostStoreRequest.php new file mode 100644 index 0000000..6a43cc3 --- /dev/null +++ b/app/Http/Requests/Admin/AdminPostStoreRequest.php @@ -0,0 +1,36 @@ + ['required', Rule::unique('posts', 'title')], + 'slug' => '', + 'thumbnail' => 'required|image', + 'excerpt' => 'required', + 'body' => 'required', + 'category_id' => ['required', Rule::exists('categories', 'id')] + ]; + } +} diff --git a/app/Http/Requests/Admin/AdminUpdateRequest.php b/app/Http/Requests/Admin/AdminUpdateRequest.php new file mode 100644 index 0000000..6306ded --- /dev/null +++ b/app/Http/Requests/Admin/AdminUpdateRequest.php @@ -0,0 +1,30 @@ +hasMany(Post::class); } -} \ No newline at end of file +} diff --git a/routes/web.php b/routes/web.php index 85c5c1e..6736a65 100644 --- a/routes/web.php +++ b/routes/web.php @@ -20,10 +20,10 @@ route::get('admin/posts/create', [AdminPostController::class, 'create'])->middleware('admin'); route::post('admin/posts', [AdminPostController::class, 'store'])->middleware('admin'); -route::get('admin/posts', [AdminPostController::class, 'index'])->middleware('admin'); +route::get('admin/posts', [AdminPostController::class, 'index'])->middleware('admin')->name('posts.index'); route::get('admin/posts/{post}/edit', [AdminPostController::class, 'edit'])->middleware('admin'); route::patch('admin/posts/{post}', [AdminPostController::class, 'update'])->middleware('admin'); route::delete('admin/posts/{post}', [AdminPostController::class, 'destroy'])->middleware('admin'); -require __DIR__ . '/auth.php'; \ No newline at end of file +require __DIR__ . '/auth.php';