mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-07-06 06:12:52 +01:00
Merge remote-tracking branch 'upstream/master' into quickconnect
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Jellyfin.Data.Enums;
|
||||
using MediaBrowser.Common.Extensions;
|
||||
using MediaBrowser.Common.Net;
|
||||
using MediaBrowser.Controller.Authentication;
|
||||
@@ -18,7 +19,7 @@ using Microsoft.Extensions.Logging;
|
||||
namespace MediaBrowser.Api
|
||||
{
|
||||
/// <summary>
|
||||
/// Class GetUsers
|
||||
/// Class GetUsers.
|
||||
/// </summary>
|
||||
[Route("/Users", "GET", Summary = "Gets a list of users")]
|
||||
[Authenticated]
|
||||
@@ -40,7 +41,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class GetUser
|
||||
/// Class GetUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}", "GET", Summary = "Gets a user by Id")]
|
||||
[Authenticated(EscapeParentalControl = true)]
|
||||
@@ -55,7 +56,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class DeleteUser
|
||||
/// Class DeleteUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}", "DELETE", Summary = "Deletes a user")]
|
||||
[Authenticated(Roles = "Admin")]
|
||||
@@ -70,7 +71,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class AuthenticateUser
|
||||
/// Class AuthenticateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}/Authenticate", "POST", Summary = "Authenticates a user")]
|
||||
public class AuthenticateUser : IReturn<AuthenticationResult>
|
||||
@@ -94,7 +95,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class AuthenticateUser
|
||||
/// Class AuthenticateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/AuthenticateByName", "POST", Summary = "Authenticates a user")]
|
||||
public class AuthenticateUserByName : IReturn<AuthenticationResult>
|
||||
@@ -129,7 +130,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UpdateUserPassword
|
||||
/// Class UpdateUserPassword.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}/Password", "POST", Summary = "Updates a user's password")]
|
||||
[Authenticated]
|
||||
@@ -159,7 +160,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UpdateUserEasyPassword
|
||||
/// Class UpdateUserEasyPassword.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}/EasyPassword", "POST", Summary = "Updates a user's easy password")]
|
||||
[Authenticated]
|
||||
@@ -187,7 +188,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UpdateUser
|
||||
/// Class UpdateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}", "POST", Summary = "Updates a user")]
|
||||
[Authenticated]
|
||||
@@ -196,7 +197,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UpdateUser
|
||||
/// Class UpdateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}/Policy", "POST", Summary = "Updates a user policy")]
|
||||
[Authenticated(Roles = "admin")]
|
||||
@@ -207,7 +208,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UpdateUser
|
||||
/// Class UpdateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/{Id}/Configuration", "POST", Summary = "Updates a user configuration")]
|
||||
[Authenticated]
|
||||
@@ -218,7 +219,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class CreateUser
|
||||
/// Class CreateUser.
|
||||
/// </summary>
|
||||
[Route("/Users/New", "POST", Summary = "Creates a user")]
|
||||
[Authenticated(Roles = "Admin")]
|
||||
@@ -246,7 +247,7 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Class UsersService
|
||||
/// Class UsersService.
|
||||
/// </summary>
|
||||
public class UserService : BaseApiService
|
||||
{
|
||||
@@ -311,12 +312,12 @@ namespace MediaBrowser.Api
|
||||
|
||||
if (request.IsDisabled.HasValue)
|
||||
{
|
||||
users = users.Where(i => i.Policy.IsDisabled == request.IsDisabled.Value);
|
||||
users = users.Where(i => i.HasPermission(PermissionKind.IsDisabled) == request.IsDisabled.Value);
|
||||
}
|
||||
|
||||
if (request.IsHidden.HasValue)
|
||||
{
|
||||
users = users.Where(i => i.Policy.IsHidden == request.IsHidden.Value);
|
||||
users = users.Where(i => i.HasPermission(PermissionKind.IsHidden) == request.IsHidden.Value);
|
||||
}
|
||||
|
||||
if (filterByDevice)
|
||||
@@ -333,12 +334,12 @@ namespace MediaBrowser.Api
|
||||
{
|
||||
if (!_networkManager.IsInLocalNetwork(Request.RemoteIp))
|
||||
{
|
||||
users = users.Where(i => i.Policy.EnableRemoteAccess);
|
||||
users = users.Where(i => i.HasPermission(PermissionKind.EnableRemoteAccess));
|
||||
}
|
||||
}
|
||||
|
||||
var result = users
|
||||
.OrderBy(u => u.Name)
|
||||
.OrderBy(u => u.Username)
|
||||
.Select(i => _userManager.GetUserDto(i, Request.RemoteIp))
|
||||
.ToArray();
|
||||
|
||||
@@ -408,7 +409,7 @@ namespace MediaBrowser.Api
|
||||
// Password should always be null
|
||||
return Post(new AuthenticateUserByName
|
||||
{
|
||||
Username = user.Name,
|
||||
Username = user.Username,
|
||||
Password = null,
|
||||
Pw = request.Pw
|
||||
});
|
||||
@@ -490,7 +491,12 @@ namespace MediaBrowser.Api
|
||||
}
|
||||
else
|
||||
{
|
||||
var success = await _userManager.AuthenticateUser(user.Name, request.CurrentPw, request.CurrentPassword, Request.RemoteIp, false).ConfigureAwait(false);
|
||||
var success = await _userManager.AuthenticateUser(
|
||||
user.Username,
|
||||
request.CurrentPw,
|
||||
request.CurrentPassword,
|
||||
Request.RemoteIp,
|
||||
false).ConfigureAwait(false);
|
||||
|
||||
if (success == null)
|
||||
{
|
||||
@@ -540,10 +546,10 @@ namespace MediaBrowser.Api
|
||||
|
||||
var user = _userManager.GetUserById(id);
|
||||
|
||||
if (string.Equals(user.Name, dtoUser.Name, StringComparison.Ordinal))
|
||||
if (string.Equals(user.Username, dtoUser.Name, StringComparison.Ordinal))
|
||||
{
|
||||
_userManager.UpdateUser(user);
|
||||
_userManager.UpdateConfiguration(user, dtoUser.Configuration);
|
||||
await _userManager.UpdateUserAsync(user);
|
||||
_userManager.UpdateConfiguration(user.Id, dtoUser.Configuration);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -594,7 +600,6 @@ namespace MediaBrowser.Api
|
||||
AssertCanUpdateUser(_authContext, _userManager, request.Id, false);
|
||||
|
||||
_userManager.UpdateConfiguration(request.Id, request);
|
||||
|
||||
}
|
||||
|
||||
public void Post(UpdateUserPolicy request)
|
||||
@@ -602,24 +607,24 @@ namespace MediaBrowser.Api
|
||||
var user = _userManager.GetUserById(request.Id);
|
||||
|
||||
// If removing admin access
|
||||
if (!request.IsAdministrator && user.Policy.IsAdministrator)
|
||||
if (!request.IsAdministrator && user.HasPermission(PermissionKind.IsAdministrator))
|
||||
{
|
||||
if (_userManager.Users.Count(i => i.Policy.IsAdministrator) == 1)
|
||||
if (_userManager.Users.Count(i => i.HasPermission(PermissionKind.IsAdministrator)) == 1)
|
||||
{
|
||||
throw new ArgumentException("There must be at least one user in the system with administrative access.");
|
||||
}
|
||||
}
|
||||
|
||||
// If disabling
|
||||
if (request.IsDisabled && user.Policy.IsAdministrator)
|
||||
if (request.IsDisabled && user.HasPermission(PermissionKind.IsAdministrator))
|
||||
{
|
||||
throw new ArgumentException("Administrators cannot be disabled.");
|
||||
}
|
||||
|
||||
// If disabling
|
||||
if (request.IsDisabled && !user.Policy.IsDisabled)
|
||||
if (request.IsDisabled && !user.HasPermission(PermissionKind.IsDisabled))
|
||||
{
|
||||
if (_userManager.Users.Count(i => !i.Policy.IsDisabled) == 1)
|
||||
if (_userManager.Users.Count(i => !i.HasPermission(PermissionKind.IsDisabled)) == 1)
|
||||
{
|
||||
throw new ArgumentException("There must be at least one enabled user in the system.");
|
||||
}
|
||||
@@ -628,7 +633,7 @@ namespace MediaBrowser.Api
|
||||
_sessionMananger.RevokeUserTokens(user.Id, currentToken);
|
||||
}
|
||||
|
||||
_userManager.UpdateUserPolicy(request.Id, request);
|
||||
_userManager.UpdatePolicy(request.Id, request);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user