diff --git a/skolehjem/app/Http/Controllers/NewsController.php b/skolehjem/app/Http/Controllers/NewsController.php new file mode 100644 index 0000000..2586ef1 --- /dev/null +++ b/skolehjem/app/Http/Controllers/NewsController.php @@ -0,0 +1,116 @@ +middleware([ "auth" ]); + + $this->middleware([ "check.auth:news.list" ])->only("index"); + $this->middleware([ "check.auth:news.show" ])->only("show"); + $this->middleware([ "check.auth:news.create" ])->only("create", "store"); + $this->middleware([ "check.auth:news.edit" ])->only("edit", "update"); + $this->middleware([ "check.auth:news.delete" ])->only("delete"); + } + + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $news = News::query()->paginate($request->input("limit", 20)); + + return Response::detect("news.index", [ "news" => $news ]); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return Response::detect("news.create"); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\RedirectResponse + */ + public function store(Request $request) + { + $data = $request->validate([ + "name" => "required", + "content" => "required" + ]); + + $news = new News($data); + $news->save(); + + return redirect()->route("news.index"); + } + + /** + * Display the specified resource. + * + * @param \App\News $news + * @return \Illuminate\Http\Response + */ + public function show(News $news) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\News $news + * @return \Illuminate\Http\Response + */ + public function edit(News $news) + { + return Response::detect("news.edit", [ "news" => $news ]); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\News $news + * @return \Illuminate\Http\RedirectResponse + */ + public function update(Request $request, News $news) + { + $data = $request->validate([ + "name" => "required", + "content" => "required" + ]); + + $news->update($data); + + return redirect()->route("news.index"); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\News $news + * @return \Illuminate\Http\RedirectResponse + * @throws \Exception + */ + public function destroy(News $news) + { + $news->delete(); + return redirect()->route("news.index"); + } +} diff --git a/skolehjem/app/News.php b/skolehjem/app/News.php new file mode 100644 index 0000000..056b2c3 --- /dev/null +++ b/skolehjem/app/News.php @@ -0,0 +1,12 @@ +id(); + $table->string("name"); + $table->text("content"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('news'); + } +} diff --git a/skolehjem/database/seeds/PermissionSeeder.php b/skolehjem/database/seeds/PermissionSeeder.php index c79720a..db58e11 100644 --- a/skolehjem/database/seeds/PermissionSeeder.php +++ b/skolehjem/database/seeds/PermissionSeeder.php @@ -150,6 +150,15 @@ class PermissionSeeder extends Seeder "locations.edit" => "Allows editing of locations", "locations.delete" => "Allows deletion of locations", + /** + * The NEWS specific permissions + */ + "news.create" => "Create a new location", + "news.list" => "Shows all locations", + "news.show" => "Shows a specific location", + "news.edit" => "Allows editing of locations", + "news.delete" => "Allows deletion of locations", + /** * The ADMIN PANEL specific permissions */ diff --git a/skolehjem/resources/views/admin/layout/base.blade.php b/skolehjem/resources/views/admin/layout/base.blade.php index 21dc2b2..ada4d1c 100644 --- a/skolehjem/resources/views/admin/layout/base.blade.php +++ b/skolehjem/resources/views/admin/layout/base.blade.php @@ -17,6 +17,9 @@
+Navn | +||
---|---|---|
{{$new->name}} | + $new ]) }}"> |
+ + | +