mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 11:04:25 +00:00
135 lines
4.2 KiB
Go
135 lines
4.2 KiB
Go
package system
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/zitadel/zitadel/internal/api/authz"
|
|
instance_grpc "github.com/zitadel/zitadel/internal/api/grpc/instance"
|
|
"github.com/zitadel/zitadel/internal/api/grpc/object"
|
|
"github.com/zitadel/zitadel/internal/query"
|
|
object_pb "github.com/zitadel/zitadel/pkg/grpc/object"
|
|
system_pb "github.com/zitadel/zitadel/pkg/grpc/system"
|
|
)
|
|
|
|
func (s *Server) ListInstances(ctx context.Context, req *system_pb.ListInstancesRequest) (*system_pb.ListInstancesResponse, error) {
|
|
queries, err := ListInstancesRequestToModel(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
result, err := s.query.SearchInstances(ctx, queries)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.ListInstancesResponse{
|
|
Result: instance_grpc.InstancesToPb(result.Instances),
|
|
Details: &object_pb.ListDetails{
|
|
TotalResult: result.Count,
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) GetInstance(ctx context.Context, req *system_pb.GetInstanceRequest) (*system_pb.GetInstanceResponse, error) {
|
|
ctx = authz.WithInstanceID(ctx, req.InstanceId)
|
|
instance, err := s.query.Instance(ctx, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.GetInstanceResponse{
|
|
Instance: instance_grpc.InstanceDetailToPb(instance),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) AddInstance(ctx context.Context, req *system_pb.AddInstanceRequest) (*system_pb.AddInstanceResponse, error) {
|
|
id, details, err := s.command.SetUpInstance(ctx, AddInstancePbToSetupInstance(req, s.DefaultInstance))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.AddInstanceResponse{
|
|
InstanceId: id,
|
|
Details: object.AddToDetailsPb(details.Sequence, details.EventDate, details.ResourceOwner),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) ExistsDomain(ctx context.Context, req *system_pb.ExistsDomainRequest) (*system_pb.ExistsDomainResponse, error) {
|
|
domainQuery, err := query.NewInstanceDomainDomainSearchQuery(query.TextEqualsIgnoreCase, req.Domain)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
query := &query.InstanceDomainSearchQueries{
|
|
SearchRequest: query.SearchRequest{
|
|
Offset: 0,
|
|
Limit: 1,
|
|
Asc: true,
|
|
},
|
|
Queries: []query.SearchQuery{
|
|
domainQuery,
|
|
},
|
|
}
|
|
domains, err := s.query.SearchInstanceDomainsGlobal(ctx, query)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.ExistsDomainResponse{
|
|
Exists: domains.Count > 0,
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) ListDomains(ctx context.Context, req *system_pb.ListDomainsRequest) (*system_pb.ListDomainsResponse, error) {
|
|
ctx = authz.WithInstanceID(ctx, req.InstanceId)
|
|
queries, err := ListInstanceDomainsRequestToModel(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
domains, err := s.query.SearchInstanceDomains(ctx, queries)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.ListDomainsResponse{
|
|
Result: instance_grpc.DomainsToPb(domains.Domains),
|
|
Details: object.ToListDetails(domains.Count, domains.Sequence, domains.Timestamp),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) AddDomain(ctx context.Context, req *system_pb.AddDomainRequest) (*system_pb.AddDomainResponse, error) {
|
|
//TODO: should be solved in interceptor
|
|
ctx = authz.WithInstanceID(ctx, req.InstanceId)
|
|
instance, err := s.query.Instance(ctx, true)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
ctx = authz.WithInstance(ctx, instance)
|
|
|
|
details, err := s.command.AddInstanceDomain(ctx, req.Domain)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.AddDomainResponse{
|
|
Details: object.AddToDetailsPb(details.Sequence, details.EventDate, details.ResourceOwner),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) RemoveDomain(ctx context.Context, req *system_pb.RemoveDomainRequest) (*system_pb.RemoveDomainResponse, error) {
|
|
ctx = authz.WithInstanceID(ctx, req.InstanceId)
|
|
details, err := s.command.RemoveInstanceDomain(ctx, req.Domain)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.RemoveDomainResponse{
|
|
Details: object.ChangeToDetailsPb(details.Sequence, details.EventDate, details.ResourceOwner),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) SetPrimaryDomain(ctx context.Context, req *system_pb.SetPrimaryDomainRequest) (*system_pb.SetPrimaryDomainResponse, error) {
|
|
ctx = authz.WithInstanceID(ctx, req.InstanceId)
|
|
details, err := s.command.SetPrimaryInstanceDomain(ctx, req.Domain)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &system_pb.SetPrimaryDomainResponse{
|
|
Details: object.ChangeToDetailsPb(details.Sequence, details.EventDate, details.ResourceOwner),
|
|
}, nil
|
|
}
|