Exemplo n.º 1
0
        /// <summary>
        /// 解析内容用于创建AtUser
        /// </summary>
        /// <param name="body">待解析的内容</param>
        /// <param name="userId">内容作者UserId</param>
        /// <param name="associateId">关联项Id</param>
        public void ResolveBodyForEdit(string body, long userId, long associateId)
        {
            if (string.IsNullOrEmpty(body) || !body.Contains("@"))
            {
                return;
            }

            List <long> userIds = new List <long>();

            PrivacyService privacyService = new PrivacyService();
            IUserService   userService    = DIContainer.Resolve <IUserService>();

            string userNameRegex = new UserSettings().NickNameRegex, tempNickName = string.Empty;

            userNameRegex = userNameRegex.TrimStart('^').TrimEnd('$');

            Regex           rg      = new Regex("(?<=(\\@))" + userNameRegex, RegexOptions.Multiline | RegexOptions.Singleline);
            MatchCollection matches = rg.Matches(body);

            if (matches != null)
            {
                foreach (Match m in matches)
                {
                    if (string.IsNullOrEmpty(m.Value) || tempNickName.Equals(m.Value, StringComparison.CurrentCultureIgnoreCase))
                    {
                        continue;
                    }

                    tempNickName = m.Value;
                    IUser user = userService.GetUserByNickName(tempNickName);

                    if (user == null ||
                        userIds.Contains(user.UserId) ||
                        !privacyService.Validate(user.UserId, userId, PrivacyItemKeys.Instance().AtUser()))
                    {
                        continue;
                    }

                    userIds.Add(user.UserId);
                }
            }

            if (userIds.Count > 0)
            {
                BatchCreateAtUser(userIds, associateId, userId);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 解析内容中的AtUser用户展示展示
        /// </summary>
        /// <param name="body">待解析的内容</param>
        /// <param name="associateId">关联项Id</param>
        /// <param name="userId">关联项作者Id</param>
        /// <param name="TagGenerate">用户生成对应标签的方法</param>
        public string ResolveBodyForDetail(string body, long associateId, long userId, Func <string, string, string> TagGenerate)
        {
            if (string.IsNullOrEmpty(body) || !body.Contains("@") || userId <= 0)
            {
                return(body);
            }

            IList <long> userIds = GetAtUserIds(associateId);

            if (userIds != null)
            {
                PrivacyService privacyService = new PrivacyService();
                IUserService   userService    = DIContainer.Resolve <IUserService>();
                bool           endMatch       = false;
                foreach (var atUserId in userIds)
                {
                    if (atUserId == 0)
                    {
                        continue;
                    }

                    IUser user = userService.GetUser(atUserId);
                    if (user == null)
                    {
                        continue;
                    }

                    if (privacyService.Validate(user.UserId, userId, PrivacyItemKeys.Instance().AtUser()))
                    {
                        string nickName = user.NickName;

                        body = body.Replace("@" + nickName, TagGenerate(user.UserName, nickName));
                        body = body.Replace("@" + nickName + "</p>", TagGenerate(user.UserName, nickName) + "</p>");

                        if (!endMatch && body.EndsWith("@" + nickName))
                        {
                            endMatch = true;
                            body     = body.Remove(body.Length - (nickName.Length + 1), nickName.Length + 1) + TagGenerate(user.UserName, nickName);
                        }
                    }
                }
            }
            return(body);
        }
        private void AuthorizeCore(AuthorizationContext filterContext)
        {
            string spaceKey = UserContext.CurrentSpaceKey(filterContext);

            if (string.IsNullOrEmpty(spaceKey))
            {
                filterContext.Result = new HttpNotFoundResult();
                return;
            }
            IUserService userService = DIContainer.Resolve<IUserService>();
            User currentSpaceUser = userService.GetFullUser(spaceKey);
            if (currentSpaceUser == null)
            {
                filterContext.Result = new HttpNotFoundResult();
                return;
            }
            IUser currentUser = UserContext.CurrentUser;
            //判断空间访问隐私
            PrivacyService privacyService = new PrivacyService();
            if (!privacyService.Validate(currentSpaceUser.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().VisitUserSpace()))
            {
                if (currentUser == null)
                {
                    if (filterContext.HttpContext.Request.IsAjaxRequest())
                        filterContext.Result = new RedirectResult(SiteUrls.Instance().Login(false, SiteUrls.LoginModal._LoginInModal));
                    else
                        filterContext.Result = new RedirectResult(SiteUrls.Instance().Login(true));
                }
                else
                    filterContext.Result = new RedirectResult(SiteUrls.Instance().PrivacyHome(currentSpaceUser.UserName)/* 跳向无权访问页 */);
                return;
            }

            //判断该用户是否有访问该空间的权限
            if (!RequireOwnerOrAdministrator)
                return;
            //匿名用户要求先登录跳转
            if (currentUser == null)
            {
                if (filterContext.HttpContext.Request.IsAjaxRequest())
                    filterContext.Result = new RedirectResult(SiteUrls.Instance().Login(false, SiteUrls.LoginModal._LoginInModal));
                else
                    filterContext.Result = new RedirectResult(SiteUrls.Instance().Login(true));
                return;
            }

            if (currentSpaceUser.UserId == currentUser.UserId)
            {
                //if (currentUser.IsBanned)
                //{
                //    IAuthenticationService authenticationService = DIContainer.ResolvePerHttpRequest<IAuthenticationService>();
                //    authenticationService.SignOut();
                //    filterContext.Result = new RedirectResult(SiteUrls.Instance().SystemMessage(filterContext.Controller.TempData, new SystemMessageViewModel
                //      {
                //          Title = "帐号被封禁!",
                //          Body = "由于您的非法操作,您的帐号已被封禁,如有疑问,请联系管理员",
                //          StatusMessageType = StatusMessageType.Error
                //      }));
                //}
                return;
            }
            if (currentUser.IsInRoles(RoleNames.Instance().SuperAdministrator(), RoleNames.Instance().ContentAdministrator()))
                return;
            filterContext.Result = new RedirectResult(SiteUrls.Instance().SystemMessage(filterContext.Controller.TempData, new SystemMessageViewModel
            {
                Title = "无权访问",
                Body = "您无权访问此页面,只有空间主人或管理员才能访问",
                StatusMessageType = StatusMessageType.Hint
            })/* 跳向无权访问页 */);
        }
Exemplo n.º 4
0
        public ActionResult PersonalInformation(string spaceKey)
        {
            pageResourceManager.InsertTitlePart("个人资料");
            User user = userService.GetFullUser(spaceKey);
            IUser currentUser = UserContext.CurrentUser;

            IEnumerable<WorkExperience> workExperiences = userProfileService.GetWorkExperiences(user.UserId);
            ViewData["workExperiences"] = workExperiences;
            IEnumerable<EducationExperience> educationExperiences = userProfileService.GetEducationExperiences(user.UserId);
            ViewData["educationExperiences"] = educationExperiences;

            PrivacyService privacyService = new PrivacyService();
            bool seeBirthDay = false;
            bool seeMobile = false;
            bool seeEmail = false;
            bool seeQQ = false;
            bool seeMsn = false;
            bool seeWork = false;
            bool seeEducation = false;
            bool seeUserSpace = false;
            bool seeFollow = false;
            bool seeMessage = false;
            bool seeTrueName = false;
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().Birthday()))
            {
                seeBirthDay = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().Mobile()))
            {
                seeMobile = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().Email()))
            {
                seeEmail = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().QQ()))
            {
                seeQQ = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().Msn()))
            {
                seeMsn = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().WorkExperience()))
            {
                seeWork = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().EducationExperience()))
            {
                seeEducation = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().VisitUserSpace()))
            {
                seeUserSpace = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().InviteFollow()))
            {
                seeFollow = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().Message()))
            {
                seeMessage = true;
            }
            if (privacyService.Validate(user.UserId, currentUser != null ? currentUser.UserId : 0, PrivacyItemKeys.Instance().TrueName()))
            {
                seeTrueName = true;
            }

            ViewData["seeBirthDay"] = seeBirthDay;
            ViewData["seeMobile"] = seeMobile;
            ViewData["seeEmail"] = seeEmail;
            ViewData["seeQQ"] = seeQQ;
            ViewData["seeMsn"] = seeMsn;
            ViewData["seeWork"] = seeWork;
            ViewData["seeEducation"] = seeEducation;
            ViewData["seeUserSpace"] = seeUserSpace;
            ViewData["seeFollow"] = seeFollow;
            ViewData["seeMessage"] = seeMessage;
            ViewData["seeTrueName"] = seeTrueName;
            return View(user);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 解析内容用于创建AtUser
        /// </summary>
        /// <param name="body">待解析的内容</param>
        /// <param name="userId">内容作者UserId</param>
        /// <param name="associateId">关联项Id</param>
        public void ResolveBodyForEdit(string body, long userId, long associateId)
        {
            if (string.IsNullOrEmpty(body) || !body.Contains("@"))
                return;

            List<long> userIds = new List<long>();

            PrivacyService privacyService = new PrivacyService();
            IUserService userService = DIContainer.Resolve<IUserService>();

            string userNameRegex = new UserSettings().NickNameRegex, tempNickName = string.Empty;
            userNameRegex = userNameRegex.TrimStart('^').TrimEnd('$');

            Regex rg = new Regex("(?<=(\\@))" + userNameRegex, RegexOptions.Multiline | RegexOptions.Singleline);
            MatchCollection matches = rg.Matches(body);

            if (matches != null)
            {
                foreach (Match m in matches)
                {
                    if (string.IsNullOrEmpty(m.Value) || tempNickName.Equals(m.Value, StringComparison.CurrentCultureIgnoreCase))
                        continue;

                    tempNickName = m.Value;
                    IUser user = userService.GetUserByNickName(tempNickName);

                    if (user == null
                        || userIds.Contains(user.UserId)
                        || !privacyService.Validate(user.UserId, userId, PrivacyItemKeys.Instance().AtUser()))
                        continue;

                    userIds.Add(user.UserId);
                }
            }

            if (userIds.Count > 0)
                BatchCreateAtUser(userIds, associateId, userId);
        }
