示例#1
0
        public async Task <IResponseEnvelope <UserToken> > SearchByTokenAsync(string token)
        {
            //Recover user by token
            var userToken = await userTokenRepository.SearchByTokenAsync(token);

            // Verify if the token is valid
            if (userToken == null || !userToken.IsValid)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.UNAUTHORIZED_USER)));
            }
            // Get all tokens from the current user
            var userTokens = await userTokenRepository.SearchTokensByLoginAsync(userToken.Email);

            // Get the last token from the current user
            var lastUserToken = userTokens.OrderByDescending(e => e.CreateDate).FirstOrDefault();

            if (lastUserToken == null ||
                lastUserToken.Token != token)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.UNAUTHORIZED_USER)));
            }

            if (DateTime.Now.Subtract(lastUserToken.ModifyDate).TotalMinutes > 3)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.INVALID_TOKEN)));
            }

            lastUserToken.ModifyDate = DateTime.Now;
            await userTokenRepository.UpdateTokenAsync(lastUserToken);

            return(ResponseEnvelope.CreateResponseEnvelope(userToken));
        }
示例#2
0
        public async Task <IResponseEnvelope <UserToken> > AuthenticateAsync(string login, string senha)
        {
            if (login == null || senha == null)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.MISSING_FIELDS)));
            }
            var userCredentials = await userTokenRepository.SearchAsync(login);

            if (userCredentials == null || userCredentials.Password != securityHelper.SHA256(senha))
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.INVALID_LOGIN)));
            }

            var userToken = new UserToken
            {
                CreateDate = DateTime.Now,
                ModifyDate = DateTime.Now,
                IsValid    = true,
                UserId     = userCredentials.Id,
                Token      = securityHelper.GenerateUniqueToken(),
                Email      = userCredentials.Email
            };

            await userTokenRepository.DeleteByEmailAsync(login);

            await userTokenRepository.InsertToken(userToken);

            return(ResponseEnvelope.CreateResponseEnvelope(userToken));
        }
        public async Task <IResponseEnvelope <User> > SearchByIdAsync(int usuarioId)
        {
            User usuario = await userRepository.SearchByIdAsync(usuarioId);

            List <Phone> phones = (await phoneRepository.SearchByUserIdAsync(usuarioId)).ToList();

            usuario.Phones = phones;
            UserToken userToken = (await userTokenRepository.SearchTokensByLoginAsync(usuario.Email)).FirstOrDefault();

            usuario.Last_login = userToken.ModifyDate;
            return(ResponseEnvelope.CreateResponseEnvelope(usuario));
        }
示例#4
0
        public async Task <IResponseEnvelope> InvalidateToken(string token)
        {
            var userToken = await userTokenRepository.SearchByTokenAsync(token);

            if (userToken == null || !userToken.IsValid)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope <UserToken>(ValidationMessageHelper.CreateErrorMessage(ValidationMessages.INVALID_TOKEN)));
            }

            userToken.IsValid    = false;
            userToken.ModifyDate = DateTime.Now;

            await userTokenRepository.UpdateTokenAsync(userToken);

            return(ResponseEnvelope.CreateResponseEnvelope());
        }
        public async Task <IResponseEnvelope> InsertAsync(User user)
        {
            //Verify if already exists
            var u = await userRepository.SearchByEmailAsync(user.Email);

            if (u != null)
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope(ValidationMessageHelper.Create(ValidationMessages.EMAIL_EXISTS)));
            }
            if (!IsUserFieldsValid(user))
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope(ValidationMessageHelper.Create(ValidationMessages.INVALID_FIELDS)));
            }
            ;
            if (!IsUserFieldsFilled(user))
            {
                return(ResponseEnvelope.CreateErrorResponseEnvelope(ValidationMessageHelper.Create(ValidationMessages.MISSING_FIELDS)));
            }
            user.Password = securityHelper.SHA256(user.Password);
            await userRepository.InsertAsync(user);

            return(ResponseEnvelope.CreateResponseEnvelope());
        }
        public async Task <IResponseEnvelope <IEnumerable <Phone> > > SearchByUserIdAsync(int userId)
        {
            var phones = await phoneRepository.SearchByUserIdAsync(userId);

            return(ResponseEnvelope.CreateResponseEnvelope(phones));
        }
        public async Task <IResponseEnvelope> InsertPhonesAsync(Phone[] phones, int userId)
        {
            await phoneRepository.InsertPhonesAsync(phones, userId);

            return(ResponseEnvelope.CreateResponseEnvelope());
        }
示例#8
0
 public async Task <IResponseEnvelope <User> > SearchUserByLogin(string login)
 {
     return(ResponseEnvelope.CreateResponseEnvelope(await userRepository.SearchUserByLogin(login)));
 }
示例#9
0
 public async Task <IResponseEnvelope <User> > SearchUserById(int userId)
 {
     return(ResponseEnvelope.CreateResponseEnvelope(await userRepository.SearchUserById(userId)));
 }