add remaining org/proj/user initial sync

This commit is contained in:
Mike Mason
2023-07-11 21:32:30 +00:00
parent 80fb879ef6
commit 11fe8f8f2a
15 changed files with 215 additions and 34 deletions

View File

@@ -14,10 +14,59 @@ func (s *service) IsUser(id gidx.PrefixedID) bool {
return false
}
func (s *service) TouchUser(ctx context.Context, id gidx.PrefixedID) error {
func (s *service) IsAssignableResource(id gidx.PrefixedID) bool {
if idType, ok := s.idPrefixMap[id.Prefix()]; ok {
switch idType {
case TypeOrganization, TypeProject:
return true
default:
return false
}
}
return false
}
func (s *service) AssignUser(ctx context.Context, userID gidx.PrefixedID, resourceIDs ...gidx.PrefixedID) error {
var memberships []ResourceMemberships
for _, resourceID := range resourceIDs {
var (
role string
err error
)
if idType, ok := s.idPrefixMap[resourceID.Prefix()]; ok {
switch idType {
case TypeOrganization:
role, err = s.metal.GetUserOrganizationRole(ctx, userID, resourceID)
case TypeProject:
role, err = s.metal.GetUserProjectRole(ctx, userID, resourceID)
}
}
if err != nil {
return err
}
if role == "" {
continue
}
memberships = append(memberships, ResourceMemberships{
Resource: prefixedID{resourceID},
Role: role,
Member: prefixedID{userID},
})
}
s.processMemberships(ctx, memberships)
s.logger.Infow("assignment sync complete", "memberships", len(memberships))
return nil
}
func (s *service) DeleteUser(ctx context.Context, id gidx.PrefixedID) error {
func (s *service) RemoveUser(ctx context.Context, userID gidx.PrefixedID, resourceIDs ...gidx.PrefixedID) error {
return nil
}