. */ namespace App; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Support\Str; use App\ApiKey; class Account extends Authenticatable { use HasFactory; protected $connection = 'external'; protected $with = ['passwords', 'admin', 'emailChanged']; protected $dates = ['creation_time']; public $timestamps = false; protected static function booted() { static::addGlobalScope('domain', function (Builder $builder) { $builder->where('domain', config('app.sip_domain')); }); } public function passwords() { return $this->hasMany('App\Password'); } public function alias() { return $this->hasOne('App\Alias'); } public function nonces() { return $this->hasMany('App\DigestNonce'); } public function admin() { return $this->hasOne('App\Admin'); } public function apiKey() { return $this->hasOne('App\ApiKey'); } public function emailChanged() { return $this->hasOne('App\EmailChanged'); } public function getIdentifierAttribute() { return $this->attributes['username'].'@'.$this->attributes['domain']; } public function generateApiKey() { $this->apiKey()->delete(); $apiKey = new ApiKey; $apiKey->account_id = $this->id; $apiKey->key = Str::random(40); $apiKey->save(); } public function isAdmin() { return ($this->admin); } }