private bool AccessControl(string methodType, ProfileRightModel organizationProfile, UserProfileModel userProfile)
        {
            var result = false;

            if (organizationProfile == null)
            {
                return(false);
            }
            if (userProfile != null)
            {
                organizationProfile.Right = userProfile.Right;
            }
            switch (methodType)
            {
            case "GET":
                result = organizationProfile.Right.CanRead() || (organizationProfile.SubRight.HasValue && organizationProfile.SubRight.Value.CanRead());
                break;

            case "POST":
                result = organizationProfile.Right.CanWrite() || (organizationProfile.SubRight.HasValue && organizationProfile.SubRight.Value.CanWrite());
                break;

            case "PUT":
            case "PATCH":
                result = organizationProfile.Right.CanEdit() || (organizationProfile.SubRight.HasValue && organizationProfile.SubRight.Value.CanEdit());
                break;

            case "DELETE":
                result = organizationProfile.Right.CanDelete() || (organizationProfile.SubRight.HasValue && organizationProfile.SubRight.Value.CanDelete());
                break;
            }
            return(result);
        }
示例#2
0
        private ProfileRightModel GetProfileAccessRight(ClaimsIdentity identity, string controllerName)
        {
            var claim = identity.Claims.FirstOrDefault(c => c.ValueType.Equals(controllerName));
            ProfileRightModel result = null;

            if (claim != null)
            {
                var right = JsonConvert.DeserializeObject <AccessRightClaim>(claim?.Value);
                result = right.ToModel();
            }
            return(result);
        }
        private ProfileRightModel GetProfileAccessRight(ClaimsPrincipal identity, string controllerName)
        {
            ProfileRightModel result = null;
            var claims = identity.FindAll("Profile").Select(c => c.Value);

            foreach (var claim in claims)
            {
                var c = JsonConvert.DeserializeObject <AccessRightClaim>(claim);
                if (c.Name.Equals(controllerName))
                {
                    result = c.ToModel();
                    break;
                }
            }
            return(result);
        }