package oidc import ( "net/http" "alin.ovh/homestead/shared/config" sharedhttp "alin.ovh/homestead/shared/http" "alin.ovh/x/log" "github.com/benpate/digit" ) type Service struct { config *config.Config log *log.Logger acctResource string resource digit.Resource } func New(cfg *config.Config, logger *log.Logger) *Service { acctResource := "acct:" + cfg.OIDCEmail resource := digit.NewResource(acctResource). Link("http://openid.net/specs/connect/1.0/issuer", "", cfg.OIDCHost.String()) return &Service{ config: cfg, log: logger, acctResource: acctResource, resource: resource, } } func (s *Service) RegisterHandlers(mux *sharedhttp.ServeMux) { const oidcPath = "/.well-known/openid-configuration" mux.ServeMux.Handle(oidcPath, sharedhttp.RedirectHandler(s.config.OIDCHost.JoinPath(oidcPath), http.StatusFound)) } func (s *Service) GetResource() string { return s.acctResource } func (s *Service) GetIdentityResource() digit.Resource { return s.resource }