StartupController.cs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System.Linq;
  2. using System.Threading.Tasks;
  3. using Jellyfin.Api.Models.Startup;
  4. using MediaBrowser.Controller.Configuration;
  5. using MediaBrowser.Controller.Library;
  6. using Microsoft.AspNetCore.Authorization;
  7. using Microsoft.AspNetCore.Mvc;
  8. namespace Jellyfin.Api.Controllers
  9. {
  10. [Authorize(Policy = "FirstTimeSetupOrElevated")]
  11. public class StartupController : BaseJellyfinApiController
  12. {
  13. private readonly IServerConfigurationManager _config;
  14. private readonly IUserManager _userManager;
  15. public StartupController(IServerConfigurationManager config, IUserManager userManager)
  16. {
  17. _config = config;
  18. _userManager = userManager;
  19. }
  20. [HttpPost("Complete")]
  21. public void CompleteWizard()
  22. {
  23. _config.Configuration.IsStartupWizardCompleted = true;
  24. _config.SetOptimalValues();
  25. _config.SaveConfiguration();
  26. }
  27. [HttpGet("Configuration")]
  28. public StartupConfigurationDto GetStartupConfiguration()
  29. {
  30. var result = new StartupConfigurationDto
  31. {
  32. UICulture = _config.Configuration.UICulture,
  33. MetadataCountryCode = _config.Configuration.MetadataCountryCode,
  34. PreferredMetadataLanguage = _config.Configuration.PreferredMetadataLanguage
  35. };
  36. return result;
  37. }
  38. [HttpPost("Configuration")]
  39. public void UpdateInitialConfiguration([FromForm] string uiCulture, [FromForm] string metadataCountryCode, [FromForm] string preferredMetadataLanguage)
  40. {
  41. _config.Configuration.UICulture = uiCulture;
  42. _config.Configuration.MetadataCountryCode = metadataCountryCode;
  43. _config.Configuration.PreferredMetadataLanguage = preferredMetadataLanguage;
  44. _config.SaveConfiguration();
  45. }
  46. [HttpPost("RemoteAccess")]
  47. public void SetRemoteAccess([FromForm] bool enableRemoteAccess, [FromForm] bool enableAutomaticPortMapping)
  48. {
  49. _config.Configuration.EnableRemoteAccess = enableRemoteAccess;
  50. _config.Configuration.EnableUPnP = enableAutomaticPortMapping;
  51. _config.SaveConfiguration();
  52. }
  53. [HttpGet("User")]
  54. public StartupUserDto GetUser()
  55. {
  56. var user = _userManager.Users.First();
  57. return new StartupUserDto
  58. {
  59. Name = user.Name,
  60. Password = user.Password
  61. };
  62. }
  63. [HttpPost("User")]
  64. public async Task UpdateUser([FromForm] StartupUserDto startupUserDto)
  65. {
  66. var user = _userManager.Users.First();
  67. user.Name = startupUserDto.Name;
  68. _userManager.UpdateUser(user);
  69. if (!string.IsNullOrEmpty(startupUserDto.Password))
  70. {
  71. await _userManager.ChangePassword(user, startupUserDto.Password).ConfigureAwait(false);
  72. }
  73. }
  74. }
  75. }