*/ use HasApiTokens, HasFactory, Notifiable; protected $attributes = [ 'rol_codigo' => 'user', ]; protected static function newFactory(): UserFactory { return UserFactory::new(); } protected static function booted(): void { static::saving(function (User $user): void { $hasTenant = $user->tenant_codigo !== null; $isTenantAdmin = $user->rol_codigo === 'tenant_admin'; if ($hasTenant !== $isTenantAdmin) { throw new LogicException( 'tenant_codigo debe estar informado únicamente para usuarios con rol tenant_admin.' ); } }); } /** @return HasMany */ public function resetPasswordAttempts(): HasMany { return $this->hasMany(ResetPasswordAttempt::class); } /** @return HasMany */ public function loginAttempts(): HasMany { return $this->hasMany(LoginAttempt::class); } /** * @return BelongsTo */ public function role(): BelongsTo { return $this->belongsTo(Role::class, 'rol_codigo', 'codigo'); } /** * @return BelongsTo */ public function tenant(): BelongsTo { return $this->belongsTo(Tenant::class, 'tenant_codigo', 'codigo'); } /** * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', 'failed_login_attempts' => 'integer', 'last_failed_login_at' => 'datetime', 'locked_until' => 'datetime', ]; } }