public Task HandleAsync(AuthorizationHandlerContext context, IContestContextAccessor feature) { if (feature.IsPublic || feature.HasTeam || feature.JuryLevel.HasValue) { context.Succeed(this); return(Task.CompletedTask); } var tenants = context.User.FindAll("tenant") .Select(t => int.TryParse(t.Value, out int v) ? v : default(int?)) .NotNulls() .ToList(); if (tenants.Count > 0) { return(HandleCoreAsync()); async Task HandleCoreAsync() { if (await feature.Context.IsTenantVisibleAsync(tenants)) { context.Succeed(this); } } } else { return(Task.CompletedTask); } }
/// <summary> /// Instantiate an execution context for register provider. /// </summary> /// <param name="context">The contest context.</param> /// <param name="userManager">The user manager.</param> /// <param name="httpContext">The http context.</param> public RegisterProviderContext(IContestContextAccessor context, HttpContext httpContext, IUserManager?userManager = null) { Contest = context; _userManager = userManager; _teamContext = (context.Context as ITeamContext) ?? throw new NotSupportedException("Team controlling is not supported."); HttpContext = httpContext; }
public Task HandleAsync(AuthorizationHandlerContext context, IContestContextAccessor feature) { if (feature.HasTeam) { context.Succeed(this); } return(Task.CompletedTask); }
public Task HandleAsync(AuthorizationHandlerContext context, IContestContextAccessor feature) { if (feature.JuryLevel.HasValue && feature.JuryLevel.Value >= _level) { context.Succeed(this); } return(Task.CompletedTask); }
public override async Task OnActionExecutionAsync( ActionExecutingContext context, ActionExecutionDelegate next) { _accessor = HttpContext.Features.Get <IContestFeature>(); if (!Contest.IsPublic && !_accessor.JuryLevel.HasValue && !_accessor.HasTeam) { context.Result = NotFound(); return; } await OnActionExecutingAsync(context); ViewData["ContestId"] = Contest.Id; if (context.Result == null) { await OnActionExecutedAsync(await next()); } }