summaryrefslogtreecommitdiff
path: root/src/Models/User/User.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Models/User/User.php')
-rw-r--r--src/Models/User/User.php55
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()