diff --git a/app/Filament/Server/Pages/Settings.php b/app/Filament/Server/Pages/Settings.php index 145932d07..3e40cb09f 100644 --- a/app/Filament/Server/Pages/Settings.php +++ b/app/Filament/Server/Pages/Settings.php @@ -174,13 +174,13 @@ class Settings extends ServerFormPage ->url(function (Server $server) { $fqdn = $server->node->daemon_sftp_alias ?? $server->node->fqdn; - return 'sftp://' . auth()->user()->username . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; + return 'sftp://' . rawurlencode(auth()->user()->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; }), ) ->formatStateUsing(function (Server $server) { $fqdn = $server->node->daemon_sftp_alias ?? $server->node->fqdn; - return 'sftp://' . auth()->user()->username . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; + return 'sftp://' . rawurlencode(auth()->user()->username) . '.' . $server->uuid_short . '@' . $fqdn . ':' . $server->node->daemon_sftp; }), TextInput::make('username') ->label(trans('server/setting.server_info.sftp.username')) @@ -191,7 +191,7 @@ class Settings extends ServerFormPage TextEntry::make('password') ->label(trans('server/setting.server_info.sftp.password')) ->columnSpan(1) - ->label(trans('server/setting.server_info.sftp.password_body')), + ->state(trans('server/setting.server_info.sftp.password_body')), ]), ]), Section::make(trans('server/setting.reinstall.title')) diff --git a/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php b/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php index f9934460d..be18e9cb8 100644 --- a/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php +++ b/app/Http/Controllers/Api/Remote/SftpAuthenticationController.php @@ -99,7 +99,7 @@ class SftpAuthenticationController extends Controller */ protected function getUser(Request $request, string $username): User { - return User::query()->where('username', $username)->firstOr(function () use ($request) { + return User::where('username', str($username)->lower()->trim())->firstOr(function () use ($request) { $this->reject($request); }); } diff --git a/app/Models/User.php b/app/Models/User.php index bc627b241..b974974ab 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -219,14 +219,14 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac public function username(): Attribute { return Attribute::make( - set: fn (string $value) => mb_strtolower($value), + set: fn (string $value) => str($value)->lower()->trim()->toString(), ); } public function email(): Attribute { return Attribute::make( - set: fn (string $value) => mb_strtolower($value), + set: fn (string $value) => str($value)->lower()->trim()->toString(), ); }