public async Task <IActionResult> Login(LoginDto loginDto)
        {
            var user = await _userManager.FindByEmailAsync(loginDto.Email);

            if (user == null)
            {
                return(Unauthorized());
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, false);

            UserFromDbDto userFromDbDto = await GetAuthenticatedUserDetails(user);

            if (result.Succeeded)
            {
                var generatedToken = await GenerateJwtToken(user);

                return(Ok(new
                {
                    token = generatedToken,
                    user = userFromDbDto
                }));
            }

            return(Unauthorized());
        }
        private async Task <UserFromDbDto> GetAuthenticatedUserDetails(User user)
        {
            Person person = await _repo.GetPersonById(user.PersonId);

            UserFromDbDto userFromDbDto = new UserFromDbDto
            {
                Id        = user.Id,
                FirstName = person.FirstName,
                LastName  = person.LastName,
                PersonId  = person.Id
            };

            return(userFromDbDto);
        }