From 4b9d9f2598d887fd86372355d48705dbe66e6494 Mon Sep 17 00:00:00 2001 From: Mark Hester Date: Mon, 6 May 2019 23:37:52 +0100 Subject: [PATCH 1/3] framework-215 New accounts: Field 'role_id' doesn't have a default value --- app/Classes/Roles/Administrator.php | 2 +- app/Classes/Roles/Developer.php | 2 +- app/Classes/Roles/Disabled.php | 2 +- app/Classes/Roles/Publisher.php | 2 +- app/Model/Account.php | 2 +- app/Modules/Accounts/Blade/index.blade.php | 2 +- app/Modules/Accounts/Controller.php | 5 +++-- tests/Account/AccountRoleTest.php | 6 +++--- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/Classes/Roles/Administrator.php b/app/Classes/Roles/Administrator.php index f62a1c89..1d09c327 100644 --- a/app/Classes/Roles/Administrator.php +++ b/app/Classes/Roles/Administrator.php @@ -26,7 +26,7 @@ class Administrator implements RoleInterface */ public function apply(Account $account) { - return $account->update(['role_id' => self::$key]); + return $account->setAttribute('role_id', self::$key); } /** diff --git a/app/Classes/Roles/Developer.php b/app/Classes/Roles/Developer.php index d2e94721..f95a051b 100644 --- a/app/Classes/Roles/Developer.php +++ b/app/Classes/Roles/Developer.php @@ -26,7 +26,7 @@ class Developer implements RoleInterface */ public function apply(Account $account) { - return $account->update(['role_id' => self::$key]); + return $account->setAttribute('role_id', self::$key); } /** diff --git a/app/Classes/Roles/Disabled.php b/app/Classes/Roles/Disabled.php index 867dee3b..f338bac4 100644 --- a/app/Classes/Roles/Disabled.php +++ b/app/Classes/Roles/Disabled.php @@ -26,7 +26,7 @@ class Disabled implements RoleInterface */ public function apply(Account $account) { - return $account->update(['role_id' => self::$key]); + return $account->setAttribute('role_id', self::$key); } /** diff --git a/app/Classes/Roles/Publisher.php b/app/Classes/Roles/Publisher.php index debabea0..077acfea 100644 --- a/app/Classes/Roles/Publisher.php +++ b/app/Classes/Roles/Publisher.php @@ -26,7 +26,7 @@ class Publisher implements RoleInterface */ public function apply(Account $account) { - return $account->update(['role_id' => self::$key]); + return $account->setAttribute('role_id', self::$key); } /** diff --git a/app/Model/Account.php b/app/Model/Account.php index dcb0e6ef..dc632107 100644 --- a/app/Model/Account.php +++ b/app/Model/Account.php @@ -259,11 +259,11 @@ public function setRole($role) { if (is_string($role)) { $class = sprintf('App\Classes\Roles\%s', $role); - return $this->setRole(app()->make($class)); } if ($role instanceof RoleInterface) { + $role->apply($this); return $role->apply($this); } diff --git a/app/Modules/Accounts/Blade/index.blade.php b/app/Modules/Accounts/Blade/index.blade.php index 8bfad25f..73aa518f 100644 --- a/app/Modules/Accounts/Blade/index.blade.php +++ b/app/Modules/Accounts/Blade/index.blade.php @@ -55,7 +55,7 @@
- Last Logged IP: {{ optional(AccessLog::latestAttemptFrom($account))->ip_address ?? 'Never' }} + Last Logged IP: {{ optional(\App\Model\AccessLog::latestAttemptFrom($account))->ip_address ?? 'Never' }}
Last Login: {{ optional($account->last_login)->diffForHumans() ?? 'Never' }} diff --git a/app/Modules/Accounts/Controller.php b/app/Modules/Accounts/Controller.php index 7623e583..33fc3fd4 100644 --- a/app/Modules/Accounts/Controller.php +++ b/app/Modules/Accounts/Controller.php @@ -159,11 +159,12 @@ public function storeDataFrom(Request $request, Account $account) $account->password = $request->input('password'); } - $account->save(); - // assign the role from the request. $account->setRole($request->input('role')); + // save the new account. + $account->save(); + // return the data that was created. return $account; } diff --git a/tests/Account/AccountRoleTest.php b/tests/Account/AccountRoleTest.php index ae11926c..4715424c 100644 --- a/tests/Account/AccountRoleTest.php +++ b/tests/Account/AccountRoleTest.php @@ -13,10 +13,10 @@ class AccountRoleTest extends TestCase */ public function a_developer_obtains_role_of_administrator() { - $developer = factory('App\Model\Account')->make(); + $account = factory('App\Model\Account')->make(); - $developer->setRole(new Developer); + $account->setRole(new Developer); - $this->assertTrue($developer->hasRole(new Administrator)); + $this->assertTrue($account->hasRole(new Administrator)); } } From c0e20cf8b93f79a3a3e6033a3fdb8e2eb1da733d Mon Sep 17 00:00:00 2001 From: Mark Hester Date: Mon, 6 May 2019 23:54:13 +0100 Subject: [PATCH 2/3] framework-220 Deleted articles should not show on dashboard --- app/Classes/Repositories/ArticleRepository.php | 2 +- app/Classes/Repositories/BaseRepository.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Classes/Repositories/ArticleRepository.php b/app/Classes/Repositories/ArticleRepository.php index 66efb241..8f31c8ed 100644 --- a/app/Classes/Repositories/ArticleRepository.php +++ b/app/Classes/Repositories/ArticleRepository.php @@ -40,7 +40,7 @@ public function __construct(Article $model) */ public function all() { - return $this->model->withoutGlobalScope('public')->all(); + return $this->model->all(); } public function whereSitemappable() diff --git a/app/Classes/Repositories/BaseRepository.php b/app/Classes/Repositories/BaseRepository.php index 6e5e6602..eb498040 100644 --- a/app/Classes/Repositories/BaseRepository.php +++ b/app/Classes/Repositories/BaseRepository.php @@ -37,7 +37,7 @@ public function all() */ public function allDescendingOrder() { - return $this->model->withoutGlobalScopes()->orderBy('created_at', 'desc')->get(); + return $this->model->whereNull('deleted_at')->orderBy('created_at', 'desc')->get(); } /** From afc853c4577e065a18a7b426aa4bb7c42cb4b792 Mon Sep 17 00:00:00 2001 From: Mark Hester Date: Mon, 6 May 2019 22:54:24 +0000 Subject: [PATCH 3/3] Apply fixes from StyleCI [ci skip] [skip ci] --- app/Model/Account.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Model/Account.php b/app/Model/Account.php index dc632107..fd28da8e 100644 --- a/app/Model/Account.php +++ b/app/Model/Account.php @@ -259,11 +259,13 @@ public function setRole($role) { if (is_string($role)) { $class = sprintf('App\Classes\Roles\%s', $role); + return $this->setRole(app()->make($class)); } if ($role instanceof RoleInterface) { $role->apply($this); + return $role->apply($this); }