Example #1
0
        /// <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);
        }