public async Task <AddUserExternalLoginResponse> Handle(AddUserExternalLoginCommand command, CancellationToken token)
        {
            var userExternalLoginInfo = await _userExternalLoginService.GetUserExternalLoginInfo(command.User);

            if (userExternalLoginInfo == null)
            {
                return(new AddUserExternalLoginResponse()
                {
                    IdentityResult = IdentityResult.Failed(new IdentityError()
                    {
                        Description = $"Unexpected error occurred loading external login info for user with ID '{command.User.Id}'."
                    })
                });
            }

            var identityResult = await _userExternalLoginService.AddUserExternalLogin(command.User, userExternalLoginInfo);

            return(new AddUserExternalLoginResponse()
            {
                IdentityResult = identityResult
            });
        }
        public async Task <LoginExternalResponse> Handle(LoginExternalCommand command, CancellationToken token)
        {
            var info = await _userExternalLoginService.GetUserExternalLoginInfo();

            if (info == null)
            {
                return(new LoginExternalResponse()
                {
                    ExternalLoginInfo = null
                });
            }

            var result = await _externalLoginService.ExternalLoginSignIn(info.LoginProvider, info.ProviderKey, isPersistent : false);

            return(new LoginExternalResponse()
            {
                ExternalLoginInfo = info,
                LoginResult = new LoginResult()
                {
                    SignInResult = result
                }
            });
        }