private async Task <User> RegisterUserFromExternalService(ExternalRegisterUserDto externalUser, LoginProvider loginProvider)
        {
            var user = Mapper.Map <User>(externalUser);

            user.RegisteredWith = loginProvider;
            var result = await UserManager.CreateAsync(user);

            return(result.Succeeded ? user : null);
        }
        private async Task <Result <TokenDto> > Login(ExternalRegisterUserDto externalUser, LoginProvider loginProvider)
        {
            var user = await UserManager.GetByAsync(x => x.Email == externalUser.Email);

            if (user == null)
            {
                user = await RegisterUserFromExternalService(externalUser, loginProvider);
            }

            if (user == null)
            {
                return(Result <TokenDto> .Failure());
            }

            return(CreateTokenResponse(user, loginProvider, externalUser.AccessToken));
        }