From ab98860167a32ec952065eaf7651787c04bd9bd5 Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Wed, 18 Sep 2024 09:34:26 -0400 Subject: [PATCH] feat(middleware): add AccountVerifiedMiddleware --- middleware/account_verified.go | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 middleware/account_verified.go diff --git a/middleware/account_verified.go b/middleware/account_verified.go new file mode 100644 index 00000000..c85545b8 --- /dev/null +++ b/middleware/account_verified.go @@ -0,0 +1,35 @@ +package middleware + +import ( + "go.lumeweb.com/portal/core" + "net/http" +) + +func AccountVerifiedMiddleware(ctx core.Context) func(http.Handler) http.Handler { + userService := ctx.Service(core.USER_SERVICE).(core.UserService) + + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + + user, err := GetUserFromContext(r.Context()) + if err != nil { + http.Error(w, "unauthorized", http.StatusUnauthorized) + return + } + + verified, err := userService.IsAccountVerified(user) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + if !verified { + acctErr := core.NewAccountError(core.ErrKeyAccountNotVerified, nil) + http.Error(w, acctErr.Error(), acctErr.HttpStatus()) + return + } + + next.ServeHTTP(w, r) + }) + } +}