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); }
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); }
public static UserTokenVm WithoutPassword(this UserTokenVm userVm) { userVm.User.Password = null; return(userVm); }