|
5 | 5 | "database/sql" |
6 | 6 | "log" |
7 | 7 | "os" |
| 8 | + "strings" |
8 | 9 |
|
9 | 10 | firebase "firebase.google.com/go/v4" |
10 | 11 | "firebase.google.com/go/v4/messaging" |
@@ -73,12 +74,31 @@ func setup(r *gin.Engine) (*api.API, gin.HandlerFunc) { |
73 | 74 | if err != nil { |
74 | 75 | log.Fatalf("failed to seed demo data: %v", err) |
75 | 76 | } |
| 77 | + if err := queries.SetUserToken(context.Background(), userID, sql.NullString{String: "demo:token", Valid: true}); err != nil { |
| 78 | + log.Fatalf("failed to set demo user token: %v", err) |
| 79 | + } |
76 | 80 | return api.New(queries, fx, classifier, push), middleware.DemoAuth(userID) |
77 | 81 | } |
78 | 82 |
|
79 | 83 | webhook.New(queries, classifier, push).Register(r.Group("/webhook")) |
80 | 84 |
|
81 | | - return api.New(queries, fx, classifier, push), middleware.Middleware(queries, os.Getenv("BASE_URL")) |
| 85 | + teamDomain := os.Getenv("CF_ACCESS_TEAM_DOMAIN") |
| 86 | + audRaw := os.Getenv("CF_ACCESS_AUD") |
| 87 | + if teamDomain == "" || audRaw == "" { |
| 88 | + log.Fatalf("CF_ACCESS_TEAM_DOMAIN and CF_ACCESS_AUD must be set") |
| 89 | + } |
| 90 | + var audiences []string |
| 91 | + for _, a := range strings.Split(audRaw, ",") { |
| 92 | + if a = strings.TrimSpace(a); a != "" { |
| 93 | + audiences = append(audiences, a) |
| 94 | + } |
| 95 | + } |
| 96 | + verifier, err := middleware.NewCloudflareAccessVerifier(teamDomain, audiences) |
| 97 | + if err != nil { |
| 98 | + log.Fatalf("failed to init cf access verifier: %v", err) |
| 99 | + } |
| 100 | + |
| 101 | + return api.New(queries, fx, classifier, push), middleware.Middleware(queries, os.Getenv("BASE_URL"), verifier) |
82 | 102 | } |
83 | 103 |
|
84 | 104 | func newFCMClient() *messaging.Client { |
|
0 commit comments