public async Task <bool> Authenticate(LoginPageModel login)
        {
            ValidateLogin(login);
            var tokenService = new TokenRest();
            var token        = await tokenService.Login(login);

            if (token == null)
            {
                throw new Exception("Usuário ou Senha incorreta");
            }

            var userService = new UserRest();
            var userVm      = await userService.GetInformationAsync(token.AccessToken);

            if (userVm == null)
            {
                throw new Exception("Usuário ou Senha incorreta");
            }

            var userToken = new UserTokenVm
            {
                Token = token,
                User  = userVm.Value
            };

            Login(userToken);
            return(true);
        }
Example #2
0
        public UserTokenVm Authenticate(string username, string password)
        {
            var user = _users.SingleOrDefault(x => x.Username == username && x.Password == password);

            // return null if user not found
            if (user == null)
            {
                return(null);
            }

            var userTokenVm = new UserTokenVm(user);

            // authentication successful so generate jwt token
            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.UTF8.GetBytes(_appSettings.JwtSecret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            userTokenVm.Token = tokenHandler.WriteToken(token);

            return(userTokenVm.WithoutPassword());
        }
        public void Login(UserTokenVm userToken)
        {
            Logout();
            ApplicationManager <UserTokenVm> .AddOrUpdate("userToken", userToken);

            //_repo.Insert(user);
        }
        public async Task <CustomReturn <User> > Register(RegisterPageModel register)
        {
            if (string.IsNullOrWhiteSpace(register.FirstName))
            {
                throw new Exception("Campo Nome é obrigatório");
            }
            if (string.IsNullOrWhiteSpace(register.LastName))
            {
                throw new Exception("Campo Sobrenome é obrigatório");
            }
            if (string.IsNullOrWhiteSpace(register.Telephone) || string.IsNullOrWhiteSpace(register.Telephone))
            {
                throw new Exception("Informe pelo menos um número de contato");
            }

            if (!PhoneNumberValidatorBehavior.IsValidPhoneNumber(register.Telephone))
            {
                throw new Exception("Campo Telefone é inválido");
            }
            if (!PhoneNumberValidatorBehavior.IsValidPhoneNumber(register.CellPhone))
            {
                throw new Exception("Campo Celular é inválido");
            }

            if (string.IsNullOrWhiteSpace(register.Cpf))
            {
                throw new Exception("Campo CPF é obrigatório");
            }
            if (!CpfValidatorBehavior.IsValidCpf(register.Cpf))
            {
                throw new Exception("Campo CPF é inválido");
            }
            if (string.IsNullOrWhiteSpace(register.Email))
            {
                throw new Exception("Campo Email é obrigatório");
            }
            if (!EmailHelper.IsEmail(register.Email))
            {
                throw new Exception("Email inválido");
            }
            if (string.IsNullOrWhiteSpace(register.Password))
            {
                throw new Exception("Campo Senha é obrigatório");
            }
            if (string.IsNullOrWhiteSpace(register.ConfirmPassword))
            {
                throw new Exception("Campo Confirmação de Senha é obrigatório");
            }
            if (!string.Equals(register.Password, register.ConfirmPassword))
            {
                throw new Exception("A senha e confirmação não confere");
            }

            var userRest   = new UserRest();
            var userResult = await userRest.Register(register);

            if (!userResult.IsValid)
            {
                return(userResult);
            }

            var tokenRest = new TokenRest();
            var token     = await tokenRest.Login(new LoginPageModel { UserName = userResult.Value.Cpf, Password = register.Password });

            var userToken = new UserTokenVm
            {
                User  = userResult.Value,
                Token = token
            };

            Login(userToken);

            return(userResult);
        }
Example #5
0
 public static UserTokenVm WithoutPassword(this UserTokenVm userVm)
 {
     userVm.User.Password = null;
     return(userVm);
 }