/** * Создать пользователя по ключу Рамблера */ public function testGenerateUserByRamblerLogin() { $ramblerKey = 'ef-user-icaneaa-' . time(); $id = Login_Model::generateUserByRamblerLogin($ramblerKey); $query = "SELECT * FROM users WHERE id = '{$id}'"; $cat = $this->getConnection()->selectRow($query); $login = isset($cat['user_login']) ? $cat['user_login'] : null; $this->assertEquals($ramblerKey, $login, 'Репа'); }
/** * Авторизует пользователя рамблера * * Страница рамблера передаёт в единственном аргументе зашифрованный * ассоциативный массив данных о пользователе например: * { * "date": "Sun, 12 Sep 2010 20:16:21 +0400", * "id": "ef-user-dsdsdsd-122121212", * "name": "Ivan", * "email": "*****@*****.**", * "redirectUrl": "/my/wikiwrapper/tiki-view_blog.php?blogId=1" * } * @param $args */ public function rambler($args) { $ramblerString = $args[0]; $cipher = MCRYPT_RIJNDAEL_128; $key = 'X9Kls8DR72DqEFKLCMN02DdOQWdfLP2a'; $iv = 'dOQWdfLP2aCZM12D'; $decoded = urlsafe_b64decode($ramblerString); $json = mcrypt_cbc($cipher, $key, $decoded, MCRYPT_DECRYPT, $iv); $data = json_decode(trim($json), true); $default = array('id' => null, 'email' => null, 'name' => 'Рамблер', 'redirectUrl' => '/info/'); $data = array_merge($default, (array) $data); $ramblerLogin = $data['id'] ? "rambler_{$data['id']}" : null; $user = Core::getInstance()->user; $user->destroy(); // Пытаемся инициализировать пользователя $user->initUser($ramblerLogin, sha1($ramblerLogin)); // Создаём нового пользователя if (!$user->getId() && $data['id']) { Login_Model::generateUserByRamblerLogin($ramblerLogin, $data['email'], $data['name']); $data['redirectUrl'] = '/my/review/'; $user->initUser($ramblerLogin, sha1($ramblerLogin)); setCookie("guide", "uyjsdhf", 0, COOKIE_PATH, COOKIE_DOMEN, false); } if ($user->getId()) { $this->model->login($ramblerLogin, sha1($ramblerLogin), true); header(sprintf('Location: %s', $data['redirectUrl'])); } else { header('Location: /login/'); } die; }