mirror of
https://github.com/zitadel/zitadel.git
synced 2025-07-13 18:08:31 +00:00

# Which Problems Are Solved This PR *partially* addresses #9450 . Specifically, it implements the resource based API for app keys. This PR, together with https://github.com/zitadel/zitadel/pull/10077 completes #9450 . # How the Problems Are Solved - Implementation of the following endpoints: `CreateApplicationKey`, `DeleteApplicationKey`, `GetApplicationKey`, `ListApplicationKeys` - `ListApplicationKeys` can filter by project, app or organization ID. Sorting is also possible according to some criteria. - All endpoints use permissions V2 # TODO - [x] Deprecate old endpoints # Additional Context Closes #9450
77 lines
2.4 KiB
Go
77 lines
2.4 KiB
Go
package app
|
|
|
|
import (
|
|
"context"
|
|
"strings"
|
|
|
|
"google.golang.org/protobuf/types/known/timestamppb"
|
|
|
|
"github.com/zitadel/zitadel/internal/api/grpc/app/v2beta/convert"
|
|
filter "github.com/zitadel/zitadel/internal/api/grpc/filter/v2"
|
|
"github.com/zitadel/zitadel/internal/query"
|
|
app "github.com/zitadel/zitadel/pkg/grpc/app/v2beta"
|
|
)
|
|
|
|
func (s *Server) GetApplication(ctx context.Context, req *app.GetApplicationRequest) (*app.GetApplicationResponse, error) {
|
|
res, err := s.query.AppByIDWithPermission(ctx, req.GetId(), false, s.checkPermission)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &app.GetApplicationResponse{
|
|
App: convert.AppToPb(res),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) ListApplications(ctx context.Context, req *app.ListApplicationsRequest) (*app.ListApplicationsResponse, error) {
|
|
queries, err := convert.ListApplicationsRequestToModel(s.systemDefaults, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res, err := s.query.SearchApps(ctx, queries, s.checkPermission)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &app.ListApplicationsResponse{
|
|
Applications: convert.AppsToPb(res.Apps),
|
|
Pagination: filter.QueryToPaginationPb(queries.SearchRequest, res.SearchResponse),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) GetApplicationKey(ctx context.Context, req *app.GetApplicationKeyRequest) (*app.GetApplicationKeyResponse, error) {
|
|
queries, err := convert.GetApplicationKeyQueriesRequestToDomain(req.GetOrganizationId(), req.GetProjectId(), req.GetApplicationId())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
key, err := s.query.GetAuthNKeyByIDWithPermission(ctx, true, strings.TrimSpace(req.GetId()), s.checkPermission, queries...)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &app.GetApplicationKeyResponse{
|
|
Id: key.ID,
|
|
CreationDate: timestamppb.New(key.CreationDate),
|
|
ExpirationDate: timestamppb.New(key.Expiration),
|
|
}, nil
|
|
}
|
|
|
|
func (s *Server) ListApplicationKeys(ctx context.Context, req *app.ListApplicationKeysRequest) (*app.ListApplicationKeysResponse, error) {
|
|
queries, err := convert.ListApplicationKeysRequestToDomain(s.systemDefaults, req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
res, err := s.query.SearchAuthNKeys(ctx, queries, query.JoinFilterUnspecified, s.checkPermission)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &app.ListApplicationKeysResponse{
|
|
Keys: convert.ApplicationKeysToPb(res.AuthNKeys),
|
|
Pagination: filter.QueryToPaginationPb(queries.SearchRequest, res.SearchResponse),
|
|
}, nil
|
|
}
|