Пример #1
0
        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);
            }
        }
Пример #2
0
 /// <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;
 }
Пример #3
0
        public Task HandleAsync(AuthorizationHandlerContext context, IContestContextAccessor feature)
        {
            if (feature.HasTeam)
            {
                context.Succeed(this);
            }

            return(Task.CompletedTask);
        }
Пример #4
0
        public Task HandleAsync(AuthorizationHandlerContext context, IContestContextAccessor feature)
        {
            if (feature.JuryLevel.HasValue && feature.JuryLevel.Value >= _level)
            {
                context.Succeed(this);
            }

            return(Task.CompletedTask);
        }
Пример #5
0
        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());
            }
        }