File was renamed from FlexJobApi.User.Application/Auths/Commands/PasswordLoginCommandHandler.cs |
| | |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace FlexJobApi.User.Application |
| | | namespace FlexJobApi.UserServer.Application |
| | | { |
| | | /// <summary> |
| | | /// 密码登录 |
| | | /// </summary> |
| | | public class PasswordLoginCommandHandler( |
| | | IRepository<UserAuth> userAuthRep, |
| | | IRepository<UserInfo> userInfoRep) |
| | | IRepository<User> userInfoRep) |
| | | : IRequestHandler<PasswordLoginCommand, PasswordLoginCommandCallback> |
| | | { |
| | | private readonly IRepository<UserAuth> userAuthRep = userAuthRep; |
| | | private readonly IRepository<UserInfo> userInfoRep = userInfoRep; |
| | | private readonly IRepository<User> userInfoRep = userInfoRep; |
| | | |
| | | /// <inheritdoc/> |
| | | public async Task<PasswordLoginCommandCallback> Handle(PasswordLoginCommand request, CancellationToken cancellationToken) |
| | | { |
| | | var userInfo = await userInfoRep.AsQueryable().AsNoTracking() |
| | | .Include(it => it.UserAuth) |
| | | .Where(it => it.UserAuth.UserName == request.UserName && it.Type == request.Type) |
| | | var user = await userInfoRep.AsQueryable().AsNoTracking() |
| | | .Where(it => it.UserName == request.UserName && it.Type == request.Type) |
| | | .Select(it => new |
| | | { |
| | | it.Id, |
| | | it.Avatar, |
| | | it.Level, |
| | | it.EnterpriseId, |
| | | it.UserAuth.Name, |
| | | it.UserAuth.UserName, |
| | | it.UserAuth.PhoneNumber, |
| | | it.UserAuth.Password |
| | | it.Name, |
| | | it.UserName, |
| | | it.PhoneNumber, |
| | | it.Password, |
| | | it.Status |
| | | }) |
| | | .FirstOrDefaultAsync(cancellationToken); |
| | | if (userInfo == null |
| | | || !PBKDF2Encryption.Compare(request.Password, userInfo.Password)) |
| | | if (user == null |
| | | || !PBKDF2Encryption.Compare(request.Password, user.Password)) |
| | | throw Oops.Oh(EnumUserErrorCodeType.u1000); |
| | | |
| | | if (user.Status == EnumUserStatus.Disabled) |
| | | throw Oops.Oh(EnumUserErrorCodeType.u1001); |
| | | var logier = new CurrentLogier |
| | | { |
| | | UserInfoId = userInfo.Id, |
| | | Avatar = userInfo.Avatar, |
| | | Name = userInfo.Name, |
| | | UserName = userInfo.UserName, |
| | | PhoneNumber = userInfo.PhoneNumber, |
| | | Level = userInfo.Level, |
| | | Id = user.Id, |
| | | Avatar = user.Avatar, |
| | | Name = user.Name, |
| | | UserName = user.UserName, |
| | | PhoneNumber = user.PhoneNumber, |
| | | Level = user.Level, |
| | | Type = request.Type, |
| | | ClientType = request.ClientType, |
| | | EnterpriseId = userInfo.EnterpriseId, |
| | | EnterpriseId = user.EnterpriseId, |
| | | }; |
| | | JwtUtils.GenerateToken(logier); |
| | | |