openfga / language

Grammar for the OpenFGA modeling language
https://openfga.dev
Apache License 2.0
17 stars 7 forks source link

When transforming a modular model back to DSL, specify module in comments #180

Closed rhamzeh closed 6 months ago

rhamzeh commented 7 months ago

For example, for the modular model specified here, this will be the combined DSL:

model
  schema 1.2

## module = core; filename = ./core.fga
type user

type organization
  relations
    define member: [user]
    define admin: [user]
    ## extended by: module = confluence; filename = ./confluence.fga
    define can_create_page: member
    ## extended by: module = jira; filename = ./jira/projects.fga
    define can_create_project: member

type group
  relations
    define member: [user]

## module = confluence; filename = ./confluence.fga
type space
  relations
    define organization: [organization] 

type page
  relations
    define space: [space]
    define owner: [user]

## module = jira; filename = ./jira/projects.fga
type project
  relations
    define organization: [organization]

## module = jira; filename = ./jira/tickets.fga
type ticket
  relations
    define project: [project]
    define owner: [user]

Note that ideally the extended relations will be sorted last and by module/filename