Dan Brown

Added public build folder and support for a demo mode

...@@ -9,7 +9,6 @@ Homestead.yaml ...@@ -9,7 +9,6 @@ Homestead.yaml
9 /public/js 9 /public/js
10 /public/uploads 10 /public/uploads
11 /public/bower 11 /public/bower
12 -/public/build
13 /storage/images 12 /storage/images
14 _ide_helper.php 13 _ide_helper.php
15 /storage/debugbar 14 /storage/debugbar
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -43,6 +43,15 @@ abstract class Controller extends BaseController ...@@ -43,6 +43,15 @@ abstract class Controller extends BaseController
43 } 43 }
44 44
45 /** 45 /**
46 + * Stops the application and shows a permission error if
47 + * the application is in demo mode.
48 + */
49 + protected function preventAccessForDemoUsers()
50 + {
51 + if (env('APP_ENV', 'production') === 'demo') $this->showPermissionError();
52 + }
53 +
54 + /**
46 * Adds the page title into the view. 55 * Adds the page title into the view.
47 * @param $title 56 * @param $title
48 */ 57 */
...@@ -52,6 +61,18 @@ abstract class Controller extends BaseController ...@@ -52,6 +61,18 @@ abstract class Controller extends BaseController
52 } 61 }
53 62
54 /** 63 /**
64 + * On a permission error redirect to home and display
65 + * the error as a notification.
66 + */
67 + protected function showPermissionError()
68 + {
69 + Session::flash('error', trans('errors.permission'));
70 + throw new HttpResponseException(
71 + redirect('/')
72 + );
73 + }
74 +
75 + /**
55 * Checks for a permission. 76 * Checks for a permission.
56 * 77 *
57 * @param $permissionName 78 * @param $permissionName
...@@ -60,15 +81,18 @@ abstract class Controller extends BaseController ...@@ -60,15 +81,18 @@ abstract class Controller extends BaseController
60 protected function checkPermission($permissionName) 81 protected function checkPermission($permissionName)
61 { 82 {
62 if (!$this->currentUser || !$this->currentUser->can($permissionName)) { 83 if (!$this->currentUser || !$this->currentUser->can($permissionName)) {
63 - Session::flash('error', trans('errors.permission')); 84 + $this->showPermissionError();
64 - throw new HttpResponseException(
65 - redirect('/')
66 - );
67 } 85 }
68 86
69 return true; 87 return true;
70 } 88 }
71 89
90 + /**
91 + * Check if a user has a permission or bypass if the callback is true.
92 + * @param $permissionName
93 + * @param $callback
94 + * @return bool
95 + */
72 protected function checkPermissionOr($permissionName, $callback) 96 protected function checkPermissionOr($permissionName, $callback)
73 { 97 {
74 $callbackResult = $callback(); 98 $callbackResult = $callback();
......
...@@ -31,13 +31,16 @@ class SettingController extends Controller ...@@ -31,13 +31,16 @@ class SettingController extends Controller
31 */ 31 */
32 public function update(Request $request) 32 public function update(Request $request)
33 { 33 {
34 + $this->preventAccessForDemoUsers();
34 $this->checkPermission('settings-update'); 35 $this->checkPermission('settings-update');
36 +
35 // Cycles through posted settings and update them 37 // Cycles through posted settings and update them
36 foreach($request->all() as $name => $value) { 38 foreach($request->all() as $name => $value) {
37 if(strpos($name, 'setting-') !== 0) continue; 39 if(strpos($name, 'setting-') !== 0) continue;
38 $key = str_replace('setting-', '', trim($name)); 40 $key = str_replace('setting-', '', trim($name));
39 Setting::put($key, $value); 41 Setting::put($key, $value);
40 } 42 }
43 +
41 session()->flash('success', 'Settings Saved'); 44 session()->flash('success', 'Settings Saved');
42 return redirect('/settings'); 45 return redirect('/settings');
43 } 46 }
......
...@@ -108,9 +108,11 @@ class UserController extends Controller ...@@ -108,9 +108,11 @@ class UserController extends Controller
108 */ 108 */
109 public function update(Request $request, $id) 109 public function update(Request $request, $id)
110 { 110 {
111 + $this->preventAccessForDemoUsers();
111 $this->checkPermissionOr('user-update', function () use ($id) { 112 $this->checkPermissionOr('user-update', function () use ($id) {
112 return $this->currentUser->id == $id; 113 return $this->currentUser->id == $id;
113 }); 114 });
115 +
114 $this->validate($request, [ 116 $this->validate($request, [
115 'name' => 'required', 117 'name' => 'required',
116 'email' => 'required|email|unique:users,email,' . $id, 118 'email' => 'required|email|unique:users,email,' . $id,
...@@ -144,6 +146,7 @@ class UserController extends Controller ...@@ -144,6 +146,7 @@ class UserController extends Controller
144 $this->checkPermissionOr('user-delete', function () use ($id) { 146 $this->checkPermissionOr('user-delete', function () use ($id) {
145 return $this->currentUser->id == $id; 147 return $this->currentUser->id == $id;
146 }); 148 });
149 +
147 $user = $this->user->findOrFail($id); 150 $user = $this->user->findOrFail($id);
148 $this->setPageTitle('Delete User ' . $user->name); 151 $this->setPageTitle('Delete User ' . $user->name);
149 return view('users/delete', ['user' => $user]); 152 return view('users/delete', ['user' => $user]);
...@@ -156,6 +159,7 @@ class UserController extends Controller ...@@ -156,6 +159,7 @@ class UserController extends Controller
156 */ 159 */
157 public function destroy($id) 160 public function destroy($id)
158 { 161 {
162 + $this->preventAccessForDemoUsers();
159 $this->checkPermissionOr('user-delete', function () use ($id) { 163 $this->checkPermissionOr('user-delete', function () use ($id) {
160 return $this->currentUser->id == $id; 164 return $this->currentUser->id == $id;
161 }); 165 });
......
1 +*
2 +!.gitignore