Merge pull request #13604 from Jxiced/master

Prevent whitespaces in username during wizard setup
This commit is contained in:
Joshua M. Boniface 2025-08-03 17:27:50 -04:00 committed by GitHub
commit ce78af2ed4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 14 additions and 5 deletions

View File

@ -197,6 +197,7 @@
- [Kenneth Cochran](https://github.com/kennethcochran) - [Kenneth Cochran](https://github.com/kennethcochran)
- [benedikt257](https://github.com/benedikt257) - [benedikt257](https://github.com/benedikt257)
- [revam](https://github.com/revam) - [revam](https://github.com/revam)
- [Jxiced](https://github.com/Jxiced)
- [allesmi](https://github.com/allesmi) - [allesmi](https://github.com/allesmi)
- [ThunderClapLP](https://github.com/ThunderClapLP) - [ThunderClapLP](https://github.com/ThunderClapLP)
- [Shoham Peller](https://github.com/spellr) - [Shoham Peller](https://github.com/spellr)

View File

@ -1,3 +1,4 @@
using System;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using System.Linq; using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -131,16 +132,16 @@ public class StartupController : BaseJellyfinApiController
[ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(StatusCodes.Status204NoContent)]
public async Task<ActionResult> UpdateStartupUser([FromBody] StartupUserDto startupUserDto) public async Task<ActionResult> UpdateStartupUser([FromBody] StartupUserDto startupUserDto)
{ {
ArgumentNullException.ThrowIfNull(startupUserDto.Name);
_userManager.ThrowIfInvalidUsername(startupUserDto.Name);
var user = _userManager.Users.First(); var user = _userManager.Users.First();
if (string.IsNullOrWhiteSpace(startupUserDto.Password)) if (string.IsNullOrWhiteSpace(startupUserDto.Password))
{ {
return BadRequest("Password must not be empty"); return BadRequest("Password must not be empty");
} }
if (startupUserDto.Name is not null) user.Username = startupUserDto.Name;
{
user.Username = startupUserDto.Name;
}
await _userManager.UpdateUserAsync(user).ConfigureAwait(false); await _userManager.UpdateUserAsync(user).ConfigureAwait(false);

View File

@ -744,7 +744,8 @@ namespace Jellyfin.Server.Implementations.Users
_users[user.Id] = user; _users[user.Id] = user;
} }
internal static void ThrowIfInvalidUsername(string name) /// <inheritdoc/>
public void ThrowIfInvalidUsername(string name)
{ {
if (!string.IsNullOrWhiteSpace(name) && ValidUsernameRegex().IsMatch(name)) if (!string.IsNullOrWhiteSpace(name) && ValidUsernameRegex().IsMatch(name))
{ {

View File

@ -33,6 +33,12 @@ namespace MediaBrowser.Controller.Library
/// <value>The users ids.</value> /// <value>The users ids.</value>
IEnumerable<Guid> UsersIds { get; } IEnumerable<Guid> UsersIds { get; }
/// <summary>
/// Checks if the user's username is valid.
/// </summary>
/// <param name="name">The user's username.</param>
void ThrowIfInvalidUsername(string name);
/// <summary> /// <summary>
/// Initializes the user manager and ensures that a user exists. /// Initializes the user manager and ensures that a user exists.
/// </summary> /// </summary>