diff options
Diffstat (limited to 'Jellyfin.Api/Controllers')
| -rw-r--r-- | Jellyfin.Api/Controllers/ClientLogController.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/DynamicHlsController.cs | 6 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/ImageController.cs | 13 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/ItemsController.cs | 18 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/LiveTvController.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/TvShowsController.cs | 13 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/UserController.cs | 24 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/UserLibraryController.cs | 2 | ||||
| -rw-r--r-- | Jellyfin.Api/Controllers/UserViewsController.cs | 6 |
9 files changed, 53 insertions, 33 deletions
diff --git a/Jellyfin.Api/Controllers/ClientLogController.cs b/Jellyfin.Api/Controllers/ClientLogController.cs index 2c5dbacbb..139888bde 100644 --- a/Jellyfin.Api/Controllers/ClientLogController.cs +++ b/Jellyfin.Api/Controllers/ClientLogController.cs @@ -1,4 +1,4 @@ -using System.Net.Mime; +using System.Net.Mime; using System.Threading.Tasks; using Jellyfin.Api.Attributes; using Jellyfin.Api.Extensions; diff --git a/Jellyfin.Api/Controllers/DynamicHlsController.cs b/Jellyfin.Api/Controllers/DynamicHlsController.cs index 016c5b163..662e2acbc 100644 --- a/Jellyfin.Api/Controllers/DynamicHlsController.cs +++ b/Jellyfin.Api/Controllers/DynamicHlsController.cs @@ -45,6 +45,7 @@ public class DynamicHlsController : BaseJellyfinApiController private const TranscodingJobType TranscodingJobType = MediaBrowser.Controller.MediaEncoding.TranscodingJobType.Hls; private readonly Version _minFFmpegFlacInMp4 = new Version(6, 0); + private readonly Version _minFFmpegX265BframeInFmp4 = new Version(7, 0, 1); private readonly ILibraryManager _libraryManager; private readonly IUserManager _userManager; @@ -1851,13 +1852,12 @@ public class DynamicHlsController : BaseJellyfinApiController args += _encodingHelper.GetHlsVideoKeyFrameArguments(state, codec, state.SegmentLength, isEventPlaylist, startNumber); // Currently b-frames in libx265 breaks the FMP4-HLS playback on iOS, disable it for now. - if (string.Equals(codec, "libx265", StringComparison.OrdinalIgnoreCase)) + if (string.Equals(codec, "libx265", StringComparison.OrdinalIgnoreCase) + && _mediaEncoder.EncoderVersion < _minFFmpegX265BframeInFmp4) { args += " -bf 0"; } - // args += " -mixed-refs 0 -refs 3 -x264opts b_pyramid=0:weightb=0:weightp=0"; - // video processing filters. var videoProcessParam = _encodingHelper.GetVideoProcessingFilterParam(state, _encodingOptions, codec); diff --git a/Jellyfin.Api/Controllers/ImageController.cs b/Jellyfin.Api/Controllers/ImageController.cs index 6a169eae3..b71199026 100644 --- a/Jellyfin.Api/Controllers/ImageController.cs +++ b/Jellyfin.Api/Controllers/ImageController.cs @@ -109,7 +109,7 @@ public class ImageController : BaseJellyfinApiController return NotFound(); } - if (!RequestHelpers.AssertCanUpdateUser(_userManager, HttpContext.User, requestUserId, true)) + if (!RequestHelpers.AssertCanUpdateUser(HttpContext.User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to update the image."); } @@ -203,13 +203,18 @@ public class ImageController : BaseJellyfinApiController [FromQuery] Guid? userId) { var requestUserId = RequestHelpers.GetUserId(User, userId); - if (!RequestHelpers.AssertCanUpdateUser(_userManager, HttpContext.User, requestUserId, true)) + var user = _userManager.GetUserById(requestUserId); + if (user is null) + { + return NotFound(); + } + + if (!RequestHelpers.AssertCanUpdateUser(HttpContext.User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to delete the image."); } - var user = _userManager.GetUserById(requestUserId); - if (user?.ProfileImage is null) + if (user.ProfileImage is null) { return NoContent(); } diff --git a/Jellyfin.Api/Controllers/ItemsController.cs b/Jellyfin.Api/Controllers/ItemsController.cs index d33634412..828bd5174 100644 --- a/Jellyfin.Api/Controllers/ItemsController.cs +++ b/Jellyfin.Api/Controllers/ItemsController.cs @@ -972,12 +972,17 @@ public class ItemsController : BaseJellyfinApiController [FromRoute, Required] Guid itemId) { var requestUserId = RequestHelpers.GetUserId(User, userId); - if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, requestUserId, true)) + var user = _userManager.GetUserById(requestUserId); + if (user is null) + { + return NotFound(); + } + + if (!RequestHelpers.AssertCanUpdateUser(User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to view this item user data."); } - var user = _userManager.GetUserById(requestUserId) ?? throw new ResourceNotFoundException(); var item = _libraryManager.GetItemById<BaseItem>(itemId, user); if (item is null) { @@ -1023,12 +1028,17 @@ public class ItemsController : BaseJellyfinApiController [FromBody, Required] UpdateUserItemDataDto userDataDto) { var requestUserId = RequestHelpers.GetUserId(User, userId); - if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, requestUserId, true)) + var user = _userManager.GetUserById(requestUserId); + if (user is null) + { + return NotFound(); + } + + if (!RequestHelpers.AssertCanUpdateUser(User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to update this item user data."); } - var user = _userManager.GetUserById(requestUserId) ?? throw new ResourceNotFoundException(); var item = _libraryManager.GetItemById<BaseItem>(itemId, user); if (item is null) { diff --git a/Jellyfin.Api/Controllers/LiveTvController.cs b/Jellyfin.Api/Controllers/LiveTvController.cs index 6c3d01103..0ae8baa67 100644 --- a/Jellyfin.Api/Controllers/LiveTvController.cs +++ b/Jellyfin.Api/Controllers/LiveTvController.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; diff --git a/Jellyfin.Api/Controllers/TvShowsController.cs b/Jellyfin.Api/Controllers/TvShowsController.cs index 426402667..914ccd7f9 100644 --- a/Jellyfin.Api/Controllers/TvShowsController.cs +++ b/Jellyfin.Api/Controllers/TvShowsController.cs @@ -90,7 +90,12 @@ public class TvShowsController : BaseJellyfinApiController [FromQuery] bool enableResumable = true, [FromQuery] bool enableRewatching = false) { - userId = RequestHelpers.GetUserId(User, userId); + var user = _userManager.GetUserById(RequestHelpers.GetUserId(User, userId)); + if (user is null) + { + return NotFound(); + } + var options = new DtoOptions { Fields = fields } .AddClientFields(User) .AddAdditionalDtoOptions(enableImages, enableUserData, imageTypeLimit, enableImageTypes); @@ -102,7 +107,7 @@ public class TvShowsController : BaseJellyfinApiController ParentId = parentId, SeriesId = seriesId, StartIndex = startIndex, - UserId = userId.Value, + User = user, EnableTotalRecordCount = enableTotalRecordCount, DisableFirstEpisode = disableFirstEpisode, NextUpDateCutoff = nextUpDateCutoff ?? DateTime.MinValue, @@ -111,10 +116,6 @@ public class TvShowsController : BaseJellyfinApiController }, options); - var user = userId.IsNullOrEmpty() - ? null - : _userManager.GetUserById(userId.Value); - var returnItems = _dtoService.GetBaseItemDtos(result.Items, options, user); return new QueryResult<BaseItemDto>( diff --git a/Jellyfin.Api/Controllers/UserController.cs b/Jellyfin.Api/Controllers/UserController.cs index c3923a2ad..d7886d247 100644 --- a/Jellyfin.Api/Controllers/UserController.cs +++ b/Jellyfin.Api/Controllers/UserController.cs @@ -274,16 +274,15 @@ public class UserController : BaseJellyfinApiController [FromBody, Required] UpdateUserPassword request) { var requestUserId = userId ?? User.GetUserId(); - if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, requestUserId, true)) + var user = _userManager.GetUserById(requestUserId); + if (user is null) { - return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to update the password."); + return NotFound(); } - var user = _userManager.GetUserById(requestUserId); - - if (user is null) + if (!RequestHelpers.AssertCanUpdateUser(User, user, true)) { - return NotFound("User not found"); + return StatusCode(StatusCodes.Status403Forbidden, "User is not allowed to update the password."); } if (request.ResetPassword) @@ -297,7 +296,6 @@ public class UserController : BaseJellyfinApiController var success = await _userManager.AuthenticateUser( user.Username, request.CurrentPw ?? string.Empty, - request.CurrentPw ?? string.Empty, HttpContext.GetNormalizedRemoteIP().ToString(), false).ConfigureAwait(false); @@ -386,7 +384,7 @@ public class UserController : BaseJellyfinApiController return NotFound(); } - if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, requestUserId, true)) + if (!RequestHelpers.AssertCanUpdateUser(User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User update not allowed."); } @@ -396,7 +394,7 @@ public class UserController : BaseJellyfinApiController await _userManager.RenameUser(user, updateUser.Name).ConfigureAwait(false); } - await _userManager.UpdateConfigurationAsync(user.Id, updateUser.Configuration).ConfigureAwait(false); + await _userManager.UpdateConfigurationAsync(requestUserId, updateUser.Configuration).ConfigureAwait(false); return NoContent(); } @@ -495,7 +493,13 @@ public class UserController : BaseJellyfinApiController [FromBody, Required] UserConfiguration userConfig) { var requestUserId = userId ?? User.GetUserId(); - if (!RequestHelpers.AssertCanUpdateUser(_userManager, User, requestUserId, true)) + var user = _userManager.GetUserById(requestUserId); + if (user is null) + { + return NotFound(); + } + + if (!RequestHelpers.AssertCanUpdateUser(User, user, true)) { return StatusCode(StatusCodes.Status403Forbidden, "User configuration update not allowed"); } diff --git a/Jellyfin.Api/Controllers/UserLibraryController.cs b/Jellyfin.Api/Controllers/UserLibraryController.cs index 421f1bfb5..e7bf71727 100644 --- a/Jellyfin.Api/Controllers/UserLibraryController.cs +++ b/Jellyfin.Api/Controllers/UserLibraryController.cs @@ -560,7 +560,7 @@ public class UserLibraryController : BaseJellyfinApiController IsPlayed = isPlayed, Limit = limit, ParentId = parentId ?? Guid.Empty, - UserId = requestUserId, + User = user, }, dtoOptions); diff --git a/Jellyfin.Api/Controllers/UserViewsController.cs b/Jellyfin.Api/Controllers/UserViewsController.cs index 01da50d02..e24f78a88 100644 --- a/Jellyfin.Api/Controllers/UserViewsController.cs +++ b/Jellyfin.Api/Controllers/UserViewsController.cs @@ -8,6 +8,7 @@ using Jellyfin.Api.Helpers; using Jellyfin.Api.ModelBinders; using Jellyfin.Api.Models.UserViewDtos; using Jellyfin.Data.Enums; +using MediaBrowser.Common.Extensions; using MediaBrowser.Controller.Dto; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; @@ -69,8 +70,9 @@ public class UserViewsController : BaseJellyfinApiController [FromQuery] bool includeHidden = false) { userId = RequestHelpers.GetUserId(User, userId); + var user = _userManager.GetUserById(userId.Value) ?? throw new ResourceNotFoundException(); - var query = new UserViewQuery { UserId = userId.Value, IncludeHidden = includeHidden }; + var query = new UserViewQuery { User = user, IncludeHidden = includeHidden }; if (includeExternalContent.HasValue) { @@ -87,8 +89,6 @@ public class UserViewsController : BaseJellyfinApiController var dtoOptions = new DtoOptions().AddClientFields(User); dtoOptions.Fields = [..dtoOptions.Fields, ItemFields.PrimaryImageAspectRatio, ItemFields.DisplayPreferencesId]; - var user = _userManager.GetUserById(userId.Value); - var dtos = Array.ConvertAll(folders, i => _dtoService.GetBaseItemDto(i, dtoOptions, user)); return new QueryResult<BaseItemDto>(dtos); |
