start work on the backoffice project
This commit is contained in:
@@ -57,35 +57,35 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
int[] userIds;
|
||||
int[]? userIds;
|
||||
if (int.TryParse(queryString, NumberStyles.Integer, CultureInfo.InvariantCulture, out var userId))
|
||||
{
|
||||
userIds = new[] { userId };
|
||||
}
|
||||
else
|
||||
{
|
||||
var ids = queryString.ToString().Split(Constants.CharArrays.Comma, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
if (ids.Count == 0)
|
||||
var ids = queryString.ToString()?.Split(Constants.CharArrays.Comma, StringSplitOptions.RemoveEmptyEntries).ToList();
|
||||
if (ids?.Count == 0)
|
||||
{
|
||||
// Must succeed this requirement since we cannot process it.
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
userIds = ids
|
||||
userIds = ids?
|
||||
.Select(x => int.TryParse(x, NumberStyles.Integer, CultureInfo.InvariantCulture, out var output) ? Attempt<int>.Succeed(output) : Attempt<int>.Fail())
|
||||
.Where(x => x.Success)
|
||||
.Select(x => x.Result)
|
||||
.ToArray();
|
||||
}
|
||||
|
||||
if (userIds.Length == 0)
|
||||
if (userIds?.Length == 0)
|
||||
{
|
||||
// Must succeed this requirement since we cannot process it.
|
||||
return Task.FromResult(true);
|
||||
}
|
||||
|
||||
IEnumerable<IUser> users = _userService.GetUsersById(userIds);
|
||||
var isAuth = users.All(user => _userEditorAuthorizationHelper.IsAuthorized(_backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser, user, null, null, null) != false);
|
||||
var isAuth = users.All(user => _userEditorAuthorizationHelper.IsAuthorized(_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser, user, null, null, null) != false);
|
||||
|
||||
return Task.FromResult(isAuth);
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
case var _ when _runtimeState.EnableInstaller():
|
||||
return Task.FromResult(true);
|
||||
default:
|
||||
if (!_backOfficeSecurity.BackOfficeSecurity.IsAuthenticated())
|
||||
if (!_backOfficeSecurity.BackOfficeSecurity?.IsAuthenticated() ?? false)
|
||||
{
|
||||
return Task.FromResult(false);
|
||||
}
|
||||
|
||||
var userApprovalSucceeded = !requirement.RequireApproval || (_backOfficeSecurity.BackOfficeSecurity.CurrentUser?.IsApproved ?? false);
|
||||
var userApprovalSucceeded = !requirement.RequireApproval || (_backOfficeSecurity.BackOfficeSecurity?.CurrentUser?.IsApproved ?? false);
|
||||
return Task.FromResult(userApprovalSucceeded);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
/// <inheritdoc/>
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, ContentPermissionsPublishBranchRequirement requirement, IContent resource)
|
||||
{
|
||||
IUser currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser;
|
||||
IUser? currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser;
|
||||
|
||||
var denied = new List<IUmbracoEntity>();
|
||||
var page = 0;
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
int nodeId;
|
||||
if (requirement.NodeId.HasValue == false)
|
||||
{
|
||||
if (!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);
|
||||
@@ -61,11 +61,11 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
|
||||
ContentPermissions.ContentAccess permissionResult = _contentPermissions.CheckPermissions(
|
||||
nodeId,
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser,
|
||||
out IContent contentItem,
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
out IContent? contentItem,
|
||||
new[] { requirement.PermissionToCheck });
|
||||
|
||||
if (contentItem != null)
|
||||
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;
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
/// <summary>
|
||||
/// Gets the querystring parameter name.
|
||||
/// </summary>
|
||||
public string QueryStringName { get; }
|
||||
public string? QueryStringName { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the permission to authorize the current user against.
|
||||
|
||||
@@ -35,12 +35,12 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
ContentPermissions.ContentAccess permissionResult = resource.NodeId.HasValue
|
||||
? _contentPermissions.CheckPermissions(
|
||||
resource.NodeId.Value,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser,
|
||||
out IContent _,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
out IContent? _,
|
||||
resource.PermissionsToCheck)
|
||||
: _contentPermissions.CheckPermissions(
|
||||
resource.Content,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
resource.PermissionsToCheck);
|
||||
|
||||
return Task.FromResult(permissionResult != ContentPermissions.ContentAccess.Denied);
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
/// <inheritdoc/>
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, MediaPermissionsQueryStringRequirement requirement)
|
||||
{
|
||||
if (!HttpContextAccessor.HttpContext.Request.Query.TryGetValue(requirement.QueryStringName, out StringValues routeVal))
|
||||
if (HttpContextAccessor.HttpContext 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);
|
||||
@@ -50,9 +50,9 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
}
|
||||
|
||||
MediaPermissions.MediaAccess permissionResult = _mediaPermissions.CheckPermissions(
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser,
|
||||
BackOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
nodeId,
|
||||
out IMedia mediaItem);
|
||||
out IMedia? mediaItem);
|
||||
|
||||
if (mediaItem != null)
|
||||
{
|
||||
|
||||
@@ -18,6 +18,6 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
}
|
||||
|
||||
public int? NodeId { get; }
|
||||
public IMedia Media { get; }
|
||||
public IMedia? Media { get; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,12 +34,12 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
{
|
||||
MediaPermissions.MediaAccess permissionResult = resource.NodeId.HasValue
|
||||
? _mediaPermissions.CheckPermissions(
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser,
|
||||
resource.NodeId.Value,
|
||||
out _)
|
||||
: _mediaPermissions.CheckPermissions(
|
||||
resource.Media,
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser);
|
||||
_backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser);
|
||||
|
||||
return Task.FromResult(permissionResult != MediaPermissions.MediaAccess.Denied);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
nodeId = parsedId;
|
||||
return true;
|
||||
}
|
||||
else if (UdiParser.TryParse(argument, true, out Udi udi))
|
||||
else if (UdiParser.TryParse(argument, true, out Udi? udi))
|
||||
{
|
||||
nodeId = EntityService.GetId(udi).Result;
|
||||
return true;
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
/// <inheritdoc/>
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, SectionRequirement requirement)
|
||||
{
|
||||
var authorized = _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser != null &&
|
||||
var authorized = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser != null &&
|
||||
requirement.SectionAliases
|
||||
.Any(app => _backOfficeSecurityAccessor.BackOfficeSecurity.UserHasSectionAccess(
|
||||
app, _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser));
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
.Distinct()
|
||||
.ToArray();
|
||||
|
||||
var isAuth = _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser != null &&
|
||||
var isAuth = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser != null &&
|
||||
apps.Any(app => _backOfficeSecurityAccessor.BackOfficeSecurity.UserHasSectionAccess(
|
||||
app, _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser));
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
/// <inheritdoc/>
|
||||
protected override Task<bool> IsAuthorized(AuthorizationHandlerContext context, UserGroupRequirement requirement)
|
||||
{
|
||||
IUser currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity.CurrentUser;
|
||||
IUser? currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser;
|
||||
|
||||
var querystring = _httpContextAccessor.HttpContext?.Request.Query[requirement.QueryStringName];
|
||||
if (querystring is null)
|
||||
@@ -87,7 +87,7 @@ namespace Umbraco.Cms.Web.BackOffice.Authorization
|
||||
_entityService,
|
||||
_appCaches);
|
||||
|
||||
Attempt<string> isAuth = authHelper.AuthorizeGroupAccess(currentUser, intIds);
|
||||
Attempt<string?> isAuth = authHelper.AuthorizeGroupAccess(currentUser, intIds);
|
||||
|
||||
return Task.FromResult(isAuth.Success);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user