public static async Task IsEventAuthorCheck(AuthorizationHandlerContext authContext, PuzzleServerContext dbContext, UserManager <IdentityUser> userManager, IAuthorizationRequirement requirement) { PuzzleUser puzzleUser = await PuzzleUser.GetPuzzleUserForCurrentUser(dbContext, authContext.User, userManager); EventRole role = AuthorizationHelper.GetEventRoleFromContext(authContext); if (authContext.Resource is AuthorizationFilterContext filterContext) { Event thisEvent = await AuthorizationHelper.GetEventFromContext(authContext); if (thisEvent != null && role == EventRole.author && await puzzleUser.IsAuthorForEvent(dbContext, thisEvent)) { authContext.Succeed(requirement); } } }
public async Task IsEventAuthorCheck(AuthorizationHandlerContext authContext, IAuthorizationRequirement requirement) { EventRole role = GetEventRoleFromRoute(); if (role != EventRole.author) { return; } PuzzleUser puzzleUser = await PuzzleUser.GetPuzzleUserForCurrentUser(dbContext, authContext.User, userManager); Event thisEvent = await GetEventFromRoute(); if (thisEvent != null && await puzzleUser.IsAuthorForEvent(dbContext, thisEvent)) { authContext.Succeed(requirement); } }