Exemplo n.º 6
0
        /// <summary>
        /// 解析内容中的AtUser用户展示展示
        /// </summary>
        /// <param name="body">待解析的内容</param>
        /// <param name="associateId">关联项Id</param>
        /// <param name="userId">关联项作者Id</param>
        /// <param name="TagGenerate">用户生成对应标签的方法</param>
        public string ResolveBodyForDetail(string body, long associateId, long userId, Func<string, string, string> TagGenerate)
        {
            if (string.IsNullOrEmpty(body) || !body.Contains("@") || userId <= 0)
                return body;

            IList<long> userIds = GetAtUserIds(associateId);

            if (userIds != null)
            {
                PrivacyService privacyService = new PrivacyService();
                IUserService userService = DIContainer.Resolve<IUserService>();
                bool endMatch = false;
                foreach (var atUserId in userIds)
                {
                    if (atUserId == 0)
                        continue;

                    IUser user = userService.GetUser(atUserId);
                    if (user == null)
                        continue;

                    if (privacyService.Validate(user.UserId, userId, PrivacyItemKeys.Instance().AtUser()))
                    {
                        string nickName = user.NickName;

                        body = body.Replace("@" + nickName, TagGenerate(user.UserName, nickName));
                        body = body.Replace("@" + nickName + "</p>", TagGenerate(user.UserName, nickName) + "</p>");

                        if (!endMatch && body.EndsWith("@" + nickName))
                        {
                            endMatch = true;
                            body = body.Remove(body.Length - (nickName.Length + 1), nickName.Length + 1) + TagGenerate(user.UserName, nickName);
                        }
                    }
                }
            }
            return body;
        }