Skip to content
This repository was archived by the owner on Nov 7, 2025. It is now read-only.

v1.1.0

Choose a tag to compare

@evansims evansims released this 30 May 07:29
· 246 commits to main since this release
7d688e3

Tokens and configs bright,
Type safety brings such delight,
Code shines clear and right.

Added

  • Streamlined model management with helper functions
    Managing FGA stores and models just got a lot simpler. We've introduced a suite of helper functions
    that reduce boilerplate and make your authorization code more readable.

    • store - Find or create stores effortlessly
      No more manual store lookups. This helper finds your store by name or creates it if it doesn't exist:

      use function OpenFGA\store;
      
      $store = store(
          client: $client,
          name: 'my-php-store',
      );
    • dsl - Write models in plain text
      Define your authorization models using FGA's intuitive DSL syntax instead of verbose JSON:

      use function OpenFGA\dsl;
      
      $dsl = dsl(<<<'DSL'
          model
          schema 1.1
      
          type user
      
          type document
            relations
              define viewer: [user]
              define editor: [user] and viewer
      DSL);
    • model - Deploy models with one call
      Transform your DSL into a live authorization model with automatic version management:

      use function OpenFGA\model;
      
      $model = model(
          client: $client,
          store: $store,
          typeDefinitions: $dsl->getTypeDefinitions(),
      );
  • Simplified permission management
    Three new helper functions make it dead simple to manage permissions in your application:

    • write - Grant permissions

      use function OpenFGA\write;
      
      $tuple = tuple('user:anne', 'viewer', 'document:roadmap');
      
      // "Anne has viewer access to roadmap"
      write(
          client: $client,
          store: $store,
          model: $model,
          tuples: $tuple,
      );
    • delete - Revoke permissions

      use function OpenFGA\delete;
      
      $tuple = tuple('user:anne', 'viewer', 'document:roadmap');
      
      // "Anne no longer has viewer access to roadmap"
      delete(
          client: $client,
          store: $store,
          model: $model,
          tuples: $tuple,
      );
    • allowed - Check permissions

      use function OpenFGA\allowed;
      
      $tuple = tuple('user:anne', 'viewer', 'document:roadmap');
      
      // "Can Anne view the roadmap?"
      allowed(
          client: $client,
          store: $store,
          model: $model,
          tupleKey: $tuple,
      );

These helpers eliminate the need to manually construct request objects,
making your authorization code cleaner and less error-prone.

Fixed

  • More robust schema validation

    We've strengthened the DSL validator to handle edge cases that previously slipped through.
    Your models will now be validated more thoroughly before deployment, catching potential issues early.