コード例 #1
0
        /// <summary>
        /// 新建或者编辑用户数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> Edit(Guid id, Guid roleId)
        {
            var user = await _UserManager.FindByIdAsync(id.ToString());

            var boVM = new ApplicationUserForEditVM(user, roleId);

            #region 处理用户归属的用户组的数据
            #region 1.待选择的用户组数据
            //var role = _RoleManager.Roles;
            var roleItems = new List <PlainFacadeItem>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var rItem = new PlainFacadeItem()
                {
                    Id          = item.Id,
                    Name        = item.Name,
                    DisplayName = item.DisplayName,
                    SortCode    = item.SortCode
                };
                roleItems.Add(rItem);
            }
            boVM.RoleItemColection = roleItems;
            #endregion
            #region 2.已经归属的用户组部分
            boVM.RoleItemIdCollection = (
                from roleItem in _RoleManager.Roles
                where roleItem.Users.Select(x => x.UserId).Contains(user.Id)
                select roleItem.Id
                ).ToList();;
            #endregion
            #endregion

            return(PartialView("../../Views/ApplicationOrganization/ApplicationUser/_EditApplicationUser", boVM));
        }
コード例 #2
0
        /// <summary>
        /// 新建或者编辑用户数据
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public async Task <IActionResult> EditApplicationUser(Guid id, Guid roleID)
        {
            var user = await _UserManager.FindByIdAsync(id.ToString());

            var boVM = new ApplicationUserForEditVM(user, roleID);

            #region 处理用户归属的用户组的数据
            #region 1.待选择的用户组数据
            var role      = _RoleManager.Roles;
            var roleItems = new List <PlainFacadeItem>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var rItem = new PlainFacadeItem()
                {
                    ID = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                };
                roleItems.Add(rItem);
            }
            boVM.RoleItemColection = roleItems;
            #endregion
            #region 2.已经归属的用户组部分
            boVM.RoleItemIDCollection = new List <string>();
            foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
            {
                var h = await _UserManager.IsInRoleAsync(user, item.Name);

                if (h)
                {
                    boVM.RoleItemIDCollection.Add(item.Id);
                }
            }
            #endregion
            #endregion

            return(PartialView("../../Views/ApplicationOrganization/ApplicationRoleAndUser/_CreateOrEditForUser", boVM));
        }
コード例 #3
0
        /// <summary>
        /// 保存用户资料
        /// </summary>
        /// <param name="boVM">用户的视图模型</param>
        /// <returns></returns>
        public async Task <IActionResult> SaveEditApplicationUser([Bind("Id,RoleId,IsNew,RoleItemIdCollection,UserName,Name,MobileNumber,EMail,Password,ConfirmPassword,Description")] ApplicationUserForEditVM boVM)
        {
            var validateMessage = new ValidateMessage();

            if (ModelState.IsValid)
            {
                if (boVM.RoleItemIdCollection == null)
                {
                    boVM.RoleItemIdCollection = new List <string>();
                }
                var user = await _UserManager.FindByIdAsync(boVM.Id.ToString());

                #region 1.用户基本资料更新
                user.FirstName       = "";
                user.ChineseFullName = boVM.Name;
                user.Email           = boVM.EMail;
                user.MobileNumber    = boVM.MobileNumber;
                await _UserManager.UpdateAsync(user);

                #endregion

                #region 2.归属角色组的处理
                var roleCollection = _RoleManager.Roles;
                var addRoles       = new List <string>();
                var removeRoles    = new List <string>();
                foreach (var roleItem in roleCollection)
                {
                    // 当前的用户是否归属角色组:roleItem
                    var h = await _UserManager.IsInRoleAsync(user, roleItem.Name);

                    if (!h)
                    {
                        // 不归属,但前端已经选择了相应的角色组,则将当前用户加入相应的角色组。
                        if (boVM.RoleItemIdCollection.Contains(roleItem.Id))
                        {
                            addRoles.Add(roleItem.Name);
                        }
                    }
                    else
                    {
                        // 归属,但前端并未选择相应的角色组,则将当前用户从相关的组中移除。
                        if (!boVM.RoleItemIdCollection.Contains(roleItem.Id))
                        {
                            removeRoles.Add(roleItem.Name);
                        }
                    }
                }
                await _UserManager.AddToRolesAsync(user, addRoles);

                await _UserManager.RemoveFromRolesAsync(user, removeRoles);

                #endregion
                var resultRoleId = "";
                if (boVM.RoleId.ToString() != "00000000-0000-0000-0000-000000000000")
                {
                    resultRoleId = boVM.RoleId.ToString();
                }
                validateMessage.IsOK = true;
                validateMessage.ValidateMessageItems.Add(
                    new ValidateMessageItem
                {
                    IsPropertyName = false,
                    MessageName    = "",
                    Message        = resultRoleId
                });

                return(Json(validateMessage));
            }
            else
            {
                #region 处理用户归属的用户组的数据
                #region 1.待选择的用户组数据
                var user = await _UserManager.FindByIdAsync(boVM.Id.ToString());

                var role      = _RoleManager.Roles;
                var roleItems = new List <PlainFacadeItem>();
                foreach (var item in _RoleManager.Roles.OrderBy(x => x.SortCode))
                {
                    var rItem = new PlainFacadeItem()
                    {
                        Id = item.Id, Name = item.Name, DisplayName = item.DisplayName, SortCode = item.SortCode
                    };
                    roleItems.Add(rItem);
                }
                boVM.RoleItemColection = roleItems;
                #endregion
                #region 2.已经归属的用户组部分
                boVM.RoleItemIdCollection = (
                    from roleItem in _RoleManager.Roles
                    where roleItem.Users.Select(x => x.UserId).Contains(user.Id)
                    select roleItem.Id
                    ).ToList();;

                #endregion
                #endregion

                validateMessage.IsOK = false;
                var errCollection = from errKey in ModelState.Keys
                                    from errMessage in ModelState[errKey].Errors
                                    where ModelState[errKey].Errors.Count > 0
                                    select(new { errKey, errMessage.ErrorMessage });
                foreach (var errItem in errCollection)
                {
                    var vmItem = new ValidateMessageItem()
                    {
                        IsPropertyName = true,
                        MessageName    = errItem.errKey,
                        Message        = errItem.ErrorMessage
                    };
                    validateMessage.ValidateMessageItems.Add(vmItem);
                }
                return(Json(validateMessage));
            }
        }