aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/includes/ucp/ucp_auth_link.php3
-rw-r--r--phpBB/phpbb/auth/provider/oauth/oauth.php25
2 files changed, 28 insertions, 0 deletions
diff --git a/phpBB/includes/ucp/ucp_auth_link.php b/phpBB/includes/ucp/ucp_auth_link.php
index b7fd014493..df4b433f42 100644
--- a/phpBB/includes/ucp/ucp_auth_link.php
+++ b/phpBB/includes/ucp/ucp_auth_link.php
@@ -66,6 +66,9 @@ class ucp_auth_link
{
$error[] = $auth_provider->unlink_account($link_data);
}
+
+ // Template data may have changed, get new data
+ $provider_data = $auth_provider->get_auth_link_data();
}
}
diff --git a/phpBB/phpbb/auth/provider/oauth/oauth.php b/phpBB/phpbb/auth/provider/oauth/oauth.php
index be86180574..9af6f04e38 100644
--- a/phpBB/phpbb/auth/provider/oauth/oauth.php
+++ b/phpBB/phpbb/auth/provider/oauth/oauth.php
@@ -575,4 +575,29 @@ class phpbb_auth_provider_oauth extends phpbb_auth_provider_base
'TEMPLATE_FILE' => 'ucp_auth_link_oauth.html',
);
}
+
+ /**
+ * {@inheritdoc}
+ */
+ public function unlink_account(array $link_data)
+ {
+ if (!array_key_exists('oauth_service', $link_data) || !$link_data['oauth_service'])
+ {
+ return 'LOGIN_LINK_MISSING_DATA';
+ }
+
+ // Remove the link
+ $sql = 'DELETE FROM ' . $this->auth_provider_oauth_token_account_assoc . "
+ WHERE provider = '" . $this->db->sql_escape($link_data['oauth_service']) . "'
+ AND user_id = " . (int) $this->user->data['user_id'];
+ $this->db->sql_query($sql);
+
+ // Clear all tokens belonging to the user on this servce
+ $sql = 'DELETE FROM ' . $this->auth_provider_oauth_token_storage_table . "
+ WHERE user_id = " . (int) $this->user->data['user_id'] . "
+ AND provider = '" . $this->db->sql_escape($link_data['oauth_service']) . "'";
+ $this->db->sql_query($sql);
+
+ return;
+ }
}