mirror of
https://github.com/hanzo-fi/go-libs.git
synced 2026-10-30 20:53:44 +00:00
54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package jwt
|
|
|
|
import "github.com/hanzo-fi/go-libs/v5/pkg/authn/oidc"
|
|
|
|
//go:generate mockgen -source control_plane_agent.go -destination control_plane_agent_generated.go -package jwt . ControlPlaneAgent
|
|
type ControlPlaneAgent interface {
|
|
GetOrganizationID() string
|
|
HasScope(scope string) bool
|
|
Subject() string
|
|
GetScopes() []string
|
|
GetClientID() string
|
|
}
|
|
|
|
type DefaultControlPlaneAgent struct {
|
|
claims oidc.AccessTokenClaims
|
|
}
|
|
|
|
func (a DefaultControlPlaneAgent) GetScopes() []string {
|
|
return a.claims.Scopes
|
|
}
|
|
|
|
func (a DefaultControlPlaneAgent) GetOrganizationID() string {
|
|
organizationID := a.claims.Claims["organization_id"]
|
|
if organizationIDStr, ok := organizationID.(string); ok {
|
|
return organizationIDStr
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (a DefaultControlPlaneAgent) HasScope(scope string) bool {
|
|
for _, agentScope := range a.claims.Scopes {
|
|
if scope == agentScope {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (a DefaultControlPlaneAgent) Subject() string {
|
|
return a.claims.Subject
|
|
}
|
|
|
|
func (a DefaultControlPlaneAgent) GetClientID() string {
|
|
return a.claims.ClientID
|
|
}
|
|
|
|
func NewDefaultControlPlaneAgent(claims oidc.AccessTokenClaims) DefaultControlPlaneAgent {
|
|
return DefaultControlPlaneAgent{
|
|
claims: claims,
|
|
}
|
|
}
|
|
|
|
var _ ControlPlaneAgent = &DefaultControlPlaneAgent{}
|