package main import ( "context" "tug/internal/platform/config" "tug/internal/platform/obs" "tug/internal/service/configsource" "tug/internal/service/session" "tug/internal/storage" "tug/internal/transport/forwardauth" "tug/internal/transport/google" "tug/internal/transport/idp" "tug/internal/transport/signin" "tug/internal/transport/web" ) func startSignin(ctx context.Context, cfg *config.Config, store *storage.Store, kit *web.Kit, p *idp.IDP, metrics *obs.Registry) (*signin.Signin, *session.Service, *forwardauth.ForwardAuth, configsource.Setters, error) { g, err := googleRP(cfg) if err != nil { return nil, nil, nil, configsource.Setters{}, err } comp, err := signin.Compose(ctx, signin.Wiring{ Store: store, Kit: kit, IDP: p, Server: cfg.Server, PrimaryGroup: cfg.PrimaryGroup, Apps: cfg.Apps, MasterKey: cfg.Secrets.SessionMasterKey, SessionTTL: cfg.Session.TTL, Google: g, Portdistrict: cfg.Portdistrict != nil, ObserveAuthz: metrics.AuthzOutcomes(forwardauth.Outcomes), }) if err != nil { return nil, nil, nil, configsource.Setters{}, err } metrics.LastSeenDropped(comp.Sessions.SeenDropped) return comp.Signin, comp.Sessions, comp.ForwardAuth, hotSetters(comp.Sessions, g), nil } func hotSetters(sessions *session.Service, g *google.RP) configsource.Setters { var set configsource.Setters if sessions != nil { set.SessionTTLs = sessions.SetTTLs } if g != nil { set.AllowedHD = g.SetAllowedHD } return set }