'datetime', 'ssh_key_installed_at' => 'datetime', ]; public function hostingAccount(): BelongsTo { return $this->belongsTo(HostingAccount::class); } public function user(): BelongsTo { return $this->belongsTo(User::class); } public function invitedBy(): BelongsTo { return $this->belongsTo(User::class, 'invited_by_user_id'); } public function sshKeyMarker(): string { return 'ladill-team-member-'.$this->id; } public function hasSshAccessKey(): bool { return filled($this->ssh_public_key); } public static function normalizeSshPublicKey(string $value): string { return trim(preg_replace('/\s+/', ' ', trim($value)) ?? ''); } public static function looksLikeSshPublicKey(?string $value): bool { if (! is_string($value)) { return false; } $normalized = static::normalizeSshPublicKey($value); return $normalized !== '' && preg_match(self::SSH_KEY_PATTERN, $normalized) === 1; } }