Add OIDC login support to compliance page

Add Google and Microsoft sign-in buttons to the trust center connect
page, matching the console sign-in experience. The backend OIDC flow
already supports flexible continue URLs, so only the GraphQL schema
and frontend needed changes.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-22 10:41:41 +01:00
parent 95803e4bca
commit 3e4a7d3638
3 changed files with 105 additions and 3 deletions

View File

@@ -880,10 +880,18 @@ type RecordSigningEventPayload {
success: Boolean!
}
type OIDCProviderInfo {
name: String!
loginURL: String!
}
type Query {
viewer: Identity
node(id: ID!): Node
currentTrustCenter: TrustCenter
oidcProviders: [OIDCProviderInfo!]!
@goField(forceResolver: true)
@session(required: OPTIONAL)
}
type Mutation {

View File

@@ -11,6 +11,7 @@ import (
"errors"
"fmt"
"net"
"strings"
"time"
"go.gearno.de/kit/log"
@@ -993,6 +994,22 @@ func (r *queryResolver) CurrentTrustCenter(ctx context.Context) (*types.TrustCen
return response, nil
}
// OidcProviders is the resolver for the oidcProviders field.
func (r *queryResolver) OidcProviders(ctx context.Context) ([]*types.OIDCProviderInfo, error) {
providers := r.iam.OIDCService.EnabledProviders()
result := make([]*types.OIDCProviderInfo, 0, len(providers))
for _, p := range providers {
name := strings.ToLower(p.String())
result = append(result, &types.OIDCProviderInfo{
Name: name,
LoginURL: r.baseURL.WithPath("/api/connect/v1/oidc/" + name + "/login").MustString(),
})
}
return result, nil
}
// IsUserAuthorized is the resolver for the isUserAuthorized field.
func (r *reportResolver) IsUserAuthorized(ctx context.Context, obj *types.Report) (bool, error) {
trustService := r.TrustService(ctx, obj.ID.TenantID())