Пример #1
0
        public async Task <IActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                var data = new ChangeCredential
                {
                    UserID        = model.UserId,
                    OldCredential = string.IsNullOrWhiteSpace(model.OldPassword)?
                                    null: CryptoHelper.CreateCredential(model.OldPassword),
                    NewCredential = string.IsNullOrWhiteSpace(model.NewPassword)?
                                    null: CryptoHelper.CreateCredential(model.NewPassword)
                };
                try
                {
                    await _userManager.ChangeCredential(data);

                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", "修改口令没有成功:" + ex.Message);
                }
            }
            return(View(model));
        }
Пример #2
0
        async Task CreateNewUserAsync()
        {
            Random r       = new Random();
            User   newUser = new User()
            {
                ActiveStatus = true,
                Login        = "******" + r.Next(10000),
                Name         = "CH" + r.Next(10000),
                Role         = (int)RoleEnum.HumanResourceAdmin
            };

            ApiResult <int> apiResult = await _connector.PostAsync <User, int>("api/User/SaveUser", newUser);

            if (apiResult.IsSuccess)
            {
                Console.WriteLine("Create a new user: id=" + apiResult.GetData().ToString());
                //change credential
                ChangeCredential changeCredential = new ChangeCredential()
                {
                    UserID        = apiResult.GetData(),
                    OldCredential = string.Empty,
                    NewCredential = CryptoHelper.CreateCredential("P@55w0rd")
                };

                ApiResult <bool> setPwdResult = await _connector.PostAsync <ChangeCredential, bool>("api/User/ChangeCredential", changeCredential);

                if (setPwdResult.IsSuccess && setPwdResult.GetData())
                {
                    Console.WriteLine("the password for this user has been set.");
                }
                else
                {
                    Console.WriteLine("set password failed.");
                }
            }
            else
            {
                Console.WriteLine("Create new user failed, err=" + apiResult.Message);
            }
        }
Пример #3
0
        public async Task <ActionResult <ApiResult <bool> > > ChangeCredential()
        {
            using StreamReader sr = new StreamReader(Request.Body);
            try
            {
                ChangeCredential changeCredential = SerializationHelper.JsonDeserialize <ChangeCredential>(
                    await sr.ReadToEndAsync());

                DataTable dataTable = await Connector.ExecuteSqlQueryTable(
                    "SELECT [Password] FROM [tb_user] WHERE [UserID]=@userId",
                    new SqlParameter("@userId", changeCredential.UserID));

                if (dataTable == null || dataTable.Rows.Count == 0)
                {
                    throw new Exception("没有找到用户。");
                }
                string oldCredential = Convert.ToString(dataTable.Rows[0]["Password"]);
                if (string.IsNullOrEmpty(oldCredential) ||
                    oldCredential.Equals(changeCredential.OldCredential))
                {
                    //用户当前口令为空白,或者输入旧口令一致,允许修改
                    await Connector.ExecuteSqlNonQuery(
                        "UPDATE [tb_user] SET [Password]=@password WHERE [UserID]=@userId",
                        new SqlParameter("@password", changeCredential.NewCredential),
                        new SqlParameter("@userId", changeCredential.UserID));

                    return(Success(true));
                }
                else
                {
                    throw new Exception("提交的原始口令不相符");
                }
            }
            catch (Exception ex)
            {
                return(Error <bool>(ex.Message));
            }
        }
        public async Task <GenericResponse> Put(ChangeCredential changeCredential)
        {
            UserService userService = new UserService(_iconfiguration, _unicastEmailSender);

            try
            {
                var result = await userService.ChangePassword(changeCredential.loginId, changeCredential.newPassword, changeCredential.oldpassword);

                GenericResponse genericResponse = new GenericResponse();
                genericResponse.status  = "success";
                genericResponse.Message = result;

                return(genericResponse);
            }
            catch (Exception ex)
            {
                var error = new HttpResponseMessage(HttpStatusCode.InternalServerError)
                {
                    Content = new StringContent(ex.Message)
                };
                throw new System.Web.Http.HttpResponseException(error);
            }
        }
Пример #5
0
 public async Task <bool> ChangeCredential(ChangeCredential credential)
 {
     return(await _connector.HttpPost <ChangeCredential, bool>(ROUTE_CHANGE_CREDENTIAL, credential));
 }