Rewrite permission system

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2025-12-17 18:46:55 +01:00
parent 2baf8f0413
commit e61d72f15d
26 changed files with 3123 additions and 64 deletions

View File

@@ -34,13 +34,14 @@ type (
privateKey *rsa.PrivateKey
logger *log.Logger
AccountService *AccountService
OrganizationService *OrganizationService
SessionService *SessionService
AuthService *AuthService
SAMLService *saml.Service
APIKeyService *APIKeyService
AccessManagementService *AccessManagementService
AccountService *AccountService
OrganizationService *OrganizationService
SessionService *SessionService
AuthService *AuthService
SAMLService *saml.Service
APIKeyService *APIKeyService
LegacyAccessManagementService *AccessManagementService
Authorizer *Authorizer
}
Config struct {
@@ -55,6 +56,10 @@ type (
Certificate *x509.Certificate
PrivateKey *rsa.PrivateKey
Logger *log.Logger
// PolicySet contains all policies for authorization.
// If nil, only IAM policies are used.
PolicySet *PolicySet
}
)
@@ -102,7 +107,18 @@ func NewService(
svc.SessionService = NewSessionService(svc)
svc.AuthService = NewAuthService(svc)
svc.APIKeyService = NewAPIKeyService(svc)
svc.AccessManagementService = NewAccessManagementService(svc)
svc.LegacyAccessManagementService = NewAccessManagementService(svc)
// Use provided PolicySet or default to IAM-only policies
policySet := NewPolicySet()
if cfg.PolicySet != nil {
policySet = cfg.PolicySet
}
policySet.Merge(IAMPolicySet())
svc.Authorizer = NewAuthorizer(pgClient, policySet)
samlService, err := saml.NewService(svc.pg, svc.encryptionKey, svc.baseURL, svc.certificate, svc.privateKey, cfg.Logger)
if err != nil {
return nil, fmt.Errorf("cannot create SAML service: %w", err)