diff options
| author | LogicalPhallacy <44458166+LogicalPhallacy@users.noreply.github.com> | 2019-08-06 00:26:19 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-06 00:26:19 -0700 |
| commit | 984e415c66cbd995d12ea95a3a9d3e2561ce4869 (patch) | |
| tree | 1799942f3836641786c0e29249801bdb46aac0f4 /MediaBrowser.Api/UserService.cs | |
| parent | c2667f99f4d50f4f7d9bbeec50e8491e52468962 (diff) | |
| parent | 89f592687ee7ae7f0e0fffd884dbf2890476410a (diff) | |
Merge pull request #5 from jellyfin/master
Merge up to latest master
Diffstat (limited to 'MediaBrowser.Api/UserService.cs')
| -rw-r--r-- | MediaBrowser.Api/UserService.cs | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index a6849f75f..fa70a52aa 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -214,6 +214,9 @@ namespace MediaBrowser.Api { [ApiMember(Name = "Name", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] public string Name { get; set; } + + [ApiMember(Name = "Password", IsRequired = false, DataType = "string", ParameterType = "body", Verb = "POST")] + public string Password { get; set; } } [Route("/Users/ForgotPassword", "POST", Summary = "Initiates the forgot password process for a local user")] @@ -379,10 +382,15 @@ namespace MediaBrowser.Api throw new ResourceNotFoundException("User not found"); } + if (!string.IsNullOrEmpty(request.Password) && string.IsNullOrEmpty(request.Pw)) + { + throw new MethodNotAllowedException("Hashed-only passwords are not valid for this API."); + } + return Post(new AuthenticateUserByName { Username = user.Name, - Password = request.Password, + Password = null, // This should always be null Pw = request.Pw }); } @@ -401,7 +409,6 @@ namespace MediaBrowser.Api PasswordSha1 = request.Password, RemoteEndPoint = Request.RemoteIp, Username = request.Username - }).ConfigureAwait(false); return ToOptimizedResult(result); @@ -496,27 +503,21 @@ namespace MediaBrowser.Api } } - /// <summary> - /// Posts the specified request. - /// </summary> - /// <param name="request">The request.</param> - /// <returns>System.Object.</returns> public async Task<object> Post(CreateUserByName request) { - var dtoUser = request; + var newUser = await _userManager.CreateUser(request.Name).ConfigureAwait(false); - var newUser = await _userManager.CreateUser(dtoUser.Name).ConfigureAwait(false); + // no need to authenticate password for new user + if (request.Password != null) + { + await _userManager.ChangePassword(newUser, request.Password).ConfigureAwait(false); + } var result = _userManager.GetUserDto(newUser, Request.RemoteIp); return ToOptimizedResult(result); } - /// <summary> - /// Posts the specified request. - /// </summary> - /// <param name="request">The request.</param> - /// <returns>System.Object.</returns> public async Task<object> Post(ForgotPassword request) { var isLocal = Request.IsLocal || _networkManager.IsInLocalNetwork(Request.RemoteIp); |
