Example #1
0
        public static bool ValidaToken(string tokenPass, int Acao, int idAux)
        {
            Token token = TokenDAO.GetAll().Where(x => x.GuidSec == tokenPass).FirstOrDefault();

            try
            {
                if (token != null || token.ID != 0)
                {
                    if (token.DataExpiracao > DateTime.Now)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            }catch (Exception e)
            {
                return(false);
            }
        }
Example #2
0
        public ActionResult RequestPassword([FromBody] int id)
        {
            try
            {
                User user = null;

                using (var userDAO = new UserDAO())
                    user = userDAO.Get(id);

                Token token     = new Token(user);
                var   emurbMail = new SystemMail(_smtp, _port, _login, _password);

                if (user != null && emurbMail.SendNewPasswordMail(Request, token))
                {
                    using (var tokenDAO = new TokenDAO())
                        tokenDAO.Add(token);

                    return(StatusCode(200, new { Message = "Enviado" }));
                }

                return(StatusCode(424, new { Message = "Erro ao gerar Token" }));
            }

            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = "Houve um erro ao enviar o token para o email deste usuário" }));
            }
        }
Example #3
0
        public async Task GetExpired_Should_Succeed()
        {
            var expiredTokenA = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MinValue);

            var expiredTokenB = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MinValue);

            var expiredTokenC = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MinValue);

            var expiredTokenD = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MinValue);

            var notExpiredTokenA = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MaxValue);

            var notExpiredTokenB = await TokenDAO.Create(DbConnection, "description", DateTimeOffset.MaxValue);

            var expiredTokens = new List <string> {
                expiredTokenA, expiredTokenB, expiredTokenC, expiredTokenD
            };

            var expiredPage1 = await TokenDAO.GetExpired(DbConnection, "0", 3);

            Assert.Equal(expiredPage1.Count, 3);
            foreach (var expiredToken in expiredPage1)
            {
                Assert.Contains(expiredToken, expiredTokens);
            }

            var expiredPage2 = await TokenDAO.GetExpired(DbConnection, expiredPage1[2], 3);

            Assert.Equal(expiredPage2.Count, 1);
            Assert.Contains(expiredPage2[0], expiredTokens);
        }
Example #4
0
        public ActionResult SetPassword(string token, [FromBody] string password)
        {
            try
            {
                using (var tokenDAO = new TokenDAO())
                {
                    var validToken = tokenDAO.GetByHash(token);

                    if (validToken != null && !string.IsNullOrEmpty(password))
                    {
                        using (var userDAO = new UserDAO())
                            if (userDAO.SetPassword(validToken.User.Id, password))
                            {
                                tokenDAO.Remove(validToken.Code);
                            }

                        return(StatusCode(202, new { Message = "Senha definida" }));
                    }

                    return(StatusCode(406, new { Message = "Token inválido" }));
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = "Falha ao definir senha" }));
            }
        }
        public Token getByID(String token_id)
        {
            Token token = new TokenDAO().getByToken(token_id);          //throws Throws NoRecordException

            //customer opvragen en in token plaatsen
            token.customer = new CustomerService().getByID(token.customer.customer_id.ToString());      //throws Throws NoRecordException || DALException
            return(token);
        }
Example #6
0
        public IObservable <string> GetExpired()
        {
            var pagingStream = AsyncEnumerable.ToObservable <string, string>(
                "0",
                page => page.Count == 0,
                page => page.Count > 0 ? page[page.Count - 1] : "0",
                async(floor) => await TokenDAO.GetExpired(DbConnection, floor, 500)
                );

            return(pagingStream);
        }
Example #7
0
        public async Task CreateToken_WithExpiration_Should_Succeed()
        {
            DateTimeOffset now   = DateTimeOffset.Now;
            var            token = await TokenDAO.Create(DbConnection, "description", now);

            Assert.NotNull(token);

            var fullToken = await TokenDAO.GetById(DbConnection, token);

            Assert.Equal(token, fullToken.ID);
            Assert.Equal(now.ToUnixTimeMilliseconds(), fullToken.ExpiresAt);
        }
Example #8
0
        public async Task CreateToken_WithNullExpiration_Should_Succeed()
        {
            var token = await TokenDAO.Create(DbConnection, "description", null);

            Assert.NotNull(token);

            var fullToken = await TokenDAO.GetById(DbConnection, token);

            Assert.Equal(token, fullToken.ID);
            Assert.NotNull(fullToken.CreatedAt);
            Assert.Null(fullToken.ExpiresAt);
            Assert.Null(fullToken.RevokedAt);
        }
Example #9
0
        public ActionResult GetToken(string token)
        {
            try
            {
                Token validToken;

                using (var tokenDAO = new TokenDAO())
                    validToken = tokenDAO.GetByHash(token);

                return((validToken != null) ? StatusCode(200, validToken) : StatusCode(406, new { Message = "Token inválido" }));
            }
            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = "Falha ao obter token" }));
            }
        }
Example #10
0
        public async Task <bool> Exists(string token)
        {
            var found = await TokenDAO.GetById(DbConnection, token);

            if (found == null)
            {
                return(false);
            }

            if (found.ExpiresAt != null && found.ExpiresAt < DateTimeOffset.Now.ToUnixTimeMilliseconds())
            {
                return(false);
            }

            return(true);
        }
Example #11
0
        public async Task <string> Lookup(string token)
        {
            var found = await TokenDAO.GetById(DbConnection, token);

            if (found == null)
            {
                return(string.Empty);
            }

            if (found.ExpiresAt != null && found.ExpiresAt < DateTimeOffset.Now.ToUnixTimeMilliseconds())
            {
                return(string.Empty);
            }

            return(found.ID);
        }
Example #12
0
        public async Task InvalidateToken_Should_Succeed()
        {
            var token = await TokenDAO.Create(DbConnection, "description", null);

            Assert.NotNull(token);

            var fullToken = await TokenDAO.GetById(DbConnection, token);

            Assert.Null(fullToken.ExpiresAt);

            await TokenDAO.Invalidate(DbConnection, token);

            fullToken = await TokenDAO.GetById(DbConnection, token);

            Assert.NotNull(fullToken.RevokedAt);
        }
Example #13
0
        public ActionResult Add([FromBody] User user)
        {
            try
            {
                User existingUser = null;

                using (var userDAO = new UserDAO())
                {
                    existingUser = userDAO.GetByEmail(user.Email);

                    if (existingUser != null)
                    {
                        user.Id = existingUser.Id;
                    }

                    else
                    {
                        user.Id = userDAO.Add(user);
                    }
                }

                if (user.Id != 0)
                {
                    Token token     = new Token(user);
                    var   emurbMail = new SystemMail(_smtp, _port, _login, _password);

                    if (emurbMail.SendNewPasswordMail(Request, token))
                    {
                        using (var tokenDAO = new TokenDAO())
                            tokenDAO.Add(token);

                        return(StatusCode(201, new {
                            Message = (existingUser != null) ? "Usuário já cadastrado, email reenviado com sucesso" : "Adicionado com sucesso"
                        }));
                    }

                    return(StatusCode(424, new { Message = "Falha ao enviar email" }));
                }

                return(StatusCode(304, new { Message = "Não adicionado" }));
            }

            catch (Exception ex)
            {
                return(StatusCode(500, new { Message = "Falha" }));
            }
        }
Example #14
0
        public void Run()
        {
            var expiredIds    = new List <string>(TokenStore.GetExpired().ToEnumerable());
            var expiredTokens = TokenDAO.GetByIdBulk(connection, expiredIds).Result;

            long expirationCutoff = new DateTimeOffset(DateTime.UtcNow, new TimeSpan(-EXPIRATION_WINDOW_DAYS, 0, 0)).ToUnixTimeMilliseconds();

            foreach (var expiredToken in expiredTokens)
            {
                if (expiredToken.ExpiresAt > expirationCutoff)
                {
                    continue;
                }

                Log.Info($"Removing expired token { expiredToken.ID }");
                TokenDAO.Delete(connection, expiredToken.ID).Wait();
            }
        }
Example #15
0
        /// <summary>
        /// 通过令牌获取用户,需要验证令牌的有效性
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public User ValidToken(string token)
        {
            User user = MemCache.Get(token) as User;

            if (null != user)
            {
                return(user);
            }
            TokenDAO td = new TokenDAO();
            Token    t  = td.GetByAccessToken(token);

            if (null == t)
            {
                throw new Exception("数据令牌无效");
            }
            if (td.IsExpired(t))
            {
                throw new Exception("数据令牌已过期");
            }
            return(t.User);
        }
Example #16
0
        public static string GerateTokenValido(Token guidpassado)
        {
            string GuidGerado = "";
            bool   seguranca  = false;

            GuidGerado          = Guid.NewGuid().ToString();
            guidpassado.GuidSec = GuidGerado;

            //Token token = TokenDAO.GetAll().Where(x => x.GuidSec == guid).FirstOrDefault();
            while (seguranca)
            {
                Token token = TokenDAO.GetAll().Where(x => x.GuidSec == GuidGerado).FirstOrDefault();
                if (token != null || token.ID != 0)
                {
                    GuidGerado = Guid.NewGuid().ToString();
                }
                else
                {
                    break;
                }
            }



            guidpassado.DataCriacao   = DateTime.Now;
            guidpassado.DateAlteracao = DateTime.Now;
            guidpassado.DataExpiracao = DateTime.Now.AddHours(2);

            if (guidpassado.idUsuario == 0 || guidpassado.idCliente == 0)
            {
                return("Não foi possivel gerar um Token valido");
            }
            else
            {
                TokenDAO.Save(guidpassado);
                return(GuidGerado);
            }
        }
Example #17
0
 public List <Token_Web> ObterToken()
 {
     return(TokenDAO.ObterToken());
 }
Example #18
0
 public async Task <string> Create(string description, DateTimeOffset?expiration)
 {
     return(await TokenDAO.Create(DbConnection, description, expiration));
 }
Example #19
0
 public async Task Invalidate(string token)
 {
     await TokenDAO.Invalidate(DbConnection, token);
 }