public function signoutAction() { $request_data = $this->jsonRequest(); if (empty($request_data) || !array_key_exists('user', $request_data) && !array_key_exists('client', $request_data)) { $this->renderJson(array('error' => 'User and client are missing'), 404); } $userRepository = new UserRepository($this->app->db); $user = $userRepository->findBy('name', $request_data['user']); if (!$user) { $this->renderJson(array('error' => 'User not found'), 404); } $accessRepository = new AccessRepository($this->app->db); $accessRepository->removeUserClient($user['id'], $request_data['client']); $this->renderJson(array('logout' => 'successful')); }
/** * Check user in config and insert them into database * * @param $auth_user * @param $auth_pass * @return array|null */ protected function checkConfigUser($auth_user, $auth_pass) { $algorithm = $this->app->config('login.algorithm'); $credentials = $this->app->config('login.credentials'); $password = $auth_pass; if (!empty($algorithm) && $algorithm !== 'plaintext') { $password = hash($algorithm, $auth_pass); } if (!empty($auth_user) && isset($credentials[$auth_user]) && $credentials[$auth_user] === $password) { $user = ['name' => $auth_user, 'password' => password_hash($auth_pass, PASSWORD_DEFAULT), 'active' => true, 'superadmin' => true, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s')]; $user['id'] = $this->userRepository->persist($user); $this->app->db->query('UPDATE tags SET user_id = :user_id WHERE user_id IS NULL', ['user_id' => $user['id']]); $this->app->db->query('UPDATE items SET user_id = :user_id WHERE user_id IS NULL', ['user_id' => $user['id']]); $this->app->db->query('UPDATE sources SET user_id = :user_id WHERE user_id IS NULL', ['user_id' => $user['id']]); $this->app->db->query('UPDATE settings SET user_id = :user_id WHERE user_id IS NULL', ['user_id' => $user['id']]); return $user; } return null; }
$app->config($configLoader->getConfig()); $app->config('installed', false); // Create database switch ($app->config('database_adapter')) { case 'sqlite': if (file_exists($app->config('database_dsn'))) { unlink($app->config('database_dsn')); } break; } $connector = new DatabaseConnector($app->config('database_adapter'), $app->config('database_dsn'), $app->config('database_username'), $app->config('database_password')); $db = $connector->getInstance(); if ($db != null) { $connector->migrate($db, ROOT_DIR . '/src/Nogo/Feedbox/Resources/sql/' . $app->config('database_adapter')); $user = array('name' => $input['login_username'], 'email' => $input['login_email'], 'password' => password_hash($input['login_password'], PASSWORD_DEFAULT), 'active' => true, 'superadmin' => true, 'created_at' => date('Y-m-d H:i:s'), 'updated_at' => date('Y-m-d H:i:s')); $userRepository = new User($db); $user['id'] = $userRepository->persist($user); $opml = trim($request->post('opml')); if (!empty($opml)) { $opmlLoader = new OpmlLoader(); $opmlLoader->setContent($opml); $sources = $opmlLoader->run(); if (!empty($sources)) { $sourceRepository = new Source($db); foreach ($sources as $source) { $source['user_id'] = $user['id']; $sourceRepository->persist($source); } } } }