diff --git a/app/User.php b/app/User.php index 3fa1b93e..1d093208 100644 --- a/app/User.php +++ b/app/User.php @@ -38,7 +38,7 @@ class User extends Authenticatable implements JWTSubject * @var array */ protected $appends = [ - 'photo_url', + 'photo_url', 'role' ]; /** @@ -51,6 +51,16 @@ class User extends Authenticatable implements JWTSubject return 'https://www.gravatar.com/avatar/'.md5(strtolower($this->email)).'.jpg?s=200&d=mm'; } + /** + * Get the role attribute. + * + * @return string + */ + public function getRoleAttribute() + { + return $this->roles->first()->name; + } + /** * Get the oauth providers. * @@ -87,4 +97,5 @@ class User extends Authenticatable implements JWTSubject { return []; } + } diff --git a/database/seeds/DatabaseSeeder.php b/database/seeds/DatabaseSeeder.php index c1b3e5ba..ea90e732 100644 --- a/database/seeds/DatabaseSeeder.php +++ b/database/seeds/DatabaseSeeder.php @@ -11,22 +11,9 @@ class DatabaseSeeder extends Seeder */ public function run() { - // $this->call(UsersTableSeeder::class); - Model::unguard(); - DB::table('users')->delete(); + $this->call(UsersTableSeeder::class); + $this->call(RolesAndPermissionsSeeder::class); - $users = array( - ['name' => 'Ryan Chenkie', 'email' => 'ryanchenkie@gmail.com', 'password' => Hash::make('secret')], - ['name' => 'Chris Sevilleja', 'email' => 'chris@scotch.io', 'password' => Hash::make('secret')], - ['name' => 'Holly Lloyd', 'email' => 'holly@scotch.io', 'password' => Hash::make('secret')], - ['name' => 'Adnan Kukic', 'email' => 'adnan@scotch.io', 'password' => Hash::make('secret')], - ); - - foreach ($users as $user) - { - User::create($user); - } - - Model::reguard(); + } } diff --git a/database/seeds/RolesAndPermissionsSeeder.php b/database/seeds/RolesAndPermissionsSeeder.php new file mode 100644 index 00000000..dfcc6ab5 --- /dev/null +++ b/database/seeds/RolesAndPermissionsSeeder.php @@ -0,0 +1,189 @@ + php artisan db:seed --class=RolesAndPermissionsSeeder +| +| https://github.com/thomasfw/RolesAndPermissionsSeeder +| +|-------------------------------------------------------------------------- +| Make sure you update the namespaces for your User & Entrust models +|-------------------------------------------------------------------------- +*/ +use App\User as User; +use App\Role as Role; +use App\Permission as Permission; +use Illuminate\Database\Seeder; +use Illuminate\Database\Eloquent\Model; +class RolesAndPermissionsSeeder extends Seeder { + protected $roles = [ + + 'admin' => [ + ], + + 'member' => [ + ], + + + + ]; + + + protected $permissions = [ + + // Add your Permissions here + + ]; + + + /** + * Roles + * + * @return array() + */ + public function roles() + { + return $this->roles; + } + + /** + * Permissions + * + * @param $name + * @return array() + */ + public function permissions($name = '') + { + $single = (array_key_exists($name,$this->permissions) ? array($name =>$this->permissions[$name]) : false ); + return ($name ? $single : $this->permissions); + } + + + /** + * Run the Seeder + * + * @return void + */ + public function run() + { + DB::table(Config::get('entrust.permissions_table'))->delete(); + + foreach ($this->roles() as $key => $val) { + $this->command->info(" "); + $this->command->info('Creating/updating the \''.$key.'\' role'); + $this->command->info('-----------------------------------------'); + $val['name'] = $key; + $this->reset($val); + } + $this->cleanup(); + } + + + /** + * Reset Role, Permissions & Users + * + * @param $role + * @return void + */ + public function reset($role) + { + $commandBullet = ' -> '; + + // The Old Role + $originalRole = Role::where('name',$role['name'])->first(); + if($originalRole) Role::where('id',$originalRole->id)->update(['name' => $role['name'].'__remove']); + + // The New Role + $newRole = new Role(); + $newRole->name = $role['name']; + if(isset($role['display_name'])) $newRole->display_name = $role['display_name']; // optional + if(isset($role['description'])) $newRole->description = $role['description']; // optional + $newRole->save(); + $this->command->info($commandBullet."Created $role[name] role"); + + // Set the Permissions (if they exist) + $pcount = 0; + if(!empty($role['permissions'])) + { + foreach ($role['permissions'] as $permission_name) { + + $permission = $this->permissions($permission_name); + if($permission === false || (!$permission_name)) { + $this->command->error($commandBullet."Failed to attach permission '$permission_name'. It does not exist"); + continue; + } + + $newPermission = \Permission::where('name',$permission_name)->first(); + if (!$newPermission) { + $newPermission = new Permission(); + $newPermission->name = key($permission); + if(isset($permission['display_name'])) $newPermission->display_name = $permission['display_name']; // optional + if(isset($permission['description'])) $newPermission->description = $permission['description']; // optional + $newPermission->save(); + } + $newRole->attachPermission($newPermission); + $pcount++; + } + } + $this->command->info($commandBullet."Attached $pcount permissions to $role[name] role"); + + // Update old records + if ($originalRole) + { + $userCount = 0; + $RoleUsers = DB::table(Config::get('entrust.role_user_table'))->where('role_id',$originalRole->id)->get(); + foreach ($RoleUsers as $user) { + $u = User::where('id',$user->user_id)->first(); + $u->attachRole($newRole); + $userCount++; + } + $this->command->info($commandBullet."Updated role attachment for $userCount users"); + + Role::where('id',$originalRole->id)->delete(); // will also remove old role_user records + $this->command->info($commandBullet."Removed the original $role[name] role"); + } + } + + + /** + * Cleanup() + * Remove any roles & permissions that have been removed + * @return void + */ + public function cleanup() + { + $commandBullet = ' -> '; + $this->command->info(" "); + $this->command->info('Cleaning up roles & permissions:'); + $this->command->info('--------------------------------'); + + $storedRoles = Role::all(); + if(!empty($storedRoles)) { + $definedRoles = $this->roles(); + foreach ($storedRoles as $role) { + if ( !array_key_exists($role->name,$definedRoles) ) { + Role::where('name',$role->name)->delete(); + $this->command->info($commandBullet.'The \''.$role->name.'\' role was removed'); + } + } + } + $storedPerms = DB::table(Config::get('entrust.permissions_table'))->get(); + if(!empty($storedPerms)) { + $definedPerms = $this->permissions(); + foreach ($storedPerms as $perm) { + if ( !array_key_exists($perm->name,$definedPerms) ) { + DB::table(Config::get('entrust.permissions_table'))->where('name',$perm->name)->delete(); + $this->command->info($commandBullet.'The \''.$perm->name.'\' permission was removed'); + } + } + } + $this->command->info($commandBullet.'Done'); + $this->command->info(" "); + } + +} \ No newline at end of file diff --git a/database/seeds/UsersTableSeeder.php b/database/seeds/UsersTableSeeder.php new file mode 100644 index 00000000..3d6a73d9 --- /dev/null +++ b/database/seeds/UsersTableSeeder.php @@ -0,0 +1,31 @@ +delete(); + + $users = array( + ['name' => 'Ryan Chenkie', 'email' => 'ryanchenkie@gmail.com', 'password' => Hash::make('secret')], + ['name' => 'Chris Sevilleja', 'email' => 'chris@scotch.io', 'password' => Hash::make('secret')], + ['name' => 'Holly Lloyd', 'email' => 'holly@scotch.io', 'password' => Hash::make('secret')], + ['name' => 'Adnan Kukic', 'email' => 'adnan@scotch.io', 'password' => Hash::make('secret')], + ); + + foreach ($users as $user) + { + User::create($user); + } + + + } +} diff --git a/public/js/app.js b/public/js/app.js index 74ac51ff..2a94f974 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -567,7 +567,7 @@ eval("/**\n * vue-meta v1.5.0\n * (c) 2018 Declan de Wet & Atinux\n * @license M /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("var Welcome = function Welcome() {\n return __webpack_require__.e/* import() */(5).then(__webpack_require__.bind(null, 115)).then(function (m) {\n return m.default || m;\n });\n};\nvar Login = function Login() {\n return __webpack_require__.e/* import() */(4).then(__webpack_require__.bind(null, 116)).then(function (m) {\n return m.default || m;\n });\n};\nvar Register = function Register() {\n return __webpack_require__.e/* import() */(3).then(__webpack_require__.bind(null, 117)).then(function (m) {\n return m.default || m;\n });\n};\nvar PasswordEmail = function PasswordEmail() {\n return __webpack_require__.e/* import() */(12).then(__webpack_require__.bind(null, 118)).then(function (m) {\n return m.default || m;\n });\n};\nvar PasswordReset = function PasswordReset() {\n return __webpack_require__.e/* import() */(11).then(__webpack_require__.bind(null, 119)).then(function (m) {\n return m.default || m;\n });\n};\nvar NotFound = function NotFound() {\n return __webpack_require__.e/* import() */(10).then(__webpack_require__.bind(null, 120)).then(function (m) {\n return m.default || m;\n });\n};\n\nvar Home = function Home() {\n return __webpack_require__.e/* import() */(9).then(__webpack_require__.bind(null, 121)).then(function (m) {\n return m.default || m;\n });\n};\nvar Settings = function Settings() {\n return __webpack_require__.e/* import() */(6).then(__webpack_require__.bind(null, 122)).then(function (m) {\n return m.default || m;\n });\n};\nvar SettingsProfile = function SettingsProfile() {\n return __webpack_require__.e/* import() */(7).then(__webpack_require__.bind(null, 123)).then(function (m) {\n return m.default || m;\n });\n};\nvar SettingsPassword = function SettingsPassword() {\n return __webpack_require__.e/* import() */(8).then(__webpack_require__.bind(null, 124)).then(function (m) {\n return m.default || m;\n });\n};\n\nvar Admin = function Admin() {\n return __webpack_require__.e/* import() */(13).then(__webpack_require__.bind(null, 125)).then(function (m) {\n return m.default || m;\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ([{ path: '/', name: 'welcome', component: Welcome }, { path: '/login', name: 'login', component: Login }, { path: '/register', name: 'register', component: Register }, { path: '/password/reset', name: 'password.request', component: PasswordEmail }, { path: '/password/reset/:token', name: 'password.reset', component: PasswordReset }, { path: '/home', name: 'home', component: Home }, { path: '/settings',\n component: Settings,\n children: [{ path: '', redirect: { name: 'settings.profile' } }, { path: 'profile', name: 'settings.profile', component: SettingsProfile }, { path: 'password', name: 'settings.password', component: SettingsPassword }] }, { path: '/admin', name: 'home', component: Home }, { path: '*', component: NotFound }]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3JvdXRlci9yb3V0ZXMuanM/MzM0YiJdLCJuYW1lcyI6WyJXZWxjb21lIiwidGhlbiIsIm0iLCJkZWZhdWx0IiwiTG9naW4iLCJSZWdpc3RlciIsIlBhc3N3b3JkRW1haWwiLCJQYXNzd29yZFJlc2V0IiwiTm90Rm91bmQiLCJIb21lIiwiU2V0dGluZ3MiLCJTZXR0aW5nc1Byb2ZpbGUiLCJTZXR0aW5nc1Bhc3N3b3JkIiwiQWRtaW4iLCJwYXRoIiwibmFtZSIsImNvbXBvbmVudCIsImNoaWxkcmVuIiwicmVkaXJlY3QiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLFVBQVUsU0FBVkEsT0FBVTtBQUFBLFNBQU0saUZBQTBCQyxJQUExQixDQUErQjtBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUEvQixDQUFOO0FBQUEsQ0FBaEI7QUFDQSxJQUFNRSxRQUFRLFNBQVJBLEtBQVE7QUFBQSxTQUFNLGlGQUE2QkgsSUFBN0IsQ0FBa0M7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBbEMsQ0FBTjtBQUFBLENBQWQ7QUFDQSxJQUFNRyxXQUFXLFNBQVhBLFFBQVc7QUFBQSxTQUFNLGlGQUFnQ0osSUFBaEMsQ0FBcUM7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBckMsQ0FBTjtBQUFBLENBQWpCO0FBQ0EsSUFBTUksZ0JBQWdCLFNBQWhCQSxhQUFnQjtBQUFBLFNBQU0sa0ZBQXNDTCxJQUF0QyxDQUEyQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUEzQyxDQUFOO0FBQUEsQ0FBdEI7QUFDQSxJQUFNSyxnQkFBZ0IsU0FBaEJBLGFBQWdCO0FBQUEsU0FBTSxrRkFBc0NOLElBQXRDLENBQTJDO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQTNDLENBQU47QUFBQSxDQUF0QjtBQUNBLElBQU1NLFdBQVcsU0FBWEEsUUFBVztBQUFBLFNBQU0sa0ZBQTZCUCxJQUE3QixDQUFrQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUFsQyxDQUFOO0FBQUEsQ0FBakI7O0FBRUEsSUFBTU8sT0FBTyxTQUFQQSxJQUFPO0FBQUEsU0FBTSxpRkFBdUJSLElBQXZCLENBQTRCO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQTVCLENBQU47QUFBQSxDQUFiO0FBQ0EsSUFBTVEsV0FBVyxTQUFYQSxRQUFXO0FBQUEsU0FBTSxpRkFBaUNULElBQWpDLENBQXNDO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQXRDLENBQU47QUFBQSxDQUFqQjtBQUNBLElBQU1TLGtCQUFrQixTQUFsQkEsZUFBa0I7QUFBQSxTQUFNLGlGQUFtQ1YsSUFBbkMsQ0FBd0M7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBeEMsQ0FBTjtBQUFBLENBQXhCO0FBQ0EsSUFBTVUsbUJBQW1CLFNBQW5CQSxnQkFBbUI7QUFBQSxTQUFNLGlGQUFvQ1gsSUFBcEMsQ0FBeUM7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBekMsQ0FBTjtBQUFBLENBQXpCOztBQUVBLElBQU1XLFFBQVEsU0FBUkEsS0FBUTtBQUFBLFNBQU0sa0ZBQTZCWixJQUE3QixDQUFrQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUFsQyxDQUFOO0FBQUEsQ0FBZDs7QUFFQSx5REFBZSxDQUNiLEVBQUVZLE1BQU0sR0FBUixFQUFhQyxNQUFNLFNBQW5CLEVBQThCQyxXQUFXaEIsT0FBekMsRUFEYSxFQUdiLEVBQUVjLE1BQU0sUUFBUixFQUFrQkMsTUFBTSxPQUF4QixFQUFpQ0MsV0FBV1osS0FBNUMsRUFIYSxFQUliLEVBQUVVLE1BQU0sV0FBUixFQUFxQkMsTUFBTSxVQUEzQixFQUF1Q0MsV0FBV1gsUUFBbEQsRUFKYSxFQUtiLEVBQUVTLE1BQU0saUJBQVIsRUFBMkJDLE1BQU0sa0JBQWpDLEVBQXFEQyxXQUFXVixhQUFoRSxFQUxhLEVBTWIsRUFBRVEsTUFBTSx3QkFBUixFQUFrQ0MsTUFBTSxnQkFBeEMsRUFBMERDLFdBQVdULGFBQXJFLEVBTmEsRUFRYixFQUFFTyxNQUFNLE9BQVIsRUFBaUJDLE1BQU0sTUFBdkIsRUFBK0JDLFdBQVdQLElBQTFDLEVBUmEsRUFTYixFQUFFSyxNQUFNLFdBQVI7QUFDRUUsYUFBV04sUUFEYjtBQUVFTyxZQUFVLENBQ1IsRUFBRUgsTUFBTSxFQUFSLEVBQVlJLFVBQVUsRUFBRUgsTUFBTSxrQkFBUixFQUF0QixFQURRLEVBRVIsRUFBRUQsTUFBTSxTQUFSLEVBQW1CQyxNQUFNLGtCQUF6QixFQUE2Q0MsV0FBV0wsZUFBeEQsRUFGUSxFQUdSLEVBQUVHLE1BQU0sVUFBUixFQUFvQkMsTUFBTSxtQkFBMUIsRUFBK0NDLFdBQVdKLGdCQUExRCxFQUhRLENBRlosRUFUYSxFQWlCYixFQUFFRSxNQUFNLFFBQVIsRUFBa0JDLE1BQU0sTUFBeEIsRUFBZ0NDLFdBQVdQLElBQTNDLEVBakJhLEVBbUJiLEVBQUVLLE1BQU0sR0FBUixFQUFhRSxXQUFXUixRQUF4QixFQW5CYSxDQUFmIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgV2VsY29tZSA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy93ZWxjb21lJykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuY29uc3QgTG9naW4gPSAoKSA9PiBpbXBvcnQoJ34vcGFnZXMvYXV0aC9sb2dpbicpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcbmNvbnN0IFJlZ2lzdGVyID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcmVnaXN0ZXInKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBQYXNzd29yZEVtYWlsID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcGFzc3dvcmQvZW1haWwnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBQYXNzd29yZFJlc2V0ID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcGFzc3dvcmQvcmVzZXQnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBOb3RGb3VuZCA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9lcnJvcnMvNDA0JykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuXG5jb25zdCBIb21lID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2hvbWUnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBTZXR0aW5ncyA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9pbmRleCcpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcbmNvbnN0IFNldHRpbmdzUHJvZmlsZSA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9wcm9maWxlJykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuY29uc3QgU2V0dGluZ3NQYXNzd29yZCA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9wYXNzd29yZCcpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcblxuY29uc3QgQWRtaW4gPSAoKSA9PiBpbXBvcnQoJ34vcGFnZXMvYWRtaW4vaG9tZScpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcblxuZXhwb3J0IGRlZmF1bHQgW1xuICB7IHBhdGg6ICcvJywgbmFtZTogJ3dlbGNvbWUnLCBjb21wb25lbnQ6IFdlbGNvbWUgfSxcblxuICB7IHBhdGg6ICcvbG9naW4nLCBuYW1lOiAnbG9naW4nLCBjb21wb25lbnQ6IExvZ2luIH0sXG4gIHsgcGF0aDogJy9yZWdpc3RlcicsIG5hbWU6ICdyZWdpc3RlcicsIGNvbXBvbmVudDogUmVnaXN0ZXIgfSxcbiAgeyBwYXRoOiAnL3Bhc3N3b3JkL3Jlc2V0JywgbmFtZTogJ3Bhc3N3b3JkLnJlcXVlc3QnLCBjb21wb25lbnQ6IFBhc3N3b3JkRW1haWwgfSxcbiAgeyBwYXRoOiAnL3Bhc3N3b3JkL3Jlc2V0Lzp0b2tlbicsIG5hbWU6ICdwYXNzd29yZC5yZXNldCcsIGNvbXBvbmVudDogUGFzc3dvcmRSZXNldCB9LFxuXG4gIHsgcGF0aDogJy9ob21lJywgbmFtZTogJ2hvbWUnLCBjb21wb25lbnQ6IEhvbWUgfSxcbiAgeyBwYXRoOiAnL3NldHRpbmdzJyxcbiAgICBjb21wb25lbnQ6IFNldHRpbmdzLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7IHBhdGg6ICcnLCByZWRpcmVjdDogeyBuYW1lOiAnc2V0dGluZ3MucHJvZmlsZScgfSB9LFxuICAgICAgeyBwYXRoOiAncHJvZmlsZScsIG5hbWU6ICdzZXR0aW5ncy5wcm9maWxlJywgY29tcG9uZW50OiBTZXR0aW5nc1Byb2ZpbGUgfSxcbiAgICAgIHsgcGF0aDogJ3Bhc3N3b3JkJywgbmFtZTogJ3NldHRpbmdzLnBhc3N3b3JkJywgY29tcG9uZW50OiBTZXR0aW5nc1Bhc3N3b3JkIH1cbiAgICBdIH0sXG4gIFxuICB7IHBhdGg6ICcvYWRtaW4nLCBuYW1lOiAnaG9tZScsIGNvbXBvbmVudDogSG9tZSB9LFxuXG4gIHsgcGF0aDogJyonLCBjb21wb25lbnQ6IE5vdEZvdW5kIH1cbl1cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyAuL3Jlc291cmNlcy9hc3NldHMvanMvcm91dGVyL3JvdXRlcy5qcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///64\n"); +eval("var Welcome = function Welcome() {\n return __webpack_require__.e/* import() */(5).then(__webpack_require__.bind(null, 115)).then(function (m) {\n return m.default || m;\n });\n};\nvar Login = function Login() {\n return __webpack_require__.e/* import() */(4).then(__webpack_require__.bind(null, 116)).then(function (m) {\n return m.default || m;\n });\n};\nvar Register = function Register() {\n return __webpack_require__.e/* import() */(3).then(__webpack_require__.bind(null, 117)).then(function (m) {\n return m.default || m;\n });\n};\nvar PasswordEmail = function PasswordEmail() {\n return __webpack_require__.e/* import() */(12).then(__webpack_require__.bind(null, 118)).then(function (m) {\n return m.default || m;\n });\n};\nvar PasswordReset = function PasswordReset() {\n return __webpack_require__.e/* import() */(11).then(__webpack_require__.bind(null, 119)).then(function (m) {\n return m.default || m;\n });\n};\nvar NotFound = function NotFound() {\n return __webpack_require__.e/* import() */(10).then(__webpack_require__.bind(null, 120)).then(function (m) {\n return m.default || m;\n });\n};\n\nvar Home = function Home() {\n return __webpack_require__.e/* import() */(9).then(__webpack_require__.bind(null, 121)).then(function (m) {\n return m.default || m;\n });\n};\nvar Settings = function Settings() {\n return __webpack_require__.e/* import() */(6).then(__webpack_require__.bind(null, 122)).then(function (m) {\n return m.default || m;\n });\n};\nvar SettingsProfile = function SettingsProfile() {\n return __webpack_require__.e/* import() */(7).then(__webpack_require__.bind(null, 123)).then(function (m) {\n return m.default || m;\n });\n};\nvar SettingsPassword = function SettingsPassword() {\n return __webpack_require__.e/* import() */(8).then(__webpack_require__.bind(null, 124)).then(function (m) {\n return m.default || m;\n });\n};\n\nvar Admin = function Admin() {\n return __webpack_require__.e/* import() */(13).then(__webpack_require__.bind(null, 125)).then(function (m) {\n return m.default || m;\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ([{ path: '/', name: 'welcome', component: Welcome }, { path: '/login', name: 'login', component: Login }, { path: '/register', name: 'register', component: Register }, { path: '/password/reset', name: 'password.request', component: PasswordEmail }, { path: '/password/reset/:token', name: 'password.reset', component: PasswordReset }, { path: '/home', name: 'home', component: Home }, { path: '/settings',\n component: Settings,\n children: [{ path: '', redirect: { name: 'settings.profile' } }, { path: 'profile', name: 'settings.profile', component: SettingsProfile }, { path: 'password', name: 'settings.password', component: SettingsPassword }] }, { path: '/admin', name: 'admin.home', component: Admin }, { path: '*', component: NotFound }]);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3JvdXRlci9yb3V0ZXMuanM/MzM0YiJdLCJuYW1lcyI6WyJXZWxjb21lIiwidGhlbiIsIm0iLCJkZWZhdWx0IiwiTG9naW4iLCJSZWdpc3RlciIsIlBhc3N3b3JkRW1haWwiLCJQYXNzd29yZFJlc2V0IiwiTm90Rm91bmQiLCJIb21lIiwiU2V0dGluZ3MiLCJTZXR0aW5nc1Byb2ZpbGUiLCJTZXR0aW5nc1Bhc3N3b3JkIiwiQWRtaW4iLCJwYXRoIiwibmFtZSIsImNvbXBvbmVudCIsImNoaWxkcmVuIiwicmVkaXJlY3QiXSwibWFwcGluZ3MiOiJBQUFBLElBQU1BLFVBQVUsU0FBVkEsT0FBVTtBQUFBLFNBQU0saUZBQTBCQyxJQUExQixDQUErQjtBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUEvQixDQUFOO0FBQUEsQ0FBaEI7QUFDQSxJQUFNRSxRQUFRLFNBQVJBLEtBQVE7QUFBQSxTQUFNLGlGQUE2QkgsSUFBN0IsQ0FBa0M7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBbEMsQ0FBTjtBQUFBLENBQWQ7QUFDQSxJQUFNRyxXQUFXLFNBQVhBLFFBQVc7QUFBQSxTQUFNLGlGQUFnQ0osSUFBaEMsQ0FBcUM7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBckMsQ0FBTjtBQUFBLENBQWpCO0FBQ0EsSUFBTUksZ0JBQWdCLFNBQWhCQSxhQUFnQjtBQUFBLFNBQU0sa0ZBQXNDTCxJQUF0QyxDQUEyQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUEzQyxDQUFOO0FBQUEsQ0FBdEI7QUFDQSxJQUFNSyxnQkFBZ0IsU0FBaEJBLGFBQWdCO0FBQUEsU0FBTSxrRkFBc0NOLElBQXRDLENBQTJDO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQTNDLENBQU47QUFBQSxDQUF0QjtBQUNBLElBQU1NLFdBQVcsU0FBWEEsUUFBVztBQUFBLFNBQU0sa0ZBQTZCUCxJQUE3QixDQUFrQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUFsQyxDQUFOO0FBQUEsQ0FBakI7O0FBRUEsSUFBTU8sT0FBTyxTQUFQQSxJQUFPO0FBQUEsU0FBTSxpRkFBdUJSLElBQXZCLENBQTRCO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQTVCLENBQU47QUFBQSxDQUFiO0FBQ0EsSUFBTVEsV0FBVyxTQUFYQSxRQUFXO0FBQUEsU0FBTSxpRkFBaUNULElBQWpDLENBQXNDO0FBQUEsV0FBS0MsRUFBRUMsT0FBRixJQUFhRCxDQUFsQjtBQUFBLEdBQXRDLENBQU47QUFBQSxDQUFqQjtBQUNBLElBQU1TLGtCQUFrQixTQUFsQkEsZUFBa0I7QUFBQSxTQUFNLGlGQUFtQ1YsSUFBbkMsQ0FBd0M7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBeEMsQ0FBTjtBQUFBLENBQXhCO0FBQ0EsSUFBTVUsbUJBQW1CLFNBQW5CQSxnQkFBbUI7QUFBQSxTQUFNLGlGQUFvQ1gsSUFBcEMsQ0FBeUM7QUFBQSxXQUFLQyxFQUFFQyxPQUFGLElBQWFELENBQWxCO0FBQUEsR0FBekMsQ0FBTjtBQUFBLENBQXpCOztBQUVBLElBQU1XLFFBQVEsU0FBUkEsS0FBUTtBQUFBLFNBQU0sa0ZBQTZCWixJQUE3QixDQUFrQztBQUFBLFdBQUtDLEVBQUVDLE9BQUYsSUFBYUQsQ0FBbEI7QUFBQSxHQUFsQyxDQUFOO0FBQUEsQ0FBZDs7QUFFQSx5REFBZSxDQUNiLEVBQUVZLE1BQU0sR0FBUixFQUFhQyxNQUFNLFNBQW5CLEVBQThCQyxXQUFXaEIsT0FBekMsRUFEYSxFQUdiLEVBQUVjLE1BQU0sUUFBUixFQUFrQkMsTUFBTSxPQUF4QixFQUFpQ0MsV0FBV1osS0FBNUMsRUFIYSxFQUliLEVBQUVVLE1BQU0sV0FBUixFQUFxQkMsTUFBTSxVQUEzQixFQUF1Q0MsV0FBV1gsUUFBbEQsRUFKYSxFQUtiLEVBQUVTLE1BQU0saUJBQVIsRUFBMkJDLE1BQU0sa0JBQWpDLEVBQXFEQyxXQUFXVixhQUFoRSxFQUxhLEVBTWIsRUFBRVEsTUFBTSx3QkFBUixFQUFrQ0MsTUFBTSxnQkFBeEMsRUFBMERDLFdBQVdULGFBQXJFLEVBTmEsRUFRYixFQUFFTyxNQUFNLE9BQVIsRUFBaUJDLE1BQU0sTUFBdkIsRUFBK0JDLFdBQVdQLElBQTFDLEVBUmEsRUFTYixFQUFFSyxNQUFNLFdBQVI7QUFDRUUsYUFBV04sUUFEYjtBQUVFTyxZQUFVLENBQ1IsRUFBRUgsTUFBTSxFQUFSLEVBQVlJLFVBQVUsRUFBRUgsTUFBTSxrQkFBUixFQUF0QixFQURRLEVBRVIsRUFBRUQsTUFBTSxTQUFSLEVBQW1CQyxNQUFNLGtCQUF6QixFQUE2Q0MsV0FBV0wsZUFBeEQsRUFGUSxFQUdSLEVBQUVHLE1BQU0sVUFBUixFQUFvQkMsTUFBTSxtQkFBMUIsRUFBK0NDLFdBQVdKLGdCQUExRCxFQUhRLENBRlosRUFUYSxFQWlCYixFQUFFRSxNQUFNLFFBQVIsRUFBa0JDLE1BQU0sWUFBeEIsRUFBc0NDLFdBQVdILEtBQWpELEVBakJhLEVBbUJiLEVBQUVDLE1BQU0sR0FBUixFQUFhRSxXQUFXUixRQUF4QixFQW5CYSxDQUFmIiwiZmlsZSI6IjY0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgV2VsY29tZSA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy93ZWxjb21lJykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuY29uc3QgTG9naW4gPSAoKSA9PiBpbXBvcnQoJ34vcGFnZXMvYXV0aC9sb2dpbicpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcbmNvbnN0IFJlZ2lzdGVyID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcmVnaXN0ZXInKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBQYXNzd29yZEVtYWlsID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcGFzc3dvcmQvZW1haWwnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBQYXNzd29yZFJlc2V0ID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2F1dGgvcGFzc3dvcmQvcmVzZXQnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBOb3RGb3VuZCA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9lcnJvcnMvNDA0JykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuXG5jb25zdCBIb21lID0gKCkgPT4gaW1wb3J0KCd+L3BhZ2VzL2hvbWUnKS50aGVuKG0gPT4gbS5kZWZhdWx0IHx8IG0pXG5jb25zdCBTZXR0aW5ncyA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9pbmRleCcpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcbmNvbnN0IFNldHRpbmdzUHJvZmlsZSA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9wcm9maWxlJykudGhlbihtID0+IG0uZGVmYXVsdCB8fCBtKVxuY29uc3QgU2V0dGluZ3NQYXNzd29yZCA9ICgpID0+IGltcG9ydCgnfi9wYWdlcy9zZXR0aW5ncy9wYXNzd29yZCcpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcblxuY29uc3QgQWRtaW4gPSAoKSA9PiBpbXBvcnQoJ34vcGFnZXMvYWRtaW4vaG9tZScpLnRoZW4obSA9PiBtLmRlZmF1bHQgfHwgbSlcblxuZXhwb3J0IGRlZmF1bHQgW1xuICB7IHBhdGg6ICcvJywgbmFtZTogJ3dlbGNvbWUnLCBjb21wb25lbnQ6IFdlbGNvbWUgfSxcblxuICB7IHBhdGg6ICcvbG9naW4nLCBuYW1lOiAnbG9naW4nLCBjb21wb25lbnQ6IExvZ2luIH0sXG4gIHsgcGF0aDogJy9yZWdpc3RlcicsIG5hbWU6ICdyZWdpc3RlcicsIGNvbXBvbmVudDogUmVnaXN0ZXIgfSxcbiAgeyBwYXRoOiAnL3Bhc3N3b3JkL3Jlc2V0JywgbmFtZTogJ3Bhc3N3b3JkLnJlcXVlc3QnLCBjb21wb25lbnQ6IFBhc3N3b3JkRW1haWwgfSxcbiAgeyBwYXRoOiAnL3Bhc3N3b3JkL3Jlc2V0Lzp0b2tlbicsIG5hbWU6ICdwYXNzd29yZC5yZXNldCcsIGNvbXBvbmVudDogUGFzc3dvcmRSZXNldCB9LFxuXG4gIHsgcGF0aDogJy9ob21lJywgbmFtZTogJ2hvbWUnLCBjb21wb25lbnQ6IEhvbWUgfSxcbiAgeyBwYXRoOiAnL3NldHRpbmdzJyxcbiAgICBjb21wb25lbnQ6IFNldHRpbmdzLFxuICAgIGNoaWxkcmVuOiBbXG4gICAgICB7IHBhdGg6ICcnLCByZWRpcmVjdDogeyBuYW1lOiAnc2V0dGluZ3MucHJvZmlsZScgfSB9LFxuICAgICAgeyBwYXRoOiAncHJvZmlsZScsIG5hbWU6ICdzZXR0aW5ncy5wcm9maWxlJywgY29tcG9uZW50OiBTZXR0aW5nc1Byb2ZpbGUgfSxcbiAgICAgIHsgcGF0aDogJ3Bhc3N3b3JkJywgbmFtZTogJ3NldHRpbmdzLnBhc3N3b3JkJywgY29tcG9uZW50OiBTZXR0aW5nc1Bhc3N3b3JkIH1cbiAgICBdIH0sXG4gIFxuICB7IHBhdGg6ICcvYWRtaW4nLCBuYW1lOiAnYWRtaW4uaG9tZScsIGNvbXBvbmVudDogQWRtaW4gfSxcblxuICB7IHBhdGg6ICcqJywgY29tcG9uZW50OiBOb3RGb3VuZCB9XG5dXG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9yZXNvdXJjZXMvYXNzZXRzL2pzL3JvdXRlci9yb3V0ZXMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n"); /***/ }), /* 65 */ diff --git a/resources/assets/js/router/routes.js b/resources/assets/js/router/routes.js index 3ed9b03c..9de3c382 100644 --- a/resources/assets/js/router/routes.js +++ b/resources/assets/js/router/routes.js @@ -29,7 +29,7 @@ export default [ { path: 'password', name: 'settings.password', component: SettingsPassword } ] }, - { path: '/admin', name: 'home', component: Home }, + { path: '/admin', name: 'admin.home', component: Admin }, { path: '*', component: NotFound } ] diff --git a/routes/api.php b/routes/api.php index 1e50d903..f952456c 100644 --- a/routes/api.php +++ b/routes/api.php @@ -17,7 +17,7 @@ Route::group(['middleware' => 'auth:api'], function () { Route::post('logout', 'Auth\LoginController@logout'); Route::get('/user', function (Request $request) { - return $request->user()->load('roles'); + return $request->user(); }); Route::patch('settings/profile', 'Settings\ProfileController@update');