Example #1
0
        public AuthenticationResult Authenticate(string email, string password)
        {
            var query = new FindUserByEmailQuery(email);
            var user  = _queryExecutor.Execute(query).FirstOrDefault();

            if (user == null)
            {
                return(new AuthenticationResult
                {
                    Success = false,
                    FailureReason = "Email address is unknown"
                });
            }

            var isPasswordCorrect = _passwordHashingService.TryVerify(password, user.HashedPassword);

            if (!isPasswordCorrect)
            {
                return(new AuthenticationResult
                {
                    Success = false,
                    FailureReason = "Password is incorrect"
                });
            }

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
                new Claim(ClaimTypes.Role, "User"),
                new Claim(ClaimTypes.Name, user.Email)
            };

            var token = _authTokenService.GenerateAuthToken(user.Id, claims);

            return(new AuthenticationResult
            {
                Success = true,
                AuthToken = token
            });
        }