/// <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); } }
/// <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 })/* 跳向无权访问页 */); }
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); }
/// <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); }
/// <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; }