|
|
|
@ -1,6 +1,8 @@
|
|
|
|
|
using Application.Domain.Entities;
|
|
|
|
|
using Application.Models;
|
|
|
|
|
using Infrastructure.Data;
|
|
|
|
|
using Infrastructure.Extensions;
|
|
|
|
|
using Infrastructure.Security;
|
|
|
|
|
using Microsoft.AspNetCore.Authorization;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
@ -15,10 +17,13 @@ namespace UserCenter.Controllers
|
|
|
|
|
public class UserController : ControllerBase
|
|
|
|
|
{
|
|
|
|
|
private readonly IRepository<User> _userRepo;
|
|
|
|
|
private readonly IEncryptionService _encryptionService;
|
|
|
|
|
|
|
|
|
|
public UserController(IRepository<User> userRepo)
|
|
|
|
|
public UserController(IRepository<User> userRepo,
|
|
|
|
|
IEncryptionService encryptionService)
|
|
|
|
|
{
|
|
|
|
|
this._userRepo = userRepo;
|
|
|
|
|
this._encryptionService = encryptionService;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpGet]
|
|
|
|
@ -54,8 +59,7 @@ namespace UserCenter.Controllers
|
|
|
|
|
.FirstOrDefault();
|
|
|
|
|
if (model == null)
|
|
|
|
|
{
|
|
|
|
|
ModelState.AddModelError("", "用户不存在");
|
|
|
|
|
return BadRequest(ModelState);
|
|
|
|
|
return BadRequest(ModelState.AddModelError("用户不存在"));
|
|
|
|
|
}
|
|
|
|
|
return Ok(model);
|
|
|
|
|
}
|
|
|
|
@ -65,5 +69,36 @@ namespace UserCenter.Controllers
|
|
|
|
|
return Problem(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
[Authorize]
|
|
|
|
|
public ActionResult ChangePassword([FromBody]ChangePasswordModel model)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var userName = User.Identity.Name;
|
|
|
|
|
var user = this._userRepo.ReadOnlyTable().FirstOrDefault(o => o.UserName == userName);
|
|
|
|
|
if (user == null)
|
|
|
|
|
{
|
|
|
|
|
return BadRequest(ModelState.AddModelError("用户不存在"));
|
|
|
|
|
}
|
|
|
|
|
if (this._encryptionService.CreatePasswordHash(model.OldPassword, user.SecurityStamp) != user.PasswordHash)
|
|
|
|
|
{
|
|
|
|
|
return BadRequest(ModelState.AddModelError(o => model.OldPassword, "当前密码输入错误", 1));
|
|
|
|
|
}
|
|
|
|
|
if (model.OldPassword != model.ConfirmNewPassword)
|
|
|
|
|
{
|
|
|
|
|
return BadRequest(ModelState.AddModelError(o => model.OldPassword, "新密码确认输入错误", 2));
|
|
|
|
|
}
|
|
|
|
|
user.PasswordHash = this._encryptionService.CreatePasswordHash(model.NewPassword, user.SecurityStamp);
|
|
|
|
|
_userRepo.SaveChanges();
|
|
|
|
|
return Ok("密码修改成功");
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
ex.PrintStack();
|
|
|
|
|
return Problem(ex.Message);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|