Пример #1
0
func MapSchemaClientToClient(sc Client) (client.Client, error) {
	c := client.Client{
		Credentials: oidc.ClientCredentials{
			ID:     sc.Id,
			Secret: sc.Secret,
		},
		Metadata: oidc.ClientMetadata{
			RedirectURIs: make([]url.URL, len(sc.RedirectURIs)),
		},
		Public: sc.Public,
	}
	for i, ru := range sc.RedirectURIs {
		if ru == "" {
			return client.Client{}, ErrorNoRedirectURI
		}

		u, err := url.Parse(ru)
		if err != nil {
			return client.Client{}, ErrorInvalidRedirectURI
		}

		c.Metadata.RedirectURIs[i] = *u
	}

	c.Metadata.ClientName = sc.ClientName

	if sc.LogoURI != "" {
		logoURI, err := url.Parse(sc.LogoURI)
		if err != nil {
			return client.Client{}, ErrorInvalidLogoURI
		}
		c.Metadata.LogoURI = logoURI
	}

	if sc.ClientURI != "" {
		clientURI, err := url.Parse(sc.ClientURI)
		if err != nil {
			return client.Client{}, ErrorInvalidClientURI
		}
		c.Metadata.ClientURI = clientURI
	}

	c.Admin = sc.IsAdmin
	return c, nil
}