Fix startup wizard.

pull/3148/head
Patrick Barron 5 years ago
parent ce737c31ec
commit d105bc728d

@ -95,6 +95,8 @@ namespace Jellyfin.Api.Controllers
[HttpGet("User")] [HttpGet("User")]
public StartupUserDto GetFirstUser() public StartupUserDto GetFirstUser()
{ {
// TODO: Remove this method when startup wizard no longer requires an existing user.
_userManager.Initialize();
var user = _userManager.Users.First(); var user = _userManager.Users.First();
return new StartupUserDto return new StartupUserDto
{ {
@ -115,7 +117,7 @@ namespace Jellyfin.Api.Controllers
user.Username = startupUserDto.Name; user.Username = startupUserDto.Name;
_userManager.UpdateUser(user); await _userManager.UpdateUserAsync(user).ConfigureAwait(false);
if (!string.IsNullOrEmpty(startupUserDto.Password)) if (!string.IsNullOrEmpty(startupUserDto.Password))
{ {

@ -520,6 +520,39 @@ namespace Jellyfin.Server.Implementations.Users
_defaultPasswordResetProvider = _passwordResetProviders.OfType<DefaultPasswordResetProvider>().First(); _defaultPasswordResetProvider = _passwordResetProviders.OfType<DefaultPasswordResetProvider>().First();
} }
/// <inheritdoc />
public void Initialize()
{
// TODO: Refactor the startup wizard so that it doesn't require a user to already exist.
var dbContext = _dbProvider.CreateContext();
if (dbContext.Users.Any())
{
return;
}
var defaultName = Environment.UserName;
if (string.IsNullOrWhiteSpace(defaultName))
{
defaultName = "MyJellyfinUser";
}
_logger.LogWarning("No users, creating one with username {UserName}", defaultName);
if (!IsValidUsername(defaultName))
{
throw new ArgumentException("Provided username is not valid!", defaultName);
}
var newUser = CreateUser(defaultName);
newUser.SetPermission(PermissionKind.IsAdministrator, true);
newUser.SetPermission(PermissionKind.EnableContentDeletion, true);
newUser.SetPermission(PermissionKind.EnableRemoteControlOfOtherUsers, true);
dbContext.Users.Add(newUser);
dbContext.SaveChanges();
}
/// <inheritdoc/> /// <inheritdoc/>
public NameIdPair[] GetAuthenticationProviders() public NameIdPair[] GetAuthenticationProviders()
{ {

@ -52,6 +52,11 @@ namespace MediaBrowser.Controller.Library
/// <value>The users ids.</value> /// <value>The users ids.</value>
IEnumerable<Guid> UsersIds { get; } IEnumerable<Guid> UsersIds { get; }
/// <summary>
/// Initializes the user manager and ensures that a user exists.
/// </summary>
void Initialize();
/// <summary> /// <summary>
/// Gets a user by Id. /// Gets a user by Id.
/// </summary> /// </summary>

Loading…
Cancel
Save