package claims

import (
	"oc-auth/conf"

	"cloud.o-forge.io/core/oc-lib/models/peer"
)

// Tokenizer interface
type ClaimService interface {
	AddClaimsToToken(clientID string, userId string, peer *peer.Peer) Claims
	DecodeClaimsInToken(host string, method string, forward string, sessionClaims Claims, publicKey string, external bool) (bool, error)
}

// SessionClaims struct
type SessionClaims struct {
	AccessToken map[string]interface{} `json:"access_token"`
	IDToken     map[string]interface{} `json:"id_token"`
}

// Claims struct
type Claims struct {
	Session SessionClaims `json:"session"`
}

var t = map[string]ClaimService{
	"hydra": HydraClaims{},
}

func GetClaims() ClaimService {
	return t[conf.GetConfig().Auth]
}
