Skip to content

Instantly share code, notes, and snippets.

View Lutando's full-sized avatar
💻
developing.

Lutando Ngqakaza Lutando

💻
developing.
View GitHub Profile
[Fact]
[Trait("Category", Category)]
public async void HandleEdit_WhenCalledWithResourceOwner_ShouldSucceed()
{
var resource = make_PostDefault();
var authorizationModel = PostAuthorizationModel.From(resource);
var user = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim> { new Claim("sub", UserIdDefault.ToString()) }));
var requirement = PostOperations.Edit;
var authorizationContext = new AuthorizationHandlerContext(new List<IAuthorizationRequirement> { requirement }, user, authorizationModel);
var authorizationHandler = new PostAuthorizationHandler();
[Fact]
[Trait("Category", Category)]
public async void HandleEdit_WhenCalledWithResourceOwner_ShouldSucceed()
{
var resource = make_PostDefault();
var authorizationModel = PostAuthorizationModel.From(resource);
var user = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim> { new Claim("sub", UserIdDefault.ToString()) }));
var requirement = PostOperations.Edit;
var authorizationContext = new AuthorizationHandlerContext(new List<IAuthorizationRequirement> { requirement }, user, authorizationModel);
var authorizationHandler = new PostAuthorizationHandler();
using System.Threading.Tasks;
using Formum.Api.Authorization.Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Authorization.Infrastructure;
namespace Formum.Api.Authorization.Handlers
{
public class PostAuthorizationHandler : AuthorizationHandler<OperationAuthorizationRequirement, PostAuthorizationModel>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, OperationAuthorizationRequirement requirement,
public class PostAuthorizationModel : PostAuthorizationModel<Guid>
{
public Guid OwnerId {get; private set;}
public Guid ResourceId {get; private set;}
private PostAuthorizationModel(Guid ownerId, Guid postId)
{
OwnerId = ownerId;
ResourceId = postId;
}
using System;
namespace Forum.Models
{
public class Post
{
public Guid Id { get; private set; }
public Guid UserId { get; private set; }
public DateTime CreatedAt { get; private set; }
public string Text { get; private set; }
using Microsoft.AspNetCore.Authorization.Infrastructure;
namespace Formum.Api.Authorization.Operations
{
public class PostOperations
{
public static OperationAuthorizationRequirement Delete = new OperationAuthorizationRequirement { Name = "PostDelete" };
public static OperationAuthorizationRequirement Edit = new OperationAuthorizationRequirement { Name = "PostEdit" };
}
}