浏览代码

Merge pull request #13604 from Jxiced/master

Prevent whitespaces in username during wizard setup
Joshua M. Boniface 2 天之前
父节点
当前提交
ce78af2ed4

+ 1 - 0
CONTRIBUTORS.md

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

+ 5 - 4
Jellyfin.Api/Controllers/StartupController.cs

@@ -1,3 +1,4 @@
+using System;
 using System.ComponentModel.DataAnnotations;
 using System.Linq;
 using System.Threading.Tasks;
@@ -131,16 +132,16 @@ public class StartupController : BaseJellyfinApiController
     [ProducesResponseType(StatusCodes.Status204NoContent)]
     public async Task<ActionResult> UpdateStartupUser([FromBody] StartupUserDto startupUserDto)
     {
+        ArgumentNullException.ThrowIfNull(startupUserDto.Name);
+        _userManager.ThrowIfInvalidUsername(startupUserDto.Name);
+
         var user = _userManager.Users.First();
         if (string.IsNullOrWhiteSpace(startupUserDto.Password))
         {
             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);
 

+ 2 - 1
Jellyfin.Server.Implementations/Users/UserManager.cs

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

+ 6 - 0
MediaBrowser.Controller/Library/IUserManager.cs

@@ -33,6 +33,12 @@ namespace MediaBrowser.Controller.Library
         /// <value>The users ids.</value>
         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>
         /// Initializes the user manager and ensures that a user exists.
         /// </summary>