GrantForge

    Интеграция приложений

    Примеры приложений

    Два полных примера в репозитории — магазин, который подключается напрямую из браузера, и приложение для заметок со входом на стороне сервера.

    В каталоге samples/ лежат два работающих приложения; вместе с GrantForge они покрыты сквозными тестами и служат лучшим ориентиром при интеграции.

    Пример Порт Что демонстрирует
    samples/shop 19081 Вход из браузера в кросс-доменном режиме с публичным клиентом + PKCE; кнопки показываются по ресурсам; бэкенд проверяет API с помощью @RequirePermission; @GrantForgeEntity объявляет сущность заказа, которую запрашивают областями данных «только собственные записи» и «текущий тенант»
    samples/notes 19082 Вход на сервере через oauth2Login Spring Security (конфиденциальный клиент + PKCE); собственный AccessTokenResolver берёт токен из сессии; «Записать заметку» показывается только тем, у кого есть на это право

    Запуск

    Примеры — самостоятельные сборки Maven, зависящие от стартового пакета и JavaScript SDK этого репозитория:

    ./mvnw -N install
    ./mvnw -pl sdk/grantforge-spring-boot-starter install
    (cd sdk/grantforge-js && pnpm install && pnpm build)
    ./mvnw -f samples/pom.xml package

    Вся конфигурация примеров задаётся переменными окружения:

    Переменная Описание
    GRANTFORGE_URL Адрес GrantForge
    SHOP_BROWSER_CLIENT_ID Публичный клиент магазина на стороне браузера
    SHOP_CLIENT_ID / SHOP_CLIENT_SECRET Конфиденциальный клиент, которым бэкенд магазина объявляет сущности данных (скоуп catalog)
    SHOP_SDK_DIRECTORY Каталог сборки JavaScript SDK (sdk/grantforge-js/dist)

    В GrantForge для двух приложений нужно настроить ресурсы, клиентов, роли и политики данных; скрипт подготовки сквозных тестов core/grantforge-web/tests/samples/setup.ts проходит через все шаги и может служить прямым ориентиром.

    Сквозные тесты

    script/ci/e2e_fullstack.sh после полностековых тестов собирает и запускает оба примера и проверяет кросс-доменный вход PKCE и CORS, видимость кнопок, ответы API со статусом 403, области данных «только собственные записи» и «текущий тенант», удаление и выход из системы, а также вход на сервере в приложении для заметок. Задайте GRANTFORGE_E2E_SKIP_SAMPLES=1, чтобы пропустить этот шаг.

    Редактировать эту страницу на GitHub