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));
        }
Пример #2
0
        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));
        }