daf4d4b94b
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
68 lines
2.8 KiB
Go
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)
|
|
}
|