public async Task <JwtResult> LogGebruikerIn(LogGebruikerInCommand logGebruikerInCommand) { var creds = logGebruikerInCommand.Credentials; var user = await _userManager.Users.SingleOrDefaultAsync(usr => usr.UserName == creds.UserName); if (user == null) { _logger.LogInformation("Failed login for {user}", creds.UserName); throw new LoginFailedException("Wrong username or password."); } var result = await _signinManager.CheckPasswordSignInAsync(user, creds.Password, false); if (result.Succeeded) { var roles = await _userManager.GetRolesAsync(user); return(new JwtResult() { Token = JwtUtil.Generate(user, roles) }); } else { _logger.LogInformation("Failed login for {user}", creds.UserName); throw new LoginFailedException("Wrong username or password."); } }
public async Task Jwt_Contains_CorrectId() { AccountCommandListener listener = new AccountCommandListener(_signInManager, _userManager); var registerCommand = new RegistreerGebruikerCommand() { NewUser = new Account() { UserName = "******", Password = "******", Role = "Klant" } }; // maak user aan string id = await listener.RegistreerGebruiker(registerCommand); var loginCommand = new LogGebruikerInCommand() { Credentials = new Credentials() { UserName = "******", Password = "******" } }; var result = await listener.LogGebruikerIn(loginCommand); var jwtHandler = new JwtSecurityTokenHandler(); bool validToken = jwtHandler.CanReadToken(result.Token); Assert.IsTrue(validToken); var token = jwtHandler.ReadJwtToken(result.Token); var idFromClaim = token.Claims.Where(c => c.Type == "UserId" && c.Value == id).SingleOrDefault(); Assert.AreEqual(id, idFromClaim.Value); }
public async Task Jwt_Contains_CorrectRoles() { AccountCommandListener listener = new AccountCommandListener(_signInManager, _userManager); var registerCommand = new RegistreerGebruikerCommand() { NewUser = new Account() { UserName = "******", Password = "******", Role = "Klant" } }; // maak user aan await listener.RegistreerGebruiker(registerCommand); var loginCommand = new LogGebruikerInCommand() { Credentials = new Credentials() { UserName = "******", Password = "******" } }; var result = await listener.LogGebruikerIn(loginCommand); var jwtHandler = new JwtSecurityTokenHandler(); bool validToken = jwtHandler.CanReadToken(result.Token); Assert.IsTrue(validToken); var token = jwtHandler.ReadJwtToken(result.Token); var role = token.Claims.Where(c => c.Type == ClaimTypes.Role && c.Value == "Klant"); Assert.IsNotNull(role); }
public async Task ThrowException_WhenWrongPassword() { AccountCommandListener listener = new AccountCommandListener(_signInManager, _userManager); var registerCommand = new RegistreerGebruikerCommand() { NewUser = new Account() { UserName = "******", Password = "******", Role = "Klant" } }; // maak user aan await listener.RegistreerGebruiker(registerCommand); var loginCommand = new LogGebruikerInCommand() { Credentials = new Credentials() { UserName = "******", Password = "******" } }; await Assert.ThrowsExceptionAsync<LoginFailedException>(async () => { await listener.LogGebruikerIn(loginCommand); }); }
public async Task GeneratesJwt_WhenSuccesfullLogin() { AccountCommandListener listener = new AccountCommandListener(_signInManager, _userManager); var registerCommand = new RegistreerGebruikerCommand() { NewUser = new Account() { UserName = "******", Password = "******", Role = "Klant" } }; // maak user aan await listener.RegistreerGebruiker(registerCommand); var loginCommand = new LogGebruikerInCommand() { Credentials = new Credentials() { UserName = "******", Password = "******" } }; var result = await listener.LogGebruikerIn(loginCommand); Assert.IsNotNull(result); }