diff --git a/app/Abstracts/Model.php b/app/Abstracts/Model.php index 845b53634..76fc5950a 100644 --- a/app/Abstracts/Model.php +++ b/app/Abstracts/Model.php @@ -56,11 +56,6 @@ abstract class Model extends Eloquent implements Ownable return parent::update($attributes, $options); } - public static function observe($classes) - { - parent::observe($classes); - } - /** * Global company relation. * diff --git a/app/Http/Controllers/Api/Settings/Settings.php b/app/Http/Controllers/Api/Settings/Settings.php index ebaa7f0a6..9cc95e6c1 100644 --- a/app/Http/Controllers/Api/Settings/Settings.php +++ b/app/Http/Controllers/Api/Settings/Settings.php @@ -12,6 +12,17 @@ class Settings extends ApiController { use Helpers; + /** + * Instantiate a new controller instance. + */ + public function __construct() + { + // Add CRUD permission check + $this->middleware('permission:create-settings-settings')->only('create', 'store', 'duplicate', 'import'); + $this->middleware('permission:read-settings-settings')->only('index', 'show', 'edit', 'export'); + $this->middleware('permission:update-settings-settings')->only('update', 'enable', 'disable', 'destroy'); + } + /** * Display a listing of the resource. * diff --git a/app/Listeners/Update/V21/Version2133.php b/app/Listeners/Update/V21/Version2133.php new file mode 100644 index 000000000..abb4a069e --- /dev/null +++ b/app/Listeners/Update/V21/Version2133.php @@ -0,0 +1,30 @@ +skipThisUpdate($event)) { + return; + } + + Artisan::call('migrate', ['--force' => true]); + } +} diff --git a/app/Models/Auth/User.php b/app/Models/Auth/User.php index 944453b20..9322be231 100644 --- a/app/Models/Auth/User.php +++ b/app/Models/Auth/User.php @@ -76,7 +76,7 @@ class User extends Authenticatable implements HasLocalePreference public function companies() { - return $this->morphToMany('App\Models\Common\Company', 'user', 'user_companies', 'user_id', 'company_id'); + return $this->belongsToMany('App\Models\Common\Company', 'App\Models\Auth\UserCompany'); } public function contact() @@ -86,7 +86,7 @@ class User extends Authenticatable implements HasLocalePreference public function dashboards() { - return $this->morphToMany('App\Models\Common\Dashboard', 'user', 'user_dashboards', 'user_id', 'dashboard_id'); + return $this->belongsToMany('App\Models\Common\Dashboard', 'App\Models\Auth\UserDashboard'); } /** diff --git a/app/Models/Auth/UserCompany.php b/app/Models/Auth/UserCompany.php new file mode 100644 index 000000000..5b93f1a68 --- /dev/null +++ b/app/Models/Auth/UserCompany.php @@ -0,0 +1,31 @@ +belongsTo('App\Models\Auth\User'); + } +} diff --git a/app/Models/Auth/UserDashboard.php b/app/Models/Auth/UserDashboard.php new file mode 100644 index 000000000..ad5951ee5 --- /dev/null +++ b/app/Models/Auth/UserDashboard.php @@ -0,0 +1,31 @@ +belongsTo('App\Models\Auth\User'); + } +} diff --git a/app/Models/Common/Company.php b/app/Models/Common/Company.php index 03c069fd4..e12cf2ec2 100644 --- a/app/Models/Common/Company.php +++ b/app/Models/Common/Company.php @@ -267,7 +267,7 @@ class Company extends Eloquent implements Ownable public function users() { - return $this->morphedByMany('App\Models\Auth\User', 'user', 'user_companies', 'company_id', 'user_id'); + return $this->belongsToMany('App\Models\Auth\User', 'App\Models\Auth\UserCompany'); } public function vendors() diff --git a/app/Models/Common/Dashboard.php b/app/Models/Common/Dashboard.php index 605a703e1..cbfb867af 100644 --- a/app/Models/Common/Dashboard.php +++ b/app/Models/Common/Dashboard.php @@ -38,7 +38,7 @@ class Dashboard extends Model public function users() { - return $this->morphedByMany('App\Models\Auth\User', 'user', 'user_dashboards', 'dashboard_id', 'user_id'); + return $this->belongsToMany('App\Models\Auth\User', 'App\Models\Auth\UserDashboard'); } public function widgets() diff --git a/app/Models/Setting/Category.php b/app/Models/Setting/Category.php index c708907ca..3743645a1 100644 --- a/app/Models/Setting/Category.php +++ b/app/Models/Setting/Category.php @@ -18,7 +18,7 @@ class Category extends Model * * @var array */ - protected $fillable = ['company_id', 'name', 'type', 'color', 'enabled', 'created_from', 'created_by',]; + protected $fillable = ['company_id', 'name', 'type', 'color', 'enabled', 'created_from', 'created_by']; /** * The attributes that should be cast. diff --git a/app/Models/Setting/Setting.php b/app/Models/Setting/Setting.php index 4bec01b31..30741cb91 100644 --- a/app/Models/Setting/Setting.php +++ b/app/Models/Setting/Setting.php @@ -2,13 +2,10 @@ namespace App\Models\Setting; -use App\Traits\Tenants; -use Illuminate\Database\Eloquent\Model as Eloquent; +use App\Abstracts\Model; -class Setting extends Eloquent +class Setting extends Model { - use Tenants; - protected $table = 'settings'; /** @@ -18,42 +15,13 @@ class Setting extends Eloquent */ protected $fillable = ['company_id', 'key', 'value']; - public $allAttributes = []; - + /** + * Indicates if the model should be timestamped. + * + * @var bool + */ public $timestamps = false; - /** - * Create a new Eloquent model instance. - * - * @param array $attributes - * @return void - */ - public function __construct(array $attributes = []) - { - $this->allAttributes = $attributes; - - parent::__construct($attributes); - } - - /** - * Update the model in the database. - * - * @param array $attributes - * @param array $options - * @return bool - */ - public function update(array $attributes = [], array $options = []) - { - $this->allAttributes = $attributes; - - return parent::update($attributes, $options); - } - - public function company() - { - return $this->belongsTo('App\Models\Common\Company'); - } - /** * Scope to only include by prefix. * @@ -66,17 +34,4 @@ class Setting extends Eloquent { return $query->where('key', 'like', $prefix . '.%'); } - - /** - * Scope to only include company data. - * - * @param \Illuminate\Database\Eloquent\Builder $query - * @param $company_id - * - * @return \Illuminate\Database\Eloquent\Builder - */ - public function scopeCompanyId($query, $company_id) - { - return $query->where($this->qualifyColumn('company_id'), '=', $company_id); - } } diff --git a/app/Providers/Event.php b/app/Providers/Event.php index beb29f83b..c53347910 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -39,6 +39,7 @@ class Event extends Provider 'App\Listeners\Update\V21\Version2125', 'App\Listeners\Update\V21\Version2126', 'App\Listeners\Update\V21\Version2127', + 'App\Listeners\Update\V21\Version2133', ], 'Illuminate\Auth\Events\Login' => [ 'App\Listeners\Auth\Login', diff --git a/database/migrations/2022_03_02_000000_core_v2133.php b/database/migrations/2022_03_02_000000_core_v2133.php new file mode 100644 index 000000000..2b9726426 --- /dev/null +++ b/database/migrations/2022_03_02_000000_core_v2133.php @@ -0,0 +1,48 @@ +softDeletes(); + }); + + Schema::table('user_companies', function (Blueprint $table) { + $table->dropPrimary(['user_id', 'company_id', 'user_type']); + $table->primary(['user_id', 'company_id']); + }); + + Schema::table('user_companies', function (Blueprint $table) { + $table->dropColumn('user_type'); + }); + + Schema::table('user_dashboards', function (Blueprint $table) { + $table->dropPrimary(['user_id', 'company_id', 'user_type']); + $table->primary(['user_id', 'company_id']); + }); + + Schema::table('user_dashboards', function (Blueprint $table) { + $table->dropColumn('user_type'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +};