mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-14 20:08:02 +00:00
1c5ecba42a
* feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: add execution of targets to grpc calls * feat: split request and response logic to handle the different context information * feat: split request and response logic to handle the different context information * fix: integration test * fix: import alias * fix: refactor execution package * fix: refactor execution interceptor integration and unit tests * fix: refactor execution interceptor integration and unit tests * fix: refactor execution interceptor integration and unit tests * fix: refactor execution interceptor integration and unit tests * fix: refactor execution interceptor integration and unit tests * docs: basic documentation for executions and targets * fix: change order for interceptors * fix: merge back origin/main * fix: change target definition command and query side (#7735) * fix: change target definition command and query side * fix: correct refactoring name changes * fix: correct refactoring name changes * fix: changing execution defintion with target list and type * fix: changing execution definition with target list and type * fix: add back search queries for target and include * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * fix: projections change for execution with targets suffix table * docs: add example to actions v2 * docs: add example to actions v2 * fix: correct integration tests on query for executions * fix: add separate event for execution v2 as content changed * fix: add separate event for execution v2 as content changed * fix: added review comment changes * fix: added review comment changes * fix: added review comment changes --------- Co-authored-by: adlerhurst <silvan.reusser@gmail.com> * fix: added review comment changes * fix: added review comment changes * Update internal/api/grpc/server/middleware/execution_interceptor.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * fix: added review comment changes * fix: added review comment changes * fix: added review comment changes * fix: added review comment changes * fix: added review comment changes * fix: added review comment changes --------- Co-authored-by: adlerhurst <silvan.reusser@gmail.com> Co-authored-by: Elio Bischof <elio@zitadel.com>
113 lines
3.4 KiB
Go
113 lines
3.4 KiB
Go
package action
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/muhlemmer/gu"
|
|
|
|
"github.com/zitadel/zitadel/internal/api/authz"
|
|
"github.com/zitadel/zitadel/internal/api/grpc/object/v2"
|
|
"github.com/zitadel/zitadel/internal/command"
|
|
"github.com/zitadel/zitadel/internal/domain"
|
|
"github.com/zitadel/zitadel/internal/eventstore/v1/models"
|
|
action "github.com/zitadel/zitadel/pkg/grpc/action/v3alpha"
|
|
)
|
|
|
|
func (s *Server) CreateTarget(ctx context.Context, req *action.CreateTargetRequest) (*action.CreateTargetResponse, error) {
|
|
if err := checkExecutionEnabled(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
add := createTargetToCommand(req)
|
|
details, err := s.command.AddTarget(ctx, add, authz.GetInstance(ctx).InstanceID())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &action.CreateTargetResponse{
|
|
Id: add.AggregateID,
|
|
Details: object.DomainToDetailsPb(details),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) UpdateTarget(ctx context.Context, req *action.UpdateTargetRequest) (*action.UpdateTargetResponse, error) {
|
|
if err := checkExecutionEnabled(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
details, err := s.command.ChangeTarget(ctx, updateTargetToCommand(req), authz.GetInstance(ctx).InstanceID())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &action.UpdateTargetResponse{
|
|
Details: object.DomainToDetailsPb(details),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) DeleteTarget(ctx context.Context, req *action.DeleteTargetRequest) (*action.DeleteTargetResponse, error) {
|
|
if err := checkExecutionEnabled(ctx); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
details, err := s.command.DeleteTarget(ctx, req.GetTargetId(), authz.GetInstance(ctx).InstanceID())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &action.DeleteTargetResponse{
|
|
Details: object.DomainToDetailsPb(details),
|
|
}, nil
|
|
}
|
|
|
|
func createTargetToCommand(req *action.CreateTargetRequest) *command.AddTarget {
|
|
var (
|
|
targetType domain.TargetType
|
|
interruptOnError bool
|
|
)
|
|
switch t := req.GetTargetType().(type) {
|
|
case *action.CreateTargetRequest_RestWebhook:
|
|
targetType = domain.TargetTypeWebhook
|
|
interruptOnError = t.RestWebhook.InterruptOnError
|
|
case *action.CreateTargetRequest_RestCall:
|
|
targetType = domain.TargetTypeCall
|
|
interruptOnError = t.RestCall.InterruptOnError
|
|
case *action.CreateTargetRequest_RestAsync:
|
|
targetType = domain.TargetTypeAsync
|
|
}
|
|
return &command.AddTarget{
|
|
Name: req.GetName(),
|
|
TargetType: targetType,
|
|
Endpoint: req.GetEndpoint(),
|
|
Timeout: req.GetTimeout().AsDuration(),
|
|
InterruptOnError: interruptOnError,
|
|
}
|
|
}
|
|
|
|
func updateTargetToCommand(req *action.UpdateTargetRequest) *command.ChangeTarget {
|
|
if req == nil {
|
|
return nil
|
|
}
|
|
target := &command.ChangeTarget{
|
|
ObjectRoot: models.ObjectRoot{
|
|
AggregateID: req.GetTargetId(),
|
|
},
|
|
Name: req.Name,
|
|
Endpoint: req.Endpoint,
|
|
}
|
|
if req.TargetType != nil {
|
|
switch t := req.GetTargetType().(type) {
|
|
case *action.UpdateTargetRequest_RestWebhook:
|
|
target.TargetType = gu.Ptr(domain.TargetTypeWebhook)
|
|
target.InterruptOnError = gu.Ptr(t.RestWebhook.InterruptOnError)
|
|
case *action.UpdateTargetRequest_RestCall:
|
|
target.TargetType = gu.Ptr(domain.TargetTypeCall)
|
|
target.InterruptOnError = gu.Ptr(t.RestCall.InterruptOnError)
|
|
case *action.UpdateTargetRequest_RestAsync:
|
|
target.TargetType = gu.Ptr(domain.TargetTypeAsync)
|
|
target.InterruptOnError = gu.Ptr(false)
|
|
}
|
|
}
|
|
if req.Timeout != nil {
|
|
target.Timeout = gu.Ptr(req.GetTimeout().AsDuration())
|
|
}
|
|
return target
|
|
}
|