public function actionDisconnect() { Craft::log(__METHOD__, LogLevel::Info, true); // redirect url $redirect = craft()->httpSession->get('oauth.referer'); if (!$redirect) { $redirect = $_SERVER['HTTP_REFERER']; } // get request params $providerHandle = craft()->request->getParam('provider'); $namespace = craft()->request->getParam('namespace'); if ($namespace) { $userMode = false; } else { if (craft()->userSession->user) { $userMode = true; } else { $this->_redirect($redirect); } } // remove cache if ($namespace) { $token = craft()->oauth->getSystemToken($providerHandle, $namespace); if ($token) { $token = $token->getRealToken(); } } // criteria conditions & params $conditions = 'provider=:provider'; $params = array(':provider' => $providerHandle); if ($namespace) { $conditions .= ' AND namespace=:namespace'; $params[':namespace'] = $namespace; } if ($userMode) { $conditions .= ' AND userId=:userId'; $params[':userId'] = craft()->userSession->user->id; } // delete all matching records Oauth_TokenRecord::model()->deleteAll($conditions, $params); // redirect $this->_redirect($redirect); }
public function deleteSocialUserByUserId($userId) { $conditions = 'userId=:userId'; $params = array(':userId' => $userId); $socialUserRecords = Social_UserRecord::model()->findAll($conditions, $params); foreach ($socialUserRecords as $socialUserRecord) { if ($socialUserRecord->tokenId) { $tokenRecord = Oauth_TokenRecord::model()->findByPk($socialUserRecord->tokenId); if ($tokenRecord) { $tokenRecord->delete(); } } $socialUserRecord->delete(); } return true; }
/** * Delete login account by ID * * @param int $id * * @return bool */ public function deleteLoginAccountById($id) { $record = Social_LoginAccountRecord::model()->findByPk($id); if ($record) { $tokenId = $record->tokenId; if ($tokenId) { $tokenRecord = Oauth_TokenRecord::model()->findByPk($tokenId); if ($tokenRecord) { $tokenRecord->delete(); } } return $record->delete(); } else { return false; } }