Ejemplo n.º 1
0
        public async Task <ResonseWithTokenDTO> SignUp(SignUpViewModel viewModel)
        {
            try
            {
                //verify if exist user with this email
                var userExists = await _userRepository.GetByEmail(viewModel.Email);

                if (userExists != null)
                {
                    return(new ResonseWithTokenDTO(401, viewModel.Email, "", "There is Already a registration for this email.", false));
                }

                if (String.IsNullOrWhiteSpace(viewModel.Password) || viewModel.Password != viewModel.PasswordVerify)
                {
                    throw new InvalidLoginException("Your password is different from the verification password.");
                }

                viewModel.Password       = _cryptographyHelper.Encrypt(viewModel.Password.ToBase64());
                viewModel.PasswordVerify = viewModel.Password;

                var user = _mapper.Map <User>(viewModel);
                user.Validate();

                var userCreated = await _userRepository.Create(user);

                if (userCreated == null)
                {
                    throw new ServiceException("Is was not possible to  register this user");
                }

                //generate JWT
                var response   = _tokenService.GenerateToken(new TokenViewModel(userCreated));
                var acessToken = response.Data;

                var userResponse = new TokenClaimsDTO()
                {
                    Code  = userCreated.Code,
                    Email = userCreated.Email,
                    Name  = userCreated.Name
                };
                return(new ResonseWithTokenDTO(200, new { userResponse }, acessToken, "User created with success!", true));
            }
            catch (InvalidLoginException ex)
            {
                return(new ResonseWithTokenDTO(500, ex, ex.Message, "", false));
            }
            catch (RepositoryException ex)
            {
                return(new ResonseWithTokenDTO(500, ex, "", "An error ocurred.", false));
            }
            catch (ServiceException ex)
            {
                return(new ResonseWithTokenDTO(500, ex, "", "An error ocurred.", false));
            }
            catch (Exception ex)
            {
                return(new ResonseWithTokenDTO(500, ex, "", "An error ocurred.", false));
            }
        }
        public ResponseDTO <TokenClaimsDTO> GetTokenClaims(HttpContext context, bool itemsIgnore = true)
        {
            //var claims = GetClaimsUser(context, itemsIgnore);
            TokenClaimsDTO tokenClaimsDTO = new TokenClaimsDTO();

            //foreach(var claim in claims)
            //{
            //    switch(claim.Type.ToLower())
            //    {
            //        case "code":
            //            tokenClaimsDTO.Code = Convert.ToInt32(claim.Value);
            //            break;

            //        case "name":
            //            tokenClaimsDTO.Name = claim.Value;
            //            break;

            //        case "emailaddress":
            //            tokenClaimsDTO.Email = claim.Value;
            //            break;
            //    }
            //}
            return(new ResponseDTO <TokenClaimsDTO>(tokenClaimsDTO, "", true));
        }