add remaining org/proj/user initial sync
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user