mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-01 19:17:23 -04:00 
			
		
		
		
	Make CreateUser async
This commit is contained in:
		
							parent
							
								
									0750357916
								
							
						
					
					
						commit
						6cbfae209d
					
				| @ -46,14 +46,12 @@ namespace Jellyfin.Api.Controllers | ||||
|         [HttpGet("Configuration")] | ||||
|         public StartupConfigurationDto GetStartupConfiguration() | ||||
|         { | ||||
|             var result = new StartupConfigurationDto | ||||
|             return new StartupConfigurationDto | ||||
|             { | ||||
|                 UICulture = _config.Configuration.UICulture, | ||||
|                 MetadataCountryCode = _config.Configuration.MetadataCountryCode, | ||||
|                 PreferredMetadataLanguage = _config.Configuration.PreferredMetadataLanguage | ||||
|             }; | ||||
| 
 | ||||
|             return result; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
| @ -92,10 +90,10 @@ namespace Jellyfin.Api.Controllers | ||||
|         /// </summary> | ||||
|         /// <returns>The first user.</returns> | ||||
|         [HttpGet("User")] | ||||
|         public StartupUserDto GetFirstUser() | ||||
|         public async Task<StartupUserDto> GetFirstUser() | ||||
|         { | ||||
|             // TODO: Remove this method when startup wizard no longer requires an existing user. | ||||
|             _userManager.Initialize(); | ||||
|             await _userManager.InitializeAsync().ConfigureAwait(false); | ||||
|             var user = _userManager.Users.First(); | ||||
|             return new StartupUserDto | ||||
|             { | ||||
|  | ||||
| @ -188,8 +188,24 @@ namespace Jellyfin.Server.Implementations.Users | ||||
|             await dbContext.SaveChangesAsync().ConfigureAwait(false); | ||||
|         } | ||||
| 
 | ||||
|         internal async Task<User> CreateUserInternalAsync(string name, JellyfinDb dbContext) | ||||
|         { | ||||
|             // TODO: Remove after user item data is migrated. | ||||
|             var max = await dbContext.Users.AnyAsync().ConfigureAwait(false) | ||||
|                 ? await dbContext.Users.Select(u => u.InternalId).MaxAsync().ConfigureAwait(false) | ||||
|                 : 0; | ||||
| 
 | ||||
|             return new User( | ||||
|                 name, | ||||
|                 _defaultAuthenticationProvider.GetType().FullName, | ||||
|                 _defaultPasswordResetProvider.GetType().FullName) | ||||
|             { | ||||
|                 InternalId = max + 1 | ||||
|             }; | ||||
|         } | ||||
| 
 | ||||
|         /// <inheritdoc/> | ||||
|         public User CreateUser(string name) | ||||
|         public async Task<User> CreateUserAsync(string name) | ||||
|         { | ||||
|             if (!IsValidUsername(name)) | ||||
|             { | ||||
| @ -198,18 +214,10 @@ namespace Jellyfin.Server.Implementations.Users | ||||
| 
 | ||||
|             using var dbContext = _dbProvider.CreateContext(); | ||||
| 
 | ||||
|             // TODO: Remove after user item data is migrated. | ||||
|             var max = dbContext.Users.Any() ? dbContext.Users.Select(u => u.InternalId).Max() : 0; | ||||
|             var newUser = await CreateUserInternalAsync(name, dbContext).ConfigureAwait(false); | ||||
| 
 | ||||
|             var newUser = new User( | ||||
|                 name, | ||||
|                 _defaultAuthenticationProvider.GetType().FullName, | ||||
|                 _defaultPasswordResetProvider.GetType().FullName) | ||||
|             { | ||||
|                 InternalId = max + 1 | ||||
|             }; | ||||
|             dbContext.Users.Add(newUser); | ||||
|             dbContext.SaveChanges(); | ||||
|             await dbContext.Users.AddAsync(newUser).ConfigureAwait(false); | ||||
|             await dbContext.SaveChangesAsync().ConfigureAwait(false); | ||||
| 
 | ||||
|             OnUserCreated?.Invoke(this, new GenericEventArgs<User>(newUser)); | ||||
| 
 | ||||
| @ -572,12 +580,12 @@ namespace Jellyfin.Server.Implementations.Users | ||||
|         } | ||||
| 
 | ||||
|         /// <inheritdoc /> | ||||
|         public void Initialize() | ||||
|         public async Task InitializeAsync() | ||||
|         { | ||||
|             // TODO: Refactor the startup wizard so that it doesn't require a user to already exist. | ||||
|             using var dbContext = _dbProvider.CreateContext(); | ||||
| 
 | ||||
|             if (dbContext.Users.Any()) | ||||
|             if (await dbContext.Users.AnyAsync().ConfigureAwait(false)) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
| @ -595,13 +603,13 @@ namespace Jellyfin.Server.Implementations.Users | ||||
|                 throw new ArgumentException("Provided username is not valid!", defaultName); | ||||
|             } | ||||
| 
 | ||||
|             var newUser = CreateUser(defaultName); | ||||
|             var newUser = await CreateUserInternalAsync(defaultName, dbContext).ConfigureAwait(false); | ||||
|             newUser.SetPermission(PermissionKind.IsAdministrator, true); | ||||
|             newUser.SetPermission(PermissionKind.EnableContentDeletion, true); | ||||
|             newUser.SetPermission(PermissionKind.EnableRemoteControlOfOtherUsers, true); | ||||
| 
 | ||||
|             dbContext.Users.Update(newUser); | ||||
|             dbContext.SaveChanges(); | ||||
|             await dbContext.Users.AddAsync(newUser).ConfigureAwait(false); | ||||
|             await dbContext.SaveChangesAsync().ConfigureAwait(false); | ||||
|         } | ||||
| 
 | ||||
|         /// <inheritdoc/> | ||||
|  | ||||
| @ -525,7 +525,7 @@ namespace MediaBrowser.Api | ||||
|         /// <returns>System.Object.</returns> | ||||
|         public async Task<object> Post(CreateUserByName request) | ||||
|         { | ||||
|             var newUser = _userManager.CreateUser(request.Name); | ||||
|             var newUser = await _userManager.CreateUserAsync(request.Name).ConfigureAwait(false); | ||||
| 
 | ||||
|             // no need to authenticate password for new user | ||||
|             if (request.Password != null) | ||||
|  | ||||
| @ -55,7 +55,7 @@ namespace MediaBrowser.Controller.Library | ||||
|         /// <summary> | ||||
|         /// Initializes the user manager and ensures that a user exists. | ||||
|         /// </summary> | ||||
|         void Initialize(); | ||||
|         Task InitializeAsync(); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Gets a user by Id. | ||||
| @ -106,7 +106,7 @@ namespace MediaBrowser.Controller.Library | ||||
|         /// <returns>The created user.</returns> | ||||
|         /// <exception cref="ArgumentNullException">name</exception> | ||||
|         /// <exception cref="ArgumentException"></exception> | ||||
|         User CreateUser(string name); | ||||
|         Task<User> CreateUserAsync(string name); | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Deletes the specified user. | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user