Files
Jay Brown daf4d4b94b Merged in feature/permit-io-demo (pull request #144)
draft pr for the test demo harness for permit.io

* harness working

for permit.io demo

* user is const

* aws profile

* permit import code

for research

* cleanup

* create user tool poc

* Merge branch 'main' of bitbucket.org:aarete/query-orchestration into feature/permit-io-demo

* tests for user creation

* add audit logs

and dry-run

* add tests

sanity check the requested roles

* update docs for delete

* disable/enable users

and test

* more tests

and make user name required only for create operations

* clean up

* add docs

* aws tag tests

* audit -> slog

* attempt build fix devbox

* edit

* just devbox

* remove lock change for merge

* Merge branch 'main' of bitbucket.org:aarete/query-orchestration into feature/permit-io-demo
2025-06-13 19:42:24 +00:00

68 lines
2.8 KiB
Go

package permit
import (
"context"
"github.com/permitio/permit-golang/pkg/api"
config "github.com/permitio/permit-golang/pkg/config"
"github.com/permitio/permit-golang/pkg/enforcement"
"github.com/permitio/permit-golang/pkg/models"
)
type Client struct {
config config.PermitConfig
Api *api.PermitApiClient
Elements *api.Elements
enforcement *enforcement.PermitEnforcer
}
var New = NewPermit
func NewPermit(config config.PermitConfig) *Client {
apiClient := api.NewPermitApiClient(&config)
enforcerClient := enforcement.NewPermitEnforcerClient(&config)
return &Client{
config: config,
Api: apiClient,
Elements: apiClient.Elements,
enforcement: enforcerClient,
}
}
func (c *Client) SyncUser(ctx context.Context, user models.UserCreate) (*models.UserRead, error) {
return c.Api.Users.SyncUser(ctx, user)
}
func (c *Client) Check(user enforcement.User, action enforcement.Action, resource enforcement.Resource) (bool, error) {
return c.enforcement.Check(user, action, resource)
}
func (c *Client) BulkCheck(requests ...enforcement.CheckRequest) ([]bool, error) {
return c.enforcement.BulkCheck(requests...)
}
func (c *Client) FilterObjects(user enforcement.User, action enforcement.Action, context map[string]string, resources ...enforcement.ResourceI) ([]enforcement.ResourceI, error) {
return c.enforcement.FilterObjects(user, action, context, resources...)
}
func (c *Client) AllTenantsCheck(user enforcement.User, action enforcement.Action, resource enforcement.Resource) ([]enforcement.TenantDetails, error) {
return c.enforcement.AllTenantsCheck(user, action, resource)
}
func (c *Client) GetUserPermissions(user enforcement.User, tenants ...string) (enforcement.UserPermissions, error) {
return c.enforcement.GetUserPermissions(user, tenants...)
}
func (c *Client) GetUserPermissionsWithOptions(user enforcement.User, opts ...enforcement.UserPermissionsOption) (enforcement.UserPermissions, error) {
return c.enforcement.GetUserPermissionsWithOptions(user, opts...)
}
type PermitInterface interface {
Check(user enforcement.User, action enforcement.Action, resource enforcement.Resource) (bool, error)
BulkCheck(requests ...enforcement.CheckRequest) ([]bool, error)
FilterObjects(user enforcement.User, action enforcement.Action, context map[string]string, resources ...enforcement.ResourceI) ([]enforcement.ResourceI, error)
AllTenantsCheck(user enforcement.User, action enforcement.Action, resource enforcement.Resource) ([]enforcement.TenantDetails, error)
GetUserPermissions(user enforcement.User, tenants ...string) (enforcement.UserPermissions, error)
GetUserPermissionsWithOptions(user enforcement.User, opts ...enforcement.UserPermissionsOption) (enforcement.UserPermissions, error)
SyncUser(ctx context.Context, user models.UserCreate) (*models.UserRead, error)
}