Example #1
0
        public ActionResult SystemRolesMain(DataAction ActionType, string guid, string selectEmail, string selectUserName, int pages = 1)
        {
            AspNetUsersDetailViewModel data = new AspNetUsersDetailViewModel();

            if (ActionType == DataAction.Update)
            {
                data = _UserService.ReturnAspNetUsersDetail(ActionType, guid);
            }

            #region KeepSelectBlock

            TempData["Actions"] = ActionType;
            pages = pages == 0 ? 1 : pages;
            TempData["SystemRolesSelect"] = new SystemRolesViewModel()
            {
                Header = new SystemRolesListHeaderViewModel()
                {
                    Email    = selectEmail,
                    UserName = selectUserName
                },
                page = pages
            };

            #endregion KeepSelectBlock

            return(View(data));
        }
Example #2
0
        public void AspNetUsersDetailViewModelUpdate(AspNetUsersDetailViewModel viewModel, string CreateUser)
        {
            AspNetUsers AspNetUsers = new AspNetUsers();
            var         mapper      = AutoMapperConfig.InitializeAutoMapper().CreateMapper();

            AspNetUsers = mapper.Map <AspNetUsers>(viewModel);
            _AspNetUsersRep.AspNetUserUpdate(AspNetUsers, CreateUser);
        }
Example #3
0
        public AspNetUsersDetailViewModel ReturnAspNetUsersDetail(DataAction ActionType, string guid)
        {
            AspNetUsersDetailViewModel DetailViewModel = new AspNetUsersDetailViewModel();
            AspNetUsers AspNetUsersViewModel           = GetAspNetUsersById(guid);
            var         mapper = AutoMapperConfig.InitializeAutoMapper().CreateMapper();

            DetailViewModel = mapper.Map <AspNetUsersDetailViewModel>(AspNetUsersViewModel);
            //DetailViewModel = _aspnetMapping.MapperAspNetUsersDetailViewModel(AspNetUsersViewModel);
            return(DetailViewModel);
        }
Example #4
0
        public async Task <ActionResult> SystemRolesMain(AspNetUsersDetailViewModel AspNetUsersModel, DataAction actions) //, DataAction actions)
                                                                                                                          //(FormCollection AspNetUsersModel,string guid) //,
        {
            bool   boolResult = true;                                                                                     // 取決於導向頁面, True = 返回SystemRoles, False = 停在本頁
            string thisUserID;                                                                                            //暫存 使用者ID
            SystemRolesViewModel searchBlock = (SystemRolesViewModel)TempData["SystemRolesSelect"];

            // KeepSelectBlock
            SystemRolesKeepSelectBlock(searchBlock, actions);

            // STEP 1. 前端驗證是否通過
            if (ModelState.IsValid)
            {
                // STEP 2. 建立容器 user
                var user = new ApplicationUser
                {
                    UserName    = AspNetUsersModel.UserName,
                    Email       = AspNetUsersModel.Email,
                    PhoneNumber = AspNetUsersModel.PhoneNumber,
                    UpdateTime  = AspNetUsersModel.UpdateTime,
                    CreateTime  = AspNetUsersModel.CreateTime,
                    UpdateUser  = SignInManagerId,
                    Status      = true
                };

                if (actions == DataAction.Create)
                {
                    #region STEP 3. 判斷動作, [新增]

                    user.CreateUser        = SignInManagerId;
                    user.Id                = Guid.NewGuid().ToString().ToUpper();
                    _UserService.UserName  = user.UserName;
                    _UserService.UserEmail = user.Email;

                    // STEP 4. 該使用者資訊是否存在資料庫, null才可繼續建立
                    if (_UserService.GetAspNetUserBySelectPramters() == null)
                    {
                        var result = await UserManager.CreateAsync(user, AspNetUsersModel.Password);

                        if (result.Succeeded)
                        {
                            //建立使用者應要把 MenuTree 權限也寫入!
                            _UserService.CreateUserMenuTree(user.Id);
                            TempData["message"] = EnumHelper.GetEnumDescription(DataAction.CreateScuess);
                            thisUserID          = user.Id;
                            // For more information on how to enable account confirmation and password reset please visit https://go.microsoft.com/fwlink/?LinkID=320771
                            // 傳送包含此連結的電子郵件
                            //string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                            //var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                            //await UserManager.SendEmailAsync(user.Id, "確認您的帳戶", "請按一下此連結確認您的帳戶 <a href=\"" + callbackUrl + "\">這裏</a>");
                        }
                        else
                        {
                            // 建立失敗, 回傳錯誤訊息
                            AddErrors(result);
                            boolResult = false;
                        }
                    }
                    else
                    {
                        // 建立失敗, 回傳錯誤訊息
                        CustomerIdentityError(EnumHelper.GetEnumDescription(DataAction.CreateFailReapet));
                        boolResult = false;
                    }

                    #endregion STEP 3. 判斷動作, [新增]
                }
                else if (actions == DataAction.Update)
                {
                    #region STEP 3. 判斷動作, [更新]

                    if (!string.IsNullOrEmpty(AspNetUsersModel.Old_Password) &&
                        !string.IsNullOrEmpty(AspNetUsersModel.Password))
                    {
                        bool passwordIsEdit = false;
                        try
                        {
                            var checkPassword = UserManager.PasswordHasher.
                                                VerifyHashedPassword(AspNetUsersModel.Password, AspNetUsersModel.Old_Password);
                            if (checkPassword != PasswordVerificationResult.Success)
                            {
                                passwordIsEdit = true;
                            }
                        }
                        catch
                        {
                            passwordIsEdit = true;
                        }
                        if (passwordIsEdit)
                        {
                            user.Id = AspNetUsersModel.Id;
                            // 變更密碼
                            var result = await UserManager.
                                         ChangePasswordAsync(user.Id, AspNetUsersModel.Old_Password, AspNetUsersModel.Password);

                            if (result.Succeeded)
                            {
                                await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);
                            }
                            else
                            {
                                // 建立失敗, 回傳錯誤訊息
                                AddErrors(result);
                                boolResult = false;
                            }
                        }
                        else
                        {
                            // 建立失敗, 回傳錯誤訊息
                            CustomerIdentityError(EnumHelper.GetEnumDescription(DataAction.UpdateFail));
                            boolResult = false;
                        }
                    }

                    _UserService.AspNetUsersDetailViewModelUpdate(AspNetUsersModel, SignInManagerId);
                    //可以批次增加同時輸入很多個Table
                    _UserService.Save();
                    TempData["message"] = EnumHelper.GetEnumDescription(DataAction.UpdateScuess);

                    #endregion STEP 3. 判斷動作, [更新]
                }
                else
                {
                    string ErrorMsg = "";
                    foreach (var items in ModelState.Values)
                    {
                        foreach (ModelError Erroritem in items.Errors)
                        {
                            ErrorMsg += Erroritem.ErrorMessage + " ";
                        }
                    }
                    CustomerIdentityError(ErrorMsg);
                    boolResult = false;
                }

                if (boolResult)
                {
                    return(RedirectToAction("SystemRoles", new
                    {
                        ViewModel = searchBlock,
                        pages = searchBlock.page
                    }));
                }
            }
            return(View(AspNetUsersModel));
        }