Skip to content

Commit 08d63db

Browse files
feat: add membership package and AddOrganizationMembers RPC (#1537)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 6ff1ad5 commit 08d63db

19 files changed

Lines changed: 2494 additions & 823 deletions

File tree

.mockery.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ packages:
5959
config:
6060
dir: "core/user/mocks"
6161
all: true
62+
github.com/raystack/frontier/core/membership:
63+
config:
64+
dir: "core/membership/mocks"
65+
all: true
6266
github.com/raystack/frontier/core/organization:
6367
config:
6468
dir: "core/organization/mocks"

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ TAG := $(shell git rev-list --tags --max-count=1)
44
VERSION := $(shell git describe --tags ${TAG})
55
.PHONY: build check fmt lint test test-race vet test-cover-html help install proto admin-app compose-up-dev
66
.DEFAULT_GOAL := build
7-
PROTON_COMMIT := "ac2df1932fcddcd7f7ff1af0ded07b14d73b781b"
7+
PROTON_COMMIT := "c3eb9d66b9f6dd04f7d87a7829565be4772f9c47"
88

99
admin-app:
1010
@echo " > generating admin build"

cmd/serve.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import (
9292
"github.com/go-webauthn/webauthn/webauthn"
9393
"github.com/raystack/frontier/config"
9494
"github.com/raystack/frontier/core/group"
95+
"github.com/raystack/frontier/core/membership"
9596
"github.com/raystack/frontier/core/namespace"
9697
"github.com/raystack/frontier/core/organization"
9798
"github.com/raystack/frontier/core/policy"
@@ -420,6 +421,8 @@ func buildAPIDependencies(
420421
organizationService := organization.NewService(organizationRepository, relationService, userService,
421422
authnService, policyService, preferenceService, auditRecordRepository, roleService)
422423

424+
membershipService := membership.NewService(logger, policyService, relationService, roleService, organizationService, userService, auditRecordRepository)
425+
423426
orgKycRepository := postgres.NewOrgKycRepository(dbc)
424427
orgKycService := kyc.NewService(orgKycRepository)
425428

@@ -620,6 +623,7 @@ func buildAPIDependencies(
620623
UserProjectsService: userProjectsService,
621624
AuditRecordService: auditRecordService,
622625
UserPATService: userPATService,
626+
MembershipService: membershipService,
623627
}
624628
return dependencies, nil
625629
}

core/membership/errors.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package membership
2+
3+
import "errors"
4+
5+
var (
6+
ErrAlreadyMember = errors.New("principal is already a member of this resource")
7+
ErrNotMember = errors.New("principal is not a member of this resource")
8+
ErrInvalidOrgRole = errors.New("role is not valid for organization scope")
9+
ErrLastOwnerRole = errors.New("cannot change role: this is the last owner of the organization")
10+
ErrInvalidPrincipal = errors.New("only user principals are supported")
11+
)

core/membership/mocks/audit_record_repository.go

Lines changed: 95 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/membership/mocks/org_service.go

Lines changed: 95 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)