Exemple #1
0
        public async Task <TokenInfo> GetToken(GenericUser user)
        {
            var refreshToken = new RefreshTempUser()
            {
                PhoneNumber = user.PhoneNumber
            };
            var resValidate = await Post <SimpleSuccess>($"{Constants.V1Prefix}/{Constants.TokenEndpoint}/refresh", refreshToken);

            if (resValidate.Result == null || resValidate.Result.Success == false)
            {
                throw new Exception(resValidate.Meta.Message);
            }
            var checkToken = new TokenCheck()
            {
                PhoneNumber = user.PhoneNumber,
                Token       = FakeToken
            };

            var resRefreshToken = await Post <TokenInfo>($"{Constants.V1Prefix}/{Constants.TokenEndpoint}/validate", checkToken);

            if (resRefreshToken.Result == null)
            {
                throw new Exception(resValidate.Meta.Message);
            }
            return(resRefreshToken.Result);
        }
Exemple #2
0
 public bool AddTokenCheck(TokenCheck tokenCheck)
 {
     if (!TokenLedger)
     {
         return(false);
     }
     tokenCheck.tokensAmount = (int)AddTokensAmount((ulong)tokenCheck.tokensAmount);
     if (tokenCheck.tokensAmount == 0)
     {
         tokenCheck.Consume();
         return(true);
     }
     return(false);
 }
Exemple #3
0
        public TempUser  Process(ITokenMemoryCache memoryCache, TokenCheck model)
        {
            var savedUser = memoryCache.GetForChallenge(model);


            if (savedUser == null)
            {
                throw new CheckValidationTokenException("Customer never recieved a challenge token");
            }

            if (!memoryCache.IsEqual(savedUser, model))
            {
                throw new CheckValidationTokenException("Customer entered in wrong challenge token");
            }
            return(savedUser);
        }
        public async Task <IActionResult> Validate([FromBody] TokenCheck model)
        {
            // Get our Saved User from Memory
            var savedUser = new CheckValidationTokenEvent().Process(_memoryCache, model);

            var validatedUser = _context.Users.FirstOrDefault(x => x.PhoneNumber == savedUser.PhoneNumber);

            if (validatedUser == null)
            {
                // Our response is vague to avoid leaking information
                return(ResponseShell.Error("Invalid"));
            }

            validatedUser.LastLogin = DateTime.Now;
            _context.SaveChanges();

            // Get our token
            var token = await _tokenService.GetToken(validatedUser);

            // All good, lets give out our token
            return(ResponseShell.Ok(token));
        }
 public TempUser GetForChallenge(TokenCheck model)
 {
     return(_cache.Get <TempUser>(model.Token));
 }
 public bool IsEqual(TempUser a, TokenCheck token)
 {
     return(a.Token == token.Token);
 }