private static IRestResponse <T> AuthorizedMethods <T>(IAuthorizable authorizable, IRestRequest request, Method method)
        {
            if (!authorizable.IsAuthenticated)
            {
                ClearAuthHeader(request);
                authorizable.Authorize();
            }

            var response = GetResponse <T>(authorizable.Client, request, method);

            if (response.IsSuccessful)
            {
                return(response);
            }

            if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            {
                ClearAuthHeader(request);
                authorizable.IsAuthenticated = false;
                authorizable.Authorize();
                response = GetResponse <T>(authorizable.Client, request, method);
            }

            return(response);
        }
示例#2
0
        public Faceit(IAuthorizable authorizable)
        {
            if (authorizable == null)
            {
                throw new ArgumentException($"IAuthorizable authorizable on {GetType().FullName} cannot be null");
            }

            Authorizable = authorizable;
        }
示例#3
0
        public HttpResponseMessage SendRequest(string url, IAuthorizable authorizable)
        {
            HttpRequestMessage request = new HttpRequestMessage();

            request.Headers.Add(authorizable.GetHeaderName(), authorizable.GetBearer());
            request.Headers.Add(ContentType, MimeContentType);
            request.RequestUri = new Uri(url);
            request.Method     = HttpMethod;

            HttpClient          httpClient      = new HttpClient();
            HttpResponseMessage responseMessage = httpClient.SendAsync(request).Result;

            return(responseMessage);
        }
示例#4
0
        /// <summary>
        ///     Checks whether this <see cref="IAuthorizable"/> is granted the given permission.
        /// </summary>
        /// <param name="authorizable">The <see cref="IAuthorizable"/> to authorize.</param>
        /// <param name="permission">The permission to check.</param>
        /// <returns>Returns <c>true</c> when the sets grant the given permission.</returns>
        public static bool IsAuthorized(this IAuthorizable authorizable, string permission)
        {
            var permissionsSets = new List <Dictionary <string, Permission> >();

            switch (authorizable)
            {
            case Guest guest:
                permissionsSets.Add(GroupManager.GetGuestGroup().Permissions);
                permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue <= GroupManager.GetGuestGroup().SortValue).OrderBy(_ => _.SortValue).Select(_ => _.Permissions));

                //if (guest.ActiveChannel != null && guest.ActiveChannel.MemberPermissions.ContainsKey(guest.InternalId)) {
                //    permissionsSets.Add(guest.ActiveChannel.MemberPermissions[guest.InternalId]);
                //}

                permissionsSets.Add(guest.Permissions);

                break;

            case Member member:
                permissionsSets.AddRange(member.Groups.OrderBy(_ => _.SortValue).Select(_ => _.Permissions));
                if (member.Groups.Count > 0)
                {
                    permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue <= member.Groups.Select(_ => _.SortValue).Min()).OrderBy(_ => _.SortValue).Select(_ => _.Permissions));
                }

                //if (member.ActiveChannel != null && member.ActiveChannel.MemberPermissions.ContainsKey(member.InternalId)) {
                //    permissionsSets.Add(member.ActiveChannel.MemberPermissions[member.InternalId]);
                //}

                permissionsSets.Add(member.Permissions);

                break;

            case Group group:
                permissionsSets.Add(group.Permissions);

                break;

            default:
                return(false);
            }

            return(IsAuthorized(permission, permissionsSets.ToArray()));
        }
示例#5
0
        /// <summary>
        ///     Returns all permissions granted to the authorizable instance.
        /// </summary>
        /// <param name="authorizable">The instance to get all granted permissions from.</param>
        /// <returns>Returns all granted permissions.</returns>
        public static Dictionary <string, Permission> GetAllPermissons(this IAuthorizable authorizable)
        {
            var permissionsSets = new List <Dictionary <string, Permission> >();

            switch (authorizable)
            {
            case Guest guest:
                permissionsSets.Add(GroupManager.GetGuestGroup().Permissions);
                permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue < GroupManager.GetGuestGroup().SortValue).OrderBy(_ => _.SortValue).Select(_ => _.Permissions));

                //if (guest.ActiveChannel != null && guest.ActiveChannel.MemberPermissions.ContainsKey(guest.InternalId)) {
                //    permissionsSets.Add(guest.ActiveChannel.MemberPermissions[guest.InternalId]);
                //}

                permissionsSets.Add(guest.Permissions);

                break;

            case Member member:
                permissionsSets.AddRange(member.Groups.OrderBy(_ => _.SortValue).Select(_ => _.Permissions));
                if (member.Groups.Count > 0)
                {
                    permissionsSets.AddRange(Pool.Server.Groups.FindAll(@group => @group.SortValue < member.Groups.Select(_ => _.SortValue).Min()).OrderBy(_ => _.SortValue).Select(_ => _.Permissions));
                }

                //if (member.ActiveChannel != null && member.ActiveChannel.MemberPermissions.ContainsKey(member.InternalId)) {
                //    permissionsSets.Add(member.ActiveChannel.MemberPermissions[member.InternalId]);
                //}

                permissionsSets.Add(member.Permissions);

                break;

            default:
                return(new Dictionary <string, Permission>());
            }

            return(permissionsSets.Aggregate(new Dictionary <string, Permission>(), UnionPermissions));
        }
示例#6
0
 public Hubs(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#7
0
 public Tournaments(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#8
0
 public ApiBase(IAuthorizable authorizable)
 {
     Authorizable = authorizable;
 }
示例#9
0
 public Organizers(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#10
0
 public Leaderboards(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#11
0
 public Rankings(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#12
0
 public Games(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#13
0
 public Championships(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#14
0
 public Matches(IAuthorizable authorizable) : base(authorizable)
 {
 }
 public static IRestResponse <T> AuthorizedPost <T>(this IAuthorizable authorizable, IRestRequest request)
 {
     return(AuthorizedMethods <T>(authorizable, request, Method.POST));
 }
示例#16
0
 public Search(IAuthorizable authorizable) : base(authorizable)
 {
 }
示例#17
0
 public Teams(IAuthorizable auth) : base(auth)
 {
 }
示例#18
0
 private bool Authorize(IAuthorizable authorization)
 {
     return(authorization.AuthKey == _configuration["ApiAuthorizationKey"]);
 }
示例#19
0
 public Players(IAuthorizable authorizable) : base(authorizable)
 {
 }