public virtual async Task <IDataResult <DArchToken> > Verify(VerifyOtpCommand command) { var externalUserId = command.ExternalUserId; var date = DateTime.Now; var login = await _logins.GetAsync(m => m.Provider == command.Provider && m.Code == command.Code && m.ExternalUserId == externalUserId && m.SendDate.AddSeconds(100) > date); if (login == null) { return(new ErrorDataResult <DArchToken>(Messages.InvalidCode)); } var accessToken = await CreateToken(command); if (accessToken.Provider == AuthenticationProviderType.Unknown) { throw new ArgumentException(Messages.TokenProviderException); } login.IsUsed = true; _logins.Update(login); await _logins.SaveChangesAsync(); return(new SuccessDataResult <DArchToken>(accessToken, Messages.SuccessfulLogin)); }
public async Task <IDataResult <AccessToken> > Verify(VerifyOTPCommand request) { var login = await logins.GetAsync(m => m.Code == request.Code && m.ExternalUserId == request.ExternalUserId && m.SendDate.AddHours(24) > DateTime.Now); if (login == null) { return(new ErrorDataResult <AccessToken>(Messages.InvalidCode)); } var accessToken = await CreateToken(login.ExternalUserId); login.IsUsed = true; logins.Update(login); await logins.SaveChangesAsync(); return(new SuccessDataResult <AccessToken>(accessToken, Messages.SuccessfulLogin)); }