Nextcloud внешний логин для пользователей в другой базе данных

У меня есть установка Nextcloud, пользователи хранятся во внешней базе данных, и это прекрасно работает с этим приложением: https://apps.nextcloud.com/apps/user_sql

Имея это, я могу войти в свой экземпляр Nextcloud через форму входа, предоставленную Nextcloud.

Мне нужно для автологов пользователей, когда они приходят из другого приложения.

Я написал PHP-скрипт, расположенный в корне моей установки Nextcloud, и он вызывается другими внутренними приложениями моей компании.

Этот сценарий получает идентификатор пользователя и токен в URL. После успешной проверки (не нужно вводить детали здесь), этот скрипт должен войти в систему пользователя.

Какой API я должен вызвать, чтобы пользователь вошел в систему?

Я попробовал следующее, но безуспешно:

  • OC_User::login(...)
  • OC_User::getUserSession()->login(...)

Есть ли способ активировать действительный вход в систему, чтобы пользователи могли войти в систему?

Спасибо за ваши ответы, ребята!

1 ответ

$user = '';
$pass = '';
$s = \OC::$server->getUserSession();
if (!$s->isLoggedin()) $s->login($user, $pass);
else $s->logout();

Размещение этого в /index.php и перед звонком OC::handleRequest() делает трюк. Это не работает, как ожидалось, но вы можете попытаться продолжить отсюда.

PD: Nextcloud Server v14.0.0 Alpha

Другие вопросы по тегам