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

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

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

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

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

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

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

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

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

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

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


person FruityFred    schedule 21.02.2017    source источник


Ответы (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

person gabriel garcia    schedule 22.01.2018
comment
Справедливости ради... единственное, что я мог сделать, это автоматически заполнить поля входа и отправить событие нажатия на кнопку входа с помощью JavaScript. - person gabriel garcia; 22.02.2018