diff options
Diffstat (limited to 'src/Models/User/User.php')
-rw-r--r-- | src/Models/User/User.php | 55 |
1 files changed, 54 insertions, 1 deletions
diff --git a/src/Models/User/User.php b/src/Models/User/User.php index 4be3246c..b92ed5fe 100644 --- a/src/Models/User/User.php +++ b/src/Models/User/User.php @@ -2,8 +2,12 @@ namespace Engelsystem\Models\User; +use Engelsystem\Models\Auth\Role; use Engelsystem\Models\BaseModel; +use Engelsystem\Models\Team; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\HasOne; +use Staudenmeir\EloquentHasManyDeep\HasManyDeep; /** * @property integer $id @@ -19,8 +23,12 @@ use Illuminate\Database\Eloquent\Relations\HasOne; * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\PersonalData $personalData * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\Settings $settings * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\State $state + * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\Auth\Permission[] $permissions + * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\Auth\Role[] $roles + * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\Team[] $supports + * @property-read \Illuminate\Database\Query\Builder|\Engelsystem\Models\Team[] $teams * - * @method static \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User whereId($value) + * @method static \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User whereId($value) * @method static \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User[] whereName($value) * @method static \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User[] whereEmail($value) * @method static \Illuminate\Database\Query\Builder|\Engelsystem\Models\User\User[] wherePassword($value) @@ -75,6 +83,51 @@ class User extends BaseModel } /** + * The permissions that the user has + * + * @return HasManyDeep + */ + public function permissions() + { + return $this->hasManyDeepFromRelations($this->roles(), (new Role)->permissions()); + } + + /** + * The roles that belong to the user + * + * @return HasManyDeep + */ + public function roles() + { + return $this->hasManyDeepFromRelations($this->teams(), (new Team)->roles()); + } + + /** + * The teams that are supported by the user + * + * @return BelongsToMany + */ + public function supports() + { + return $this + ->belongsToMany(Team::class, 'supporter_team') + ->withTimestamps(); + } + + /** + * The teams that belong to the user + * + * @return BelongsToMany + */ + public function teams() + { + return $this + ->belongsToMany(Team::class) + ->withPivot(['confirmed']) + ->withTimestamps(); + } + + /** * @return HasOne */ public function settings() |