extract webfinger and oidc code
1 file changed, 45 insertions(+), 0 deletions(-)
changed files
A domain/identity/oidc/service.go
@@ -0,0 +1,45 @@ +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 +}