using Dpz.Core.Service.Mediator.Features.Account.Internal;
using Dpz.Core.Service.Mediator.Features.Account.Queries;
namespace Dpz.Core.Service.Mediator.Features.Security.Queries;
/// <summary>
/// 处理账号密码验证请求
/// </summary>
public class VerifyAccountPasswordHandler(IRepository<User> userRepository, IMediator mediator)
: IRequestHandler<VerifyAccountPasswordRequest, ResponseResult<VmUserInfo?>>
{
/// <summary>
/// 验证账号和 BCrypt 密码,成功时返回用户信息
/// </summary>
public async ValueTask<ResponseResult<VmUserInfo?>> Handle(
VerifyAccountPasswordRequest request,
CancellationToken cancellationToken
)
{
var user = await AccountRepositoryHelper.GetUserAsync(
userRepository,
request.Account,
cancellationToken
);
if (user == null)
{
return ResponseResult<VmUserInfo?>.Fail("用户名或密码错误");
}
if (!AccountSecurityHelper.VerifyPassword(request.Password, user.Password))
{
return ResponseResult<VmUserInfo?>.Fail("用户名或密码错误");
}
var userInfo = await mediator.Send(
new GetUserInfoRequest { Account = request.Account },
cancellationToken
);
return ResponseResult<VmUserInfo?>.Ok(userInfo);
}
}
AI 正在分析代码…
评论加载中...