private bool HasSocialReplationship(UserInfo targetUser, UserInfo accessingUser, string extendedVisibility)
        {
            if (string.IsNullOrEmpty(extendedVisibility))
            {
                return(false);
            }

            var profileVisibility = new ProfileVisibility(PortalSettings.PortalId, extendedVisibility);

            var isVisible = accessingUser.UserID == targetUser.UserID;

            if (!isVisible)
            {
                //Relationships
                foreach (var relationship in profileVisibility.RelationshipVisibilities)
                {
                    switch (relationship.RelationshipTypeId)
                    {
                    case (int)DefaultRelationshipTypes.Followers:
                        isVisible = targetUser.Social.Following != null && targetUser.Social.Following.Status == RelationshipStatus.Accepted;
                        break;

                    case (int)DefaultRelationshipTypes.Friends:
                        isVisible = targetUser.Social.Friend != null && targetUser.Social.Friend.Status == RelationshipStatus.Accepted;
                        break;

                    default:
                        isVisible = targetUser.Social.UserRelationships.Any(userRelationship =>
                                                                            (userRelationship.RelationshipId == relationship.RelationshipId &&
                                                                             accessingUser.UserID == userRelationship.RelatedUserId &&
                                                                             userRelationship.Status == RelationshipStatus.Accepted)
                                                                            );
                        break;
                    }

                    if (isVisible)
                    {
                        break;
                    }
                }
                //Groups/Roles
                if (profileVisibility.RoleVisibilities.Any(role => accessingUser.IsInRole(role.RoleName)))
                {
                    isVisible = true;
                }
            }

            return(isVisible);
        }
Пример #2
0
 public ProfileVisibilityDto(ProfileVisibility visibility)
 {
     VisibilityMode           = visibility.VisibilityMode;
     RoleVisibilities         = visibility.RoleVisibilities.Select(r => r.RoleID).ToList();
     RelationshipVisibilities = visibility.RelationshipVisibilities.Select(r => r.RelationshipId).ToList();
 }
Пример #3
0
        /// <summary>
        /// Sets the player's profile visibility
        /// </summary>
        /// <param name="profileVisibility">The profile visibility</param>
        public void SetProfileVisibility(ProfileVisibility profileVisibility)
        {
            bool requestedVisibility = profileVisibility == ProfileVisibility.Public;

            this.SetProfileVisibility(requestedVisibility);
        }