func()

in pkg/providers/apisix/translation/apisix_consumer.go [24:74]


func (t *translator) TranslateApisixConsumerV2(ac *configv2.ApisixConsumer) (*apisixv1.Consumer, error) {
	// As the CRD schema ensures that only one authN can be configured,
	// so here the order is no matter.

	plugins := make(apisixv1.Plugins)
	if ac.Spec.AuthParameter.KeyAuth != nil {
		cfg, err := t.translateConsumerKeyAuthPluginV2(ac.Namespace, ac.Spec.AuthParameter.KeyAuth)
		if err != nil {
			return nil, fmt.Errorf("invalid key auth config: %s", err)
		}
		plugins["key-auth"] = cfg
	} else if ac.Spec.AuthParameter.BasicAuth != nil {
		cfg, err := t.translateConsumerBasicAuthPluginV2(ac.Namespace, ac.Spec.AuthParameter.BasicAuth)
		if err != nil {
			return nil, fmt.Errorf("invalid basic auth config: %s", err)
		}
		plugins["basic-auth"] = cfg
	} else if ac.Spec.AuthParameter.JwtAuth != nil {
		cfg, err := t.translateConsumerJwtAuthPluginV2(ac.Namespace, ac.Spec.AuthParameter.JwtAuth)
		if err != nil {
			return nil, fmt.Errorf("invalid jwt auth config: %s", err)
		}
		plugins["jwt-auth"] = cfg
	} else if ac.Spec.AuthParameter.WolfRBAC != nil {
		cfg, err := t.translateConsumerWolfRBACPluginV2(ac.Namespace, ac.Spec.AuthParameter.WolfRBAC)
		if err != nil {
			return nil, fmt.Errorf("invalid wolf rbac config: %s", err)
		}
		plugins["wolf-rbac"] = cfg
	} else if ac.Spec.AuthParameter.HMACAuth != nil {
		cfg, err := t.translateConsumerHMACAuthPluginV2(ac.Namespace, ac.Spec.AuthParameter.HMACAuth)
		if err != nil {
			return nil, fmt.Errorf("invaild hmac auth config: %s", err)
		}
		plugins["hmac-auth"] = cfg
	} else if ac.Spec.AuthParameter.LDAPAuth != nil {
		cfg, err := t.translateConsumerLDAPAuthPluginV2(ac.Namespace, ac.Spec.AuthParameter.LDAPAuth)
		if err != nil {
			return nil, fmt.Errorf("invalid ldap auth config: %s", err)
		}
		plugins["ldap-auth"] = cfg
	}

	consumer := apisixv1.NewDefaultConsumer()
	for k, v := range ac.ObjectMeta.Labels {
		consumer.Labels[k] = v
	}
	consumer.Username = apisixv1.ComposeConsumerName(ac.Namespace, ac.Name)
	consumer.Plugins = plugins
	return consumer, nil
}