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

Method GetWorkloadIdentityByEmail

backend/store/workload_identity.go:63–95  ·  view source on GitHub ↗

GetWorkloadIdentityByEmail gets a workload identity by email without workspace filter. For use by login flow, runners, and GetAccountByEmail (cross-workspace).

(ctx context.Context, email string)

Source from the content-addressed store, hash-verified

61// GetWorkloadIdentityByEmail gets a workload identity by email without workspace filter.
62// For use by login flow, runners, and GetAccountByEmail (cross-workspace).
63func (s *Store) GetWorkloadIdentityByEmail(ctx context.Context, email string) (*WorkloadIdentityMessage, error) {
64 q := qb.Q().Space(`
65 SELECT deleted, email, name, workspace, project, config
66 FROM workload_identity
67 WHERE email = ?
68 `, strings.ToLower(email))
69
70 query, args, err := q.ToSQL()
71 if err != nil {
72 return nil, errors.Wrapf(err, "failed to build sql")
73 }
74
75 var wi WorkloadIdentityMessage
76 var project sql.NullString
77 var configBytes []byte
78 if err := s.GetDB().QueryRowContext(ctx, query, args...).Scan(
79 &wi.MemberDeleted, &wi.Email, &wi.Name, &wi.Workspace, &project, &configBytes,
80 ); err != nil {
81 if err == sql.ErrNoRows {
82 return nil, nil
83 }
84 return nil, err
85 }
86 if project.Valid {
87 wi.Project = &project.String
88 }
89 var config storepb.WorkloadIdentityConfig
90 if err := common.ProtojsonUnmarshaler.Unmarshal(configBytes, &config); err != nil {
91 return nil, err
92 }
93 wi.Config = &config
94 return &wi, nil
95}
96
97// GetWorkloadIdentity gets a workload identity by workspace and email.
98// For use by API layer (workspace-scoped).

Callers 2

GetAccountByEmailMethod · 0.95
ExchangeTokenMethod · 0.80

Calls 6

GetDBMethod · 0.95
QFunction · 0.92
SpaceMethod · 0.80
ToSQLMethod · 0.80
ScanMethod · 0.80
UnmarshalMethod · 0.80

Tested by

no test coverage detected