<?php namespace App\Models; use App\Models\Enums\AccountStatusEnum; use Illuminate\Auth\Notifications\VerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; class Account extends User implements MustVerifyEmail { use HasApiTokens, HasFactory, Notifiable; /** * The connection name for the model. * * @var string|null */ protected $connection = 'account'; /** * The table associated with the model. * * @var string */ protected $table = 'account'; /** * The name of the "created at" column. * * @var string|null */ const CREATED_AT = 'create_time'; /** * The name of the "updated at" column. * * @var string|null */ const UPDATED_AT = null; /** * The attributes that are mass assignable. * * @var array<int, string> */ protected $fillable = [ 'login', 'email', ]; /** * The attributes that should be hidden for serialization. * * @var array<int, string> */ protected $hidden = [ 'password', 'social_id', 'securitycode' ]; /** * The attributes that should be cast. * * @var array<string, string> */ protected $casts = [ 'email_verified_at' => 'datetime', 'status' => AccountStatusEnum::class ]; /** * Determine if the user has verified their email address. * * @return bool */ public function hasVerifiedEmail(): bool { return $this->status != AccountStatusEnum::NOT_AVAILABLE; } /** * Mark the given user's email as verified. * * @return bool */ public function markEmailAsVerified(): bool { return $this->forceFill([ 'status' => AccountStatusEnum::OK, ])->save(); } /** * Send the email verification notification. * * @return void */ public function sendEmailVerificationNotification(): void { $this->notify(new VerifyEmail); } /** * Get the email address that should be used for verification. * * @return string */ public function getEmailForVerification(): string { return $this->email; } }