コード例 #1
0
        public async Task <IActionResult> My(EditViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            IdentityResult result = new IdentityResult();

            if (ModelState.IsValid)
            {
                var id = (int.Parse)(HttpContext.User.Claims.FirstOrDefault(c => c.Type == "sub")?.Value);
                if (id <= 0)
                {
                    return(NotFound());
                }

                // id为当前登录人
                if (model.Id == id.ToString())
                {
                    var userItem = _userManager.FindByIdAsync(model.Id).Result;
                    if (userItem != null)
                    {
                        var oldName  = userItem.LoginName;
                        var oldEmail = userItem.Email;

                        userItem.UserName       = model.LoginName;
                        userItem.LoginName      = model.UserName;
                        userItem.Email          = model.Email;
                        userItem.RealName       = model.UserName;
                        userItem.FirstQuestion  = model.FirstQuestion;
                        userItem.SecondQuestion = model.SecondQuestion;


                        result = await _userManager.UpdateAsync(userItem);

                        if (result.Succeeded)
                        {
                            var removeClaimsIdRst = await _userManager.RemoveClaimsAsync(userItem,
                                                                                         new Claim[] {
                                new Claim(JwtClaimTypes.Name, oldName),
                                new Claim(JwtClaimTypes.Email, oldEmail),
                            });

                            if (removeClaimsIdRst.Succeeded)
                            {
                                var addClaimsIdRst = await _userManager.AddClaimsAsync(userItem,
                                                                                       new Claim[] {
                                    new Claim(JwtClaimTypes.Name, userItem.LoginName),
                                    new Claim(JwtClaimTypes.Email, userItem.Email),
                                });

                                if (addClaimsIdRst.Succeeded)
                                {
                                    return(RedirectToLocal(returnUrl));
                                }
                                else
                                {
                                    AddErrors(addClaimsIdRst);
                                }
                            }
                            else
                            {
                                AddErrors(removeClaimsIdRst);
                            }
                        }
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, $"{userItem?.UserName} no exist!");
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, $"您无权修改该数据!");
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #2
0
        public async Task <IActionResult> Edit(EditViewModel model, string id, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            IdentityResult result = new IdentityResult();

            if (ModelState.IsValid)
            {
                var userItem = _userManager.FindByIdAsync(model.Id).Result;

                if (userItem != null)
                {
                    var oldName  = userItem.LoginName;
                    var oldEmail = userItem.Email;

                    userItem.UserName  = model.LoginName;
                    userItem.LoginName = model.UserName;
                    userItem.Email     = model.Email;
                    userItem.RealName  = model.UserName;


                    result = await _userManager.UpdateAsync(userItem);

                    if (result.Succeeded)
                    {
                        var removeClaimsIdRst = await _userManager.RemoveClaimsAsync(userItem,
                                                                                     new Claim[] {
                            new Claim(JwtClaimTypes.Name, oldName),
                            new Claim(JwtClaimTypes.Email, oldEmail),
                        });

                        if (removeClaimsIdRst.Succeeded)
                        {
                            var addClaimsIdRst = await _userManager.AddClaimsAsync(userItem,
                                                                                   new Claim[] {
                                new Claim(JwtClaimTypes.Name, userItem.LoginName),
                                new Claim(JwtClaimTypes.Email, userItem.Email),
                            });

                            if (addClaimsIdRst.Succeeded)
                            {
                                return(RedirectToLocal(returnUrl));
                            }
                            else
                            {
                                AddErrors(addClaimsIdRst);
                            }
                        }
                        else
                        {
                            AddErrors(removeClaimsIdRst);
                        }
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, $"{userItem?.UserName} no exist!");
                }

                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }