Exemple #1
0
        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.");
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
            });
        }
Exemple #5
0
        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);
        }