MCPcopy Create free account
hub / github.com/bytebase/bytebase / CreateIdentityProvider

Method CreateIdentityProvider

backend/store/idp.go:60–102  ·  view source on GitHub ↗

CreateIdentityProvider creates an identity provider.

(ctx context.Context, create *IdentityProviderMessage)

Source from the content-addressed store, hash-verified

58
59// CreateIdentityProvider creates an identity provider.
60func (s *Store) CreateIdentityProvider(ctx context.Context, create *IdentityProviderMessage) (*IdentityProviderMessage, error) {
61 identityProvider := &IdentityProviderMessage{
62 ResourceID: create.ResourceID,
63 Workspace: create.Workspace,
64 Title: create.Title,
65 Domain: create.Domain,
66 Type: create.Type,
67 Config: create.Config,
68 }
69 configBytes, err := getConfigBytes(identityProvider.Config)
70 if err != nil {
71 return nil, errors.Wrap(err, "failed to marshal identity provider config")
72 }
73
74 // Use NULL for global IDPs (empty workspace).
75 var workspaceArg any
76 if create.Workspace != "" {
77 workspaceArg = create.Workspace
78 }
79
80 q := qb.Q().Space(`
81 INSERT INTO idp (
82 resource_id,
83 workspace,
84 name,
85 domain,
86 type,
87 config
88 )
89 VALUES (?, ?, ?, ?, ?, ?)
90 `, create.ResourceID, workspaceArg, create.Title, create.Domain, create.Type.String(), configBytes)
91
92 query, args, err := q.ToSQL()
93 if err != nil {
94 return nil, errors.Wrapf(err, "failed to build sql")
95 }
96
97 if _, err := s.GetDB().ExecContext(ctx, query, args...); err != nil {
98 return nil, err
99 }
100
101 return identityProvider, nil
102}
103
104// GetIdentityProviderByID gets an identity provider by its globally unique resource ID without workspace filter.
105// For use by login flow where workspace is not yet known — the workspace is resolved from the IDP entity.

Callers

nothing calls this directly

Calls 6

GetDBMethod · 0.95
QFunction · 0.92
getConfigBytesFunction · 0.85
SpaceMethod · 0.80
ToSQLMethod · 0.80
StringMethod · 0.65

Tested by

no test coverage detected