mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 22:17:32 +00:00
115 lines
4.5 KiB
Go
115 lines
4.5 KiB
Go
![]() |
package settings
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"connectrpc.com/connect"
|
||
|
"google.golang.org/protobuf/types/known/timestamppb"
|
||
|
|
||
|
"github.com/zitadel/zitadel/internal/api/grpc/filter/v2beta"
|
||
|
"github.com/zitadel/zitadel/internal/query"
|
||
|
"github.com/zitadel/zitadel/internal/zerrors"
|
||
|
filter_pb "github.com/zitadel/zitadel/pkg/grpc/filter/v2beta"
|
||
|
"github.com/zitadel/zitadel/pkg/grpc/settings/v2beta"
|
||
|
)
|
||
|
|
||
|
func (s *Server) ListOrganizationSettings(ctx context.Context, req *connect.Request[settings.ListOrganizationSettingsRequest]) (*connect.Response[settings.ListOrganizationSettingsResponse], error) {
|
||
|
queries, err := s.listOrganizationSettingsRequestToModel(req.Msg)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
resp, err := s.query.SearchOrganizationSettings(ctx, queries, s.checkPermission)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return connect.NewResponse(&settings.ListOrganizationSettingsResponse{
|
||
|
OrganizationSettings: organizationSettingsListToPb(resp.OrganizationSettingsList),
|
||
|
Pagination: filter.QueryToPaginationPb(queries.SearchRequest, resp.SearchResponse),
|
||
|
}), nil
|
||
|
}
|
||
|
|
||
|
func (s *Server) listOrganizationSettingsRequestToModel(req *settings.ListOrganizationSettingsRequest) (*query.OrganizationSettingsSearchQueries, error) {
|
||
|
offset, limit, asc, err := filter.PaginationPbToQuery(s.systemDefaults, req.Pagination)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
queries, err := organizationSettingsFiltersToQuery(req.Filters)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
return &query.OrganizationSettingsSearchQueries{
|
||
|
SearchRequest: query.SearchRequest{
|
||
|
Offset: offset,
|
||
|
Limit: limit,
|
||
|
Asc: asc,
|
||
|
SortingColumn: organizationSettingsFieldNameToSortingColumn(req.SortingColumn),
|
||
|
},
|
||
|
Queries: queries,
|
||
|
}, nil
|
||
|
}
|
||
|
|
||
|
func organizationSettingsFieldNameToSortingColumn(field *settings.OrganizationSettingsFieldName) query.Column {
|
||
|
if field == nil {
|
||
|
return query.OrganizationSettingsColumnCreationDate
|
||
|
}
|
||
|
switch *field {
|
||
|
case settings.OrganizationSettingsFieldName_ORGANIZATION_SETTINGS_FIELD_NAME_CREATION_DATE:
|
||
|
return query.OrganizationSettingsColumnCreationDate
|
||
|
case settings.OrganizationSettingsFieldName_ORGANIZATION_SETTINGS_FIELD_NAME_ORGANIZATION_ID:
|
||
|
return query.OrganizationSettingsColumnID
|
||
|
case settings.OrganizationSettingsFieldName_ORGANIZATION_SETTINGS_FIELD_NAME_CHANGE_DATE:
|
||
|
return query.OrganizationSettingsColumnChangeDate
|
||
|
case settings.OrganizationSettingsFieldName_ORGANIZATION_SETTINGS_FIELD_NAME_UNSPECIFIED:
|
||
|
return query.OrganizationSettingsColumnCreationDate
|
||
|
default:
|
||
|
return query.OrganizationSettingsColumnCreationDate
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func organizationSettingsFiltersToQuery(queries []*settings.OrganizationSettingsSearchFilter) (_ []query.SearchQuery, err error) {
|
||
|
q := make([]query.SearchQuery, len(queries))
|
||
|
for i, qry := range queries {
|
||
|
q[i], err = organizationSettingsToModel(qry)
|
||
|
if err != nil {
|
||
|
return nil, err
|
||
|
}
|
||
|
}
|
||
|
return q, nil
|
||
|
}
|
||
|
|
||
|
func organizationSettingsToModel(filter *settings.OrganizationSettingsSearchFilter) (query.SearchQuery, error) {
|
||
|
switch q := filter.Filter.(type) {
|
||
|
case *settings.OrganizationSettingsSearchFilter_InOrganizationIdsFilter:
|
||
|
return organizationInIDsFilterToQuery(q.InOrganizationIdsFilter)
|
||
|
case *settings.OrganizationSettingsSearchFilter_OrganizationScopedUsernamesFilter:
|
||
|
return organizationScopedUsernamesFilterToQuery(q.OrganizationScopedUsernamesFilter)
|
||
|
default:
|
||
|
return nil, zerrors.ThrowInvalidArgument(nil, "SETTINGS-uvTDqZHlvS", "List.Query.Invalid")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func organizationInIDsFilterToQuery(q *filter_pb.InIDsFilter) (query.SearchQuery, error) {
|
||
|
return query.NewOrganizationSettingsOrganizationIDSearchQuery(q.Ids)
|
||
|
}
|
||
|
|
||
|
func organizationScopedUsernamesFilterToQuery(q *settings.OrganizationScopedUsernamesFilter) (query.SearchQuery, error) {
|
||
|
return query.NewOrganizationSettingsOrganizationScopedUsernamesSearchQuery(q.OrganizationScopedUsernames)
|
||
|
}
|
||
|
|
||
|
func organizationSettingsListToPb(settingsList []*query.OrganizationSettings) []*settings.OrganizationSettings {
|
||
|
o := make([]*settings.OrganizationSettings, len(settingsList))
|
||
|
for i, organizationSettings := range settingsList {
|
||
|
o[i] = organizationSettingsToPb(organizationSettings)
|
||
|
}
|
||
|
return o
|
||
|
}
|
||
|
|
||
|
func organizationSettingsToPb(organizationSettings *query.OrganizationSettings) *settings.OrganizationSettings {
|
||
|
return &settings.OrganizationSettings{
|
||
|
OrganizationId: organizationSettings.ID,
|
||
|
CreationDate: timestamppb.New(organizationSettings.CreationDate),
|
||
|
ChangeDate: timestamppb.New(organizationSettings.ChangeDate),
|
||
|
OrganizationScopedUsernames: organizationSettings.OrganizationScopedUsernames,
|
||
|
}
|
||
|
}
|