dex/oidc.go (79 lines of code) (raw):

// Copyright (c) 2022 EPAM Systems, Inc. // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. package dex import ( "context" "fmt" "github.com/dexidp/dex/api/v2" ) func CreateOidc(clientId string, clientSecret string, redirectUris []string, trustedPeers []string, public bool, name string, logoUrl string) error { conn, err := newGrpcConnection() if err != nil { return getApiClientError(err) } defer conn.Close() client := api.NewDexClient(conn) c := api.Client{ Id: clientId, Secret: clientSecret, RedirectUris: redirectUris, TrustedPeers: trustedPeers, Public: public, Name: name, LogoUrl: logoUrl, } req := &api.CreateClientReq{ Client: &c, } if resp, err := client.CreateClient(context.TODO(), req); err != nil || (resp != nil && resp.AlreadyExists) { if resp != nil && resp.AlreadyExists { err = fmt.Errorf("oauth client %s already exists", clientId) return getError(err) } err = fmt.Errorf("failed to create oauth client %s", err) return getError(err) } return nil } func UpdateOidc(clientId string, redirectUris []string, trustedPeers []string, name string, logoUrl string) error { conn, err := newGrpcConnection() if err != nil { return getApiClientError(err) } defer conn.Close() client := api.NewDexClient(conn) req := &api.UpdateClientReq{ Id: clientId, RedirectUris: redirectUris, TrustedPeers: trustedPeers, Name: name, LogoUrl: logoUrl, } if resp, err := client.UpdateClient(context.TODO(), req); err != nil || (resp != nil && resp.NotFound) { if resp != nil && resp.NotFound { err = fmt.Errorf("oauth client %s not found", clientId) return getError(err) } err = fmt.Errorf("failed to update oauth client %s", err) return getError(err) } return nil } func DeleteOidc(clientId string) error { conn, err := newGrpcConnection() if err != nil { return getApiClientError(err) } defer conn.Close() client := api.NewDexClient(conn) req := &api.DeleteClientReq{ Id: clientId, } if resp, err := client.DeleteClient(context.TODO(), req); err != nil || (resp != nil && resp.NotFound) { if resp != nil && resp.NotFound { err = fmt.Errorf("oauth client %s not found", clientId) return getError(err) } err = fmt.Errorf("failed to delete oauth client %s", err) return getError(err) } return nil }