Тонкий фреймворк и Auth0

Не работал с PHP около 10 лет, так что очень оторван от реальности. У меня есть проект, над которым я работаю, для которого требуется веб-интерфейс с безопасной аутентификацией. API вообще не нужен.

Auth0 отвечает требованиям с точки зрения аутентификации и предоставляет множество возможностей.

Чего я не могу найти, так это того, как интегрировать это с Slim Framework, может ли кто-нибудь указать мне правильное направление?

Справочная информация о приложении: я собираю информацию из нескольких источников API в базу данных и хочу отобразить ее и добавить дополнительные функции. В настоящее время большая часть этого отображается на информационных панелях Grafana по всему офису, но для этого есть некоторые новые требования, которые не могут быть решены с помощью информационных панелей.

Slim выглядит как правильный инструмент для меня, мне нужно что-то, что позволит мне довольно легко создавать страницы, где я буду фактически отображать несколько графиков, но в основном таблицы и формы для взаимодействия с данными. Если Slim не подходит, с удовольствием поищу в другом месте.

Спасибо


person Chris Wood    schedule 09.05.2019    source источник


Ответы (2)


Согласно официальной документации Auth0, я бы попробовал установить в Slim 3 следующее:

Установка

composer require auth0/auth0-php

Настройка контейнера

Добавьте новую запись фабрики контейнеров:

use Auth0\SDK\Auth0;
use Psr\Container\ContainerInterface as Container;

//...

$container[Auth0::class] = function (Container $container) {
    return new Auth0([
        'domain' => 'YOUR_DOMAIN',
        'client_id' => 'YOUR_CLIENT_ID',
        'client_secret' => 'YOUR_CLIENT_SECRET',
        'redirect_uri' => 'https://YOUR_APP/callback',
        'audience' => 'https://YOUR_DOMAIN/userinfo',
        'scope' => 'openid profile',
        'persist_id_token' => true,
        'persist_access_token' => true,
        'persist_refresh_token' => true,
    ]);
};

использование

Информация о пользователе хранится в сеансе. Каждый раз, когда вы вызываете getUser(), он извлекает информацию из сеанса.

use Auth0\SDK\Auth0;

$auth0 = $container->get(Auth0::class);
$userInfo = $auth0->getUser();

if (!$userInfo) {
    // We have no user info
    // redirect to Login
} else {
    // User is authenticated
    // Say hello to $userInfo['name']
    // print logout button
}

Примечание. Не используйте контейнер напрямую. На самом деле лучше использовать внедрение зависимостей.

person odan    schedule 09.05.2019
comment
Спасибо, Одан, я добавил биты контейнера в зависимости (запуск скелета, и там находится монолог). Теперь разберемся с внешним интерфейсом. - person Chris Wood; 09.05.2019

"но в основном таблицы и формы для взаимодействия с данными"

помимо ваших графиков, которые будут отображаться, если вышеизложенное является основным требованием, я также рекомендую вам взглянуть на Yii Framework (фреймворк PHP)

В частности, глядя на Gii - генератор кода, который исключительно быстро создает CRUD-формы и таблицы...

person blakeyman    schedule 09.05.2019