diff options
| author | Max Resnick <max@ofmax.li> | 2020-11-08 11:45:16 -0800 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2021-01-01 10:50:14 -0800 |
| commit | a397341ad471cc761f7fb930d77e53cf7eb40a2a (patch) | |
| tree | 76fb8318269569687fdd30467dc61ecba3499d09 /cmd/web/main.go | |
| parent | 689a57ec4a444f8233fe2e5ec7ceb0903218218d (diff) | |
| download | iserv-a397341ad471cc761f7fb930d77e53cf7eb40a2a.tar.gz | |
adds casbin and accounts
Diffstat (limited to 'cmd/web/main.go')
| -rw-r--r-- | cmd/web/main.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/cmd/web/main.go b/cmd/web/main.go index 093dad6..8456ad8 100644 --- a/cmd/web/main.go +++ b/cmd/web/main.go @@ -9,14 +9,17 @@ import ( "time" "github.com/alexedwards/scs/v2" + "github.com/casbin/casbin" "github.com/go-chi/chi" "github.com/go-chi/chi/middleware" "golang.org/x/oauth2" "golang.org/x/oauth2/google" + "git.ofmax.li/iserv/internal/acct" "git.ofmax.li/iserv/internal/auth" "git.ofmax.li/iserv/internal/db/redis" "git.ofmax.li/iserv/internal/fs" + "git.ofmax.li/iserv/internal/goog" "git.ofmax.li/iserv/internal/image" "go.ofmax.li/tmpl" ) @@ -54,6 +57,9 @@ func main() { sessionManager := scs.New() sessionManager.Lifetime = 24 * time.Hour + // Google + googService := goog.NewService(oauthClientConfig) + // Image imgdb := redis.NewRedisImageRepo(connPool) imageService := image.NewService(imgdb, storagePath, renderer) @@ -61,22 +67,32 @@ func main() { imageFile := fs.NewHandler(storagePath) // Auth + // Auth Enforcer + enf := casbin.NewEnforcer("auth_model.ini", "policy.csv") authdb := redis.NewRedisAuthRepo(connPool) - authService := auth.NewService(authdb) - authHandler := auth.NewHandler(authService, sessionManager, oauthClientConfig) + authService := auth.NewService(authdb, googService, enf) + authHandler := auth.NewHandler(authService, sessionManager) + + // Acct + acctDb := redis.NewAcctRepo(connPool) + acctService := acct.NewService(acctDb, authdb, googService) + acctHandler := acct.NewHandler(acctService, sessionManager) // Static Files staticFiles := fs.NewHandler(path.Join(storagePath, "static")) r := chi.NewRouter() + r.Use(middleware.StripSlashes) r.Use(middleware.Logger) r.Use(sessionManager.LoadAndSave) + r.Use(auth.AuthOnly(authService, sessionManager)) r.Get("/a/g", authHandler.OauthCallback) r.Get("/l", authHandler.Login) + r.Get("/u/register", acctHandler.Register) r.Get("/i/{fileName}", imageHandler.GetImage) - r.Post("/u", imageHandler.PostImage) + r.Post("/i", imageHandler.PostImage) r.Get("/f/*", imageFile) r.Get("/static/*", staticFiles) |