aboutsummaryrefslogtreecommitdiff
path: root/cmd/web/main.go
diff options
context:
space:
mode:
authorMax Resnick <max@ofmax.li>2020-11-08 11:45:16 -0800
committerMax Resnick <max@ofmax.li>2021-01-01 10:50:14 -0800
commita397341ad471cc761f7fb930d77e53cf7eb40a2a (patch)
tree76fb8318269569687fdd30467dc61ecba3499d09 /cmd/web/main.go
parent689a57ec4a444f8233fe2e5ec7ceb0903218218d (diff)
downloadiserv-a397341ad471cc761f7fb930d77e53cf7eb40a2a.tar.gz
adds casbin and accounts
Diffstat (limited to 'cmd/web/main.go')
-rw-r--r--cmd/web/main.go22
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)