mirror of
https://github.com/zitadel/zitadel.git
synced 2025-03-01 14:27:24 +00:00
30 lines
908 B
Go
30 lines
908 B
Go
![]() |
package command
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/zitadel/zitadel/internal/api/authz"
|
||
|
"github.com/zitadel/zitadel/internal/command/preparation"
|
||
|
"github.com/zitadel/zitadel/internal/eventstore"
|
||
|
"github.com/zitadel/zitadel/internal/repository/instance"
|
||
|
"github.com/zitadel/zitadel/internal/repository/permission"
|
||
|
)
|
||
|
|
||
|
func prepareAddRolePermissions(a *instance.Aggregate, roles []authz.RoleMapping) preparation.Validation {
|
||
|
return func() (preparation.CreateCommands, error) {
|
||
|
return func(ctx context.Context, _ preparation.FilterToQueryReducer) (cmds []eventstore.Command, _ error) {
|
||
|
aggregate := permission.NewAggregate(a.InstanceID)
|
||
|
for _, r := range roles {
|
||
|
if strings.HasPrefix(r.Role, "SYSTEM") {
|
||
|
continue
|
||
|
}
|
||
|
for _, p := range r.Permissions {
|
||
|
cmds = append(cmds, permission.NewAddedEvent(ctx, aggregate, r.Role, p))
|
||
|
}
|
||
|
}
|
||
|
return cmds, nil
|
||
|
}, nil
|
||
|
}
|
||
|
}
|