Files
einundzwanzig-portal/app/Models/User.php
2023-01-17 18:59:10 +01:00

74 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Fortify\TwoFactorAuthenticatable;
use Laravel\Jetstream\HasProfilePhoto;
use Laravel\Jetstream\HasTeams;
use Laravel\Sanctum\HasApiTokens;
use QCod\Gamify\Gamify;
use Spatie\Comments\Models\Concerns\InteractsWithComments;
use Spatie\Comments\Models\Concerns\Interfaces\CanComment;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable implements MustVerifyEmail, CanComment
{
use HasApiTokens;
use HasFactory;
use HasProfilePhoto;
use HasTeams;
use Notifiable;
use TwoFactorAuthenticatable;
use HasRoles;
use InteractsWithComments;
use Gamify;
protected $guarded = [];
/**
* The attributes that should be hidden for serialization.
* @var array
*/
protected $hidden = [
'password',
'remember_token',
'two_factor_recovery_codes',
'two_factor_secret',
];
/**
* The attributes that should be cast.
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* The accessors to append to the model's array form.
* @var array
*/
protected $appends = [
'profile_photo_url',
];
public function orangePills()
{
return $this->hasMany(OrangePill::class);
}
public function meetups()
{
return $this->belongsToMany(Meetup::class);
}
public function reputations()
{
return $this->morphMany('QCod\Gamify\Reputation', 'subject');
}
}