|
|
@ -21,6 +21,7 @@ using MediaBrowser.Model.Users;
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
using Microsoft.AspNetCore.Http;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
|
|
|
using Microsoft.Extensions.Logging;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Jellyfin.Api.Controllers
|
|
|
|
namespace Jellyfin.Api.Controllers
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -36,6 +37,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
private readonly IDeviceManager _deviceManager;
|
|
|
|
private readonly IDeviceManager _deviceManager;
|
|
|
|
private readonly IAuthorizationContext _authContext;
|
|
|
|
private readonly IAuthorizationContext _authContext;
|
|
|
|
private readonly IServerConfigurationManager _config;
|
|
|
|
private readonly IServerConfigurationManager _config;
|
|
|
|
|
|
|
|
private readonly ILogger _logger;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// Initializes a new instance of the <see cref="UserController"/> class.
|
|
|
|
/// Initializes a new instance of the <see cref="UserController"/> class.
|
|
|
@ -46,13 +48,15 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
/// <param name="deviceManager">Instance of the <see cref="IDeviceManager"/> interface.</param>
|
|
|
|
/// <param name="deviceManager">Instance of the <see cref="IDeviceManager"/> interface.</param>
|
|
|
|
/// <param name="authContext">Instance of the <see cref="IAuthorizationContext"/> interface.</param>
|
|
|
|
/// <param name="authContext">Instance of the <see cref="IAuthorizationContext"/> interface.</param>
|
|
|
|
/// <param name="config">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
|
|
|
|
/// <param name="config">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
|
|
|
|
|
|
|
|
/// <param name="logger">Instance of the <see cref="ILogger"/> interface.</param>
|
|
|
|
public UserController(
|
|
|
|
public UserController(
|
|
|
|
IUserManager userManager,
|
|
|
|
IUserManager userManager,
|
|
|
|
ISessionManager sessionManager,
|
|
|
|
ISessionManager sessionManager,
|
|
|
|
INetworkManager networkManager,
|
|
|
|
INetworkManager networkManager,
|
|
|
|
IDeviceManager deviceManager,
|
|
|
|
IDeviceManager deviceManager,
|
|
|
|
IAuthorizationContext authContext,
|
|
|
|
IAuthorizationContext authContext,
|
|
|
|
IServerConfigurationManager config)
|
|
|
|
IServerConfigurationManager config,
|
|
|
|
|
|
|
|
ILogger<UserController> logger)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
_userManager = userManager;
|
|
|
|
_userManager = userManager;
|
|
|
|
_sessionManager = sessionManager;
|
|
|
|
_sessionManager = sessionManager;
|
|
|
@ -60,6 +64,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
_deviceManager = deviceManager;
|
|
|
|
_deviceManager = deviceManager;
|
|
|
|
_authContext = authContext;
|
|
|
|
_authContext = authContext;
|
|
|
|
_config = config;
|
|
|
|
_config = config;
|
|
|
|
|
|
|
|
_logger = logger;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
@ -118,7 +123,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
return NotFound("User not found");
|
|
|
|
return NotFound("User not found");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var result = _userManager.GetUserDto(user, HttpContext.GetNormalizedRemoteIp());
|
|
|
|
var result = _userManager.GetUserDto(user, HttpContext.GetNormalizedRemoteIp().ToString());
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -204,7 +209,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
DeviceName = auth.Device,
|
|
|
|
DeviceName = auth.Device,
|
|
|
|
Password = request.Pw,
|
|
|
|
Password = request.Pw,
|
|
|
|
PasswordSha1 = request.Password,
|
|
|
|
PasswordSha1 = request.Password,
|
|
|
|
RemoteEndPoint = HttpContext.GetNormalizedRemoteIp(),
|
|
|
|
RemoteEndPoint = HttpContext.GetNormalizedRemoteIp().ToString(),
|
|
|
|
Username = request.Username
|
|
|
|
Username = request.Username
|
|
|
|
}).ConfigureAwait(false);
|
|
|
|
}).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
|
@ -291,7 +296,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
user.Username,
|
|
|
|
user.Username,
|
|
|
|
request.CurrentPw,
|
|
|
|
request.CurrentPw,
|
|
|
|
request.CurrentPw,
|
|
|
|
request.CurrentPw,
|
|
|
|
HttpContext.GetNormalizedRemoteIp(),
|
|
|
|
HttpContext.GetNormalizedRemoteIp().ToString(),
|
|
|
|
false).ConfigureAwait(false);
|
|
|
|
false).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
|
|
if (success == null)
|
|
|
|
if (success == null)
|
|
|
@ -483,7 +488,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
await _userManager.ChangePassword(newUser, request.Password).ConfigureAwait(false);
|
|
|
|
await _userManager.ChangePassword(newUser, request.Password).ConfigureAwait(false);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var result = _userManager.GetUserDto(newUser, HttpContext.GetNormalizedRemoteIp());
|
|
|
|
var result = _userManager.GetUserDto(newUser, HttpContext.GetNormalizedRemoteIp().ToString());
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -498,8 +503,14 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
|
|
|
public async Task<ActionResult<ForgotPasswordResult>> ForgotPassword([FromBody, Required] ForgotPasswordDto forgotPasswordRequest)
|
|
|
|
public async Task<ActionResult<ForgotPasswordResult>> ForgotPassword([FromBody, Required] ForgotPasswordDto forgotPasswordRequest)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
var ip = HttpContext.GetNormalizedRemoteIp();
|
|
|
|
var isLocal = HttpContext.IsLocal()
|
|
|
|
var isLocal = HttpContext.IsLocal()
|
|
|
|
|| _networkManager.IsInLocalNetwork(HttpContext.GetNormalizedRemoteIp());
|
|
|
|
|| _networkManager.IsInLocalNetwork(ip);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (isLocal)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_logger.LogWarning("Password reset proccess initiated from outside the local network with IP: {IP}", ip);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var result = await _userManager.StartForgotPasswordProcess(forgotPasswordRequest.EnteredUsername, isLocal).ConfigureAwait(false);
|
|
|
|
var result = await _userManager.StartForgotPasswordProcess(forgotPasswordRequest.EnteredUsername, isLocal).ConfigureAwait(false);
|
|
|
|
|
|
|
|
|
|
|
@ -581,7 +592,7 @@ namespace Jellyfin.Api.Controllers
|
|
|
|
|
|
|
|
|
|
|
|
var result = users
|
|
|
|
var result = users
|
|
|
|
.OrderBy(u => u.Username)
|
|
|
|
.OrderBy(u => u.Username)
|
|
|
|
.Select(i => _userManager.GetUserDto(i, HttpContext.GetNormalizedRemoteIp()));
|
|
|
|
.Select(i => _userManager.GetUserDto(i, HttpContext.GetNormalizedRemoteIp().ToString()));
|
|
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|