first_name} {$this->last_name}"); } public function getNameAttribute(): string { return $this->full_name; } protected $hidden = [ 'password', 'remember_token', 'mfa_secret', ]; protected function casts(): array { return [ 'date_of_birth' => 'date', 'email_verified_at' => 'datetime', 'password' => 'hashed', 'mfa_enabled' => 'boolean', 'mfa_confirmed_at' => 'datetime', 'mfa_enforced' => 'boolean', ]; } public function organisations(): BelongsToMany { return $this->belongsToMany(Organisation::class, 'organisation_user') ->withPivot('role') ->withTimestamps(); } public function events(): BelongsToMany { return $this->belongsToMany(Event::class, 'event_user_roles') ->withPivot('role') ->withTimestamps(); } public function invitations(): HasMany { return $this->hasMany(UserInvitation::class, 'invited_by_user_id'); } public function identityMatches(): HasMany { return $this->hasMany(PersonIdentityMatch::class, 'matched_user_id'); } public function persons(): HasMany { return $this->hasMany(Person::class, 'user_id'); } public function organisationTags(): HasMany { return $this->hasMany(UserOrganisationTag::class); } public function mfaBackupCodes(): HasMany { return $this->hasMany(MfaBackupCode::class); } public function mfaEmailCodes(): HasMany { return $this->hasMany(MfaEmailCode::class); } public function trustedDevices(): HasMany { return $this->hasMany(TrustedDevice::class); } public function tagsForOrganisation(string $organisationId): HasMany { return $this->organisationTags()->where('organisation_id', $organisationId); } }