PageController.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Auth;
  5. use App\Page;
  6. class PageController extends Controller
  7. {
  8. public function __construct()
  9. {
  10. $this->middleware(['auth', 'admin']);
  11. }
  12. protected function authCheck($admin_only = false)
  13. {
  14. $auth = $admin_only ?
  15. Auth::check() && Auth::user()->is_admin == true :
  16. Auth::check();
  17. if($auth == false) {
  18. abort(403);
  19. }
  20. }
  21. public function edit(Request $request)
  22. {
  23. $this->authCheck(true);
  24. $this->validate($request, [
  25. 'page' => 'required|string'
  26. ]);
  27. $slug = urldecode($request->page);
  28. $page = Page::firstOrCreate(['slug' => $slug]);
  29. return view('admin.pages.edit', compact('page'));
  30. }
  31. public function store(Request $request)
  32. {
  33. $this->validate($request, [
  34. 'slug' => 'required|string',
  35. 'content' => 'required|string',
  36. 'title' => 'nullable|string',
  37. 'active' => 'required|boolean'
  38. ]);
  39. $slug = urldecode($request->input('slug'));
  40. $page = Page::firstOrCreate(['slug' => $slug]);
  41. $page->content = $request->input('content');
  42. $page->title = $request->input('title');
  43. $page->active = (bool) $request->input('active');
  44. $page->save();
  45. return response()->json(['msg' => 200]);
  46. }
  47. public function generatePage(Request $request)
  48. {
  49. $this->validate($request, [
  50. 'page' => 'required|string|in:about,terms,privacy',
  51. ]);
  52. $page = $request->input('page');
  53. switch ($page) {
  54. case 'about':
  55. Page::firstOrCreate(['slug' => '/site/about']);
  56. break;
  57. case 'privacy':
  58. Page::firstOrCreate(['slug' => '/site/privacy']);
  59. break;
  60. case 'terms':
  61. Page::firstOrCreate(['slug' => '/site/terms']);
  62. break;
  63. }
  64. return redirect(route('admin.settings.pages'));
  65. }
  66. }