V10: fix build warnings in Web.BackOffice (#12479)
* Run code cleanup * Start manual run * Finish dotnet format + manual cleanup * Fix up after merge * Fix substrings changed to [..] Co-authored-by: Nikolaj Geisle <niko737@edu.ucl.dk> Co-authored-by: Zeegaan <nge@umbraco.dk>
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
// Copyright (c) Umbraco.
|
||||
// See LICENSE for more details.
|
||||
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
@@ -9,73 +8,74 @@ using Umbraco.Cms.Core.Models;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Core.Services;
|
||||
|
||||
namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
namespace Umbraco.Cms.Web.BackOffice.Authorization;
|
||||
|
||||
/// <summary>
|
||||
/// Used to authorize if the user has the correct permission access to the content for the content id specified in a
|
||||
/// query string.
|
||||
/// </summary>
|
||||
public class
|
||||
ContentPermissionsQueryStringHandler : PermissionsQueryStringHandler<ContentPermissionsQueryStringRequirement>
|
||||
{
|
||||
private readonly ContentPermissions _contentPermissions;
|
||||
|
||||
/// <summary>
|
||||
/// Used to authorize if the user has the correct permission access to the content for the content id specified in a query string.
|
||||
/// Initializes a new instance of the <see cref="ContentPermissionsQueryStringHandler" /> class.
|
||||
/// </summary>
|
||||
public class ContentPermissionsQueryStringHandler : PermissionsQueryStringHandler<ContentPermissionsQueryStringRequirement>
|
||||
/// <param name="backOfficeSecurityAccessor">Accessor for back-office security.</param>
|
||||
/// <param name="httpContextAccessor">Accessor for the HTTP context of the current request.</param>
|
||||
/// <param name="entityService">Service for entity operations.</param>
|
||||
/// <param name="contentPermissions">Helper for content authorization checks.</param>
|
||||
public ContentPermissionsQueryStringHandler(
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
IEntityService entityService,
|
||||
ContentPermissions contentPermissions)
|
||||
: base(backOfficeSecurityAccessor, httpContextAccessor, entityService) =>
|
||||
_contentPermissions = contentPermissions;
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, ContentPermissionsQueryStringRequirement requirement)
|
||||
{
|
||||
private readonly ContentPermissions _contentPermissions;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ContentPermissionsQueryStringHandler"/> class.
|
||||
/// </summary>
|
||||
/// <param name="backOfficeSecurityAccessor">Accessor for back-office security.</param>
|
||||
/// <param name="httpContextAccessor">Accessor for the HTTP context of the current request.</param>
|
||||
/// <param name="entityService">Service for entity operations.</param>
|
||||
/// <param name="contentPermissions">Helper for content authorization checks.</param>
|
||||
public ContentPermissionsQueryStringHandler(
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
IEntityService entityService,
|
||||
ContentPermissions contentPermissions)
|
||||
: base(backOfficeSecurityAccessor, httpContextAccessor, entityService) => _contentPermissions = contentPermissions;
|
||||
|
||||
/// <inheritdoc/>
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, ContentPermissionsQueryStringRequirement requirement)
|
||||
int nodeId;
|
||||
if (requirement.NodeId.HasValue == false)
|
||||
{
|
||||
int nodeId;
|
||||
if (requirement.NodeId.HasValue == false)
|
||||
if (HttpContextAccessor.HttpContext is null || requirement.QueryStringName is null ||
|
||||
!HttpContextAccessor.HttpContext.Request.Query.TryGetValue(requirement.QueryStringName, out StringValues routeVal))
|
||||
{
|
||||
if (HttpContextAccessor.HttpContext is null || requirement.QueryStringName is null || !HttpContextAccessor.HttpContext.Request.Query.TryGetValue(requirement.QueryStringName, out StringValues routeVal))
|
||||
{
|
||||
// Must succeed this requirement since we cannot process it
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
var argument = routeVal.ToString();
|
||||
|
||||
if (!TryParseNodeId(argument, out nodeId))
|
||||
{
|
||||
// Must succeed this requirement since we cannot process it.
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeId = requirement.NodeId.Value;
|
||||
// Must succeed this requirement since we cannot process it
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
ContentPermissions.ContentAccess permissionResult = _contentPermissions.CheckPermissions(
|
||||
nodeId,
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
out IContent? contentItem,
|
||||
new[] { requirement.PermissionToCheck });
|
||||
var argument = routeVal.ToString();
|
||||
|
||||
if (HttpContextAccessor.HttpContext is not null && contentItem is not null)
|
||||
if (!TryParseNodeId(argument, out nodeId))
|
||||
{
|
||||
// Store the content item in request cache so it can be resolved in the controller without re-looking it up.
|
||||
HttpContextAccessor.HttpContext.Items[typeof(IContent).ToString()] = contentItem;
|
||||
// Must succeed this requirement since we cannot process it.
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
return permissionResult switch
|
||||
{
|
||||
ContentPermissions.ContentAccess.Denied => Task.FromResult(false),
|
||||
_ => Task.FromResult(true),
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeId = requirement.NodeId.Value;
|
||||
}
|
||||
|
||||
ContentPermissions.ContentAccess permissionResult = _contentPermissions.CheckPermissions(
|
||||
nodeId,
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
out IContent? contentItem,
|
||||
new[] { requirement.PermissionToCheck });
|
||||
|
||||
if (HttpContextAccessor.HttpContext is not null && contentItem is not null)
|
||||
{
|
||||
// Store the content item in request cache so it can be resolved in the controller without re-looking it up.
|
||||
HttpContextAccessor.HttpContext.Items[typeof(IContent).ToString()] = contentItem;
|
||||
}
|
||||
|
||||
return permissionResult switch
|
||||
{
|
||||
ContentPermissions.ContentAccess.Denied => Task.FromResult(false),
|
||||
_ => Task.FromResult(true)
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user