package connect_v1 // This file will be automatically regenerated based on the schema, any resolver // implementations // will be copied through when generating and any unknown code will be moved to the end. // Code generated by github.com/99designs/gqlgen version v0.17.94 import ( "context" "go.gearno.de/kit/log" "go.probo.inc/probo/pkg/coredata" "go.probo.inc/probo/pkg/iam" "go.probo.inc/probo/pkg/server/api/authn" "go.probo.inc/probo/pkg/server/api/connect/v1/schema" "go.probo.inc/probo/pkg/server/api/connect/v1/types" "go.probo.inc/probo/pkg/server/gqlutils" ) // CreatePersonalAPIKey is the resolver for the createPersonalAPIKey field. func (r *mutationResolver) CreatePersonalAPIKey(ctx context.Context, input types.CreatePersonalAPIKeyInput) (*types.CreatePersonalAPIKeyPayload, error) { identity := authn.IdentityFromContext(ctx) if _, err := r.authorize(ctx, identity.ID, iam.ActionPersonalAPIKeyCreate); err != nil { return nil, err } userAPIKey, token, err := r.iam.AccountService.CreatePersonalAPIKey( ctx, identity.ID, input.Name, input.ExpiresAt, ) if err != nil { r.logger.ErrorCtx(ctx, "cannot create personal api key", log.Error(err)) return nil, gqlutils.Internal(ctx) } return &types.CreatePersonalAPIKeyPayload{ PersonalAPIKeyEdge: types.NewPersonalAPIKeyEdge(userAPIKey, coredata.PersonalAPIKeyOrderFieldCreatedAt), Token: token, }, nil } // RevokePersonalAPIKey is the resolver for the revokePersonalAPIKey field. func (r *mutationResolver) RevokePersonalAPIKey(ctx context.Context, input types.RevokePersonalAPIKeyInput) (*types.RevokePersonalAPIKeyPayload, error) { if _, err := r.authorize(ctx, input.PersonalAPIKeyID, iam.ActionPersonalAPIKeyDelete); err != nil { return nil, err } identity := authn.IdentityFromContext(ctx) err := r.iam.AccountService.DeletePersonalAPIKey(ctx, identity.ID, input.PersonalAPIKeyID) if err != nil { r.logger.ErrorCtx(ctx, "cannot delete personal api key", log.Error(err)) return nil, gqlutils.Internal(ctx) } return &types.RevokePersonalAPIKeyPayload{PersonalAPIKeyID: input.PersonalAPIKeyID}, nil } // Token is the resolver for the token field. func (r *personalAPIKeyResolver) Token(ctx context.Context, obj *types.PersonalAPIKey) (*string, error) { if _, err := r.authorize(ctx, obj.ID, iam.ActionPersonalAPIKeyGet); err != nil { return nil, err } identity := authn.IdentityFromContext(ctx) token, err := r.iam.AccountService.RevealPersonalAPIKeyToken(ctx, identity.ID, obj.ID) if err != nil { r.logger.ErrorCtx(ctx, "cannot reveal personal api key token", log.Error(err)) return nil, gqlutils.Internal(ctx) } return &token, nil } // Permission is the resolver for the permission field. func (r *personalAPIKeyResolver) Permission(ctx context.Context, obj *types.PersonalAPIKey, action string) (bool, error) { return r.Resolver.Permission(ctx, obj, action) } // TotalCount is the resolver for the totalCount field. func (r *personalAPIKeyConnectionResolver) TotalCount(ctx context.Context, obj *types.PersonalAPIKeyConnection) (*int, error) { switch obj.Resolver.(type) { case *identityResolver: if _, err := r.authorize(ctx, obj.ParentID, iam.ActionPersonalAPIKeyList); err != nil { return nil, err } count, err := r.iam.AccountService.CountPersonalAPIKeys(ctx, obj.ParentID) if err != nil { r.logger.ErrorCtx(ctx, "cannot count personal api keys", log.Error(err)) return nil, gqlutils.Internal(ctx) } return &count, nil } r.logger.ErrorCtx(ctx, "unsupported resolver", log.Any("resolver", obj.Resolver)) return nil, gqlutils.Internal(ctx) } // PersonalAPIKey returns schema.PersonalAPIKeyResolver implementation. func (r *Resolver) PersonalAPIKey() schema.PersonalAPIKeyResolver { return &personalAPIKeyResolver{r} } // PersonalAPIKeyConnection returns schema.PersonalAPIKeyConnectionResolver implementation. func (r *Resolver) PersonalAPIKeyConnection() schema.PersonalAPIKeyConnectionResolver { return &personalAPIKeyConnectionResolver{r} } type ( personalAPIKeyResolver struct{ *Resolver } personalAPIKeyConnectionResolver struct{ *Resolver } )