feat: make user password nullable for social-only accounts

This commit is contained in:
2026-03-19 23:14:57 +01:00
parent 44c1cbe5f6
commit 10f612a901
3 changed files with 72 additions and 6 deletions

View File

@@ -2,17 +2,18 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Database\Factories\UserFactory;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
class User extends Authenticatable implements MustVerifyEmail
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasApiTokens, HasFactory, Notifiable;
/** @use HasFactory<UserFactory> */
use HasFactory, Notifiable;
/**
* The attributes that are mass assignable.
@@ -59,6 +60,32 @@ class User extends Authenticatable
];
}
/**
* Only send verification notification when the feature is enabled.
*/
public function sendEmailVerificationNotification(): void
{
if (config('auth-ui.features.email_verification')) {
parent::sendEmailVerificationNotification();
}
}
/**
* Check if the user has a password set (i.e. not a social-only user).
*/
public function hasPassword(): bool
{
return $this->password !== null;
}
/**
* Get the user's social accounts.
*/
public function socialAccounts(): HasMany
{
return $this->hasMany(SocialAccount::class);
}
/**
* Get the user's full name.
*/