/// <summary> /// 验证用户名 /// </summary> /// <param name="userName">待验证的用户名</param> /// <param name="errorMessage">输出出错信息</param> /// <returns>是否通过验证</returns> public static bool ValidateUserName(string userName, out string errorMessage, bool isWeb = true) { if (string.IsNullOrEmpty(userName)) { if (isWeb) errorMessage = ResourceAccessor.GetString("Validate_UserNameRequired"); else errorMessage = ResourceAccessor.GetString("Validate_UserNameRequiredForMobileClient"); return false; } ISettingsManager<UserSettings> userSettingsManager = DIContainer.Resolve<ISettingsManager<UserSettings>>(); UserSettings userSettings = userSettingsManager.Get(); if (userName.Contains("*")) { if (isWeb) errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameHasSensitiveWord")); else errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameHasSensitiveWordForMobileClient")); return false; } if (userName.Length < userSettings.MinUserNameLength) { if (isWeb) errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameTooShort"), userSettings.MinUserNameLength); else errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameTooShortForMobileClient"), userSettings.MinUserNameLength); return false; } if (userName.Length > userSettings.MaxUserNameLength) { if (isWeb) errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameTooLong"), userSettings.MaxUserNameLength); else errorMessage = string.Format(ResourceAccessor.GetString("Validate_UserNameTooLongForMobileClient"), userSettings.MaxUserNameLength); return false; } Regex regex = new Regex(userSettings.UserNameRegex); if (!regex.IsMatch(userName)) { errorMessage = ResourceAccessor.GetString("Validate_UserNameRegex"); return false; } AuthorizationService authorizationService = new AuthorizationService(); authorizationService.IsSuperAdministrator(UserContext.CurrentUser); //验证UserName是否被禁止使用 if (!authorizationService.IsSuperAdministrator(UserContext.CurrentUser) && userSettings.DisallowedUserNames.Split(',', ',').Any(n => n.Equals(userName, StringComparison.CurrentCultureIgnoreCase))) { if (isWeb) errorMessage = ResourceAccessor.GetString("Validate_UserNameIsDisallowed"); else errorMessage = ResourceAccessor.GetString("Validate_UserNameIsDisallowedForMobileClient"); return false; } //验证UserName是否已经存在 IUserService userService = DIContainer.Resolve<IUserService>(); IUser user = userService.GetUser(userName); if (user != null) { if (isWeb) errorMessage = ResourceAccessor.GetString("Validate_UserNameIsExisting"); else errorMessage = ResourceAccessor.GetString("Validate_UserNameIsExistingForMobileClient"); return false; } errorMessage = string.Empty; return true; }
/// <summary> /// SpaceHome下局部页 /// </summary> public ActionResult UserInfo(string spaceKey) { IUser currentUser = UserContext.CurrentUser; User user = userService.GetFullUser(spaceKey); if (user == null) return HttpNotFound(); ViewData["user"] = user; AuthorizationService authorizationService = new AuthorizationService(); #region View中需要的信息 //是否是匿名用户 bool isAnonymousUser = false; if (currentUser == null) isAnonymousUser = true; else if (user.UserId != currentUser.UserId) { visitService.CreateVisit(currentUser.UserId, currentUser.DisplayName, user.UserId, user.DisplayName); } ViewData["isAnonymousUser"] = isAnonymousUser; if (!isAnonymousUser) { ViewData["isSuperAdmin_CurrentUser"] = authorizationService.IsSuperAdministrator(currentUser);//当前用户是否为超级管理员 ViewData["isSuperAdmin_User"] = authorizationService.IsSuperAdministrator(user);//被浏览用户是否为超级管理员 ViewData["isRequestFollow"] = !followService.IsFollowed(user.UserId, currentUser.UserId); //是否需要求关注 } //是否为同一用户 bool isSameUser = false; if (!isAnonymousUser && user.UserId == currentUser.UserId) { isSameUser = true; } ViewData["isSameUser"] = isSameUser; //是否关注和悄悄关注 if (currentUser != null) { FollowEntity entity = followService.Get(currentUser.UserId, user.UserId); if (entity != null) { ViewData["noteName"] = entity.NoteName; } bool isQuietly; bool isFollowed = followService.IsFollowed(currentUser.UserId, user.UserId, out isQuietly); ViewData["isFollowed"] = isFollowed; ViewData["isQuietly"] = isQuietly; if (isFollowed) { IEnumerable<string> groupNames = new List<string>(); followService.IsFollowed(currentUser.UserId, user.UserId, out groupNames); if (groupNames.Count() > 0) ViewData["editGroupShow"] = groupNames.FirstOrDefault(); else ViewData["editGroupShow"] = "编辑分组"; } } //简介显示 string introduction; if (user.Profile == null || !user.Profile.HasIntroduction) { introduction = isSameUser ? "可以在此填写个性简介" : "该用户尚未填写简介"; } else { introduction = user.Profile.Introduction; } ViewData["introduction"] = introduction; //共同关注的内容 if (!isSameUser && currentUser != null) { FollowUserSearcher followUserSearcher = (FollowUserSearcher)SearcherFactory.GetSearcher(FollowUserSearcher.CODE); UserSearcher userSearcher = (UserSearcher)SearcherFactory.GetSearcher(UserSearcher.CODE); IEnumerable<User> sameFollowedUsers = followUserSearcher.SearchInterestedWithFollows(currentUser.UserId, user.UserId); IEnumerable<string> sameTagNames = new List<string>(); IEnumerable<string> sameCompanyNames = new List<string>(); IEnumerable<string> sameSchoolNames = new List<string>(); userSearcher.SearchInterested(currentUser.UserId, user.UserId, out sameTagNames, out sameCompanyNames, out sameSchoolNames); ViewData["sameFollowedUsers"] = sameFollowedUsers; ViewData["sameTagNames"] = sameTagNames; ViewData["sameCompanyNames"] = sameCompanyNames; ViewData["sameSchoolNames"] = sameSchoolNames; } #endregion #region 身份认证 List<Identification> identifications = identificationService.GetUserIdentifications(user.UserId); if (identifications.Count() > 0) { ViewData["identificationTypeVisiable"] = true; } #endregion return View(); }
public ActionResult ManageTags(string keyword, string tenantTypeId, bool? isFeatured, AuditStatus? auditStatus = null, int pageIndex = 1, int pageSize = 20) { pageResourceManager.InsertTitlePart("标签管理"); TagService tagService = new TagService(tenantTypeId); PubliclyAuditStatus? publiclyAuditStatus = null; if (auditStatus != null) { publiclyAuditStatus = (PubliclyAuditStatus?)auditStatus; } TagQuery tagQuery = new TagQuery(); tagQuery.PubliclyAuditStatus = publiclyAuditStatus; tagQuery.Keyword = keyword; tagQuery.TenantTypeId = tenantTypeId; if (isFeatured.HasValue) { tagQuery.IsFeatured = isFeatured.Value; } PagingDataSet<Tag> tags = tagService.GetTags(tagQuery, pageIndex, pageSize); AuthorizationService authorizationService = new AuthorizationService(); //所属下拉框 List<TenantType> tenantTypesList = tenantTypeService.Gets(MultiTenantServiceKeys.Instance().Tag()).ToList<TenantType>(); List<TenantType> newTenantTypesList = new List<TenantType>(); if (UserContext.CurrentUser.IsInRoles(RoleNames.Instance().SuperAdministrator(), RoleNames.Instance().ContentAdministrator())) { newTenantTypesList.Insert(0, new TenantType { ApplicationId = 0, Name = "不限", TenantTypeId = "" }); newTenantTypesList.AddRange(tenantTypesList); } else { foreach (var item in tenantTypesList) { if (new AuthorizationService().IsApplicationManager(UserContext.CurrentUser, item.ApplicationId)) { newTenantTypesList.Add(item); } } } SelectList tenants = new SelectList(newTenantTypesList.Select(n => new { text = n.Name, value = n.TenantTypeId }), "value", "text", tenantTypeId); ViewData["tenants"] = tenants; //所属名称 Dictionary<string, string> tenantsDictionary = tenantTypesList.ToDictionary(n => n.TenantTypeId, n => n.Name); ViewData["tenantsDictionary"] = tenantsDictionary; return View(tags); }
/// <summary> /// 用户信息菜单控件 /// </summary> public ActionResult _UserInfo(string spaceKey) { User user = userService.GetFullUser(spaceKey); if (user == null) return HttpNotFound(); IUser currentUser = UserContext.CurrentUser; AuthorizationService authorizationService = new AuthorizationService(); bool isQuietly; bool isSameUser = false; if (currentUser != null) { bool isFollowed = followService.IsFollowed(currentUser.UserId, user.UserId, out isQuietly); if (currentUser != null && user.UserId == currentUser.UserId) { isSameUser = true; } ViewData["isSuperAdmin_CurrentUser"] = authorizationService.IsSuperAdministrator(currentUser);//当前用户是否为超级管理员 ViewData["isSuperAdmin_User"] = authorizationService.IsSuperAdministrator(user);//被浏览用户是否为超级管理员 ViewData["isRequestFollow"] = !followService.IsFollowed(user.UserId, currentUser.UserId); //是否需要求关注 ViewData["isSameUser"] = isSameUser; ViewData["isFollowed"] = isFollowed; ViewData["isQuietly"] = isQuietly; } return View(user); }