Mercurial > gemma
diff pkg/controllers/user.go @ 4244:4394daeea96a json-handler-middleware
Moved JSONHandler into middleware package.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 22 Aug 2019 11:26:48 +0200 |
parents | d776110b4db0 |
children | e020e6e34ad7 |
line wrap: on
line diff
--- a/pkg/controllers/user.go Thu Aug 22 10:54:08 2019 +0200 +++ b/pkg/controllers/user.go Thu Aug 22 11:26:48 2019 +0200 @@ -31,6 +31,8 @@ "gemma.intevation.de/gemma/pkg/models" "gemma.intevation.de/gemma/pkg/pgxutils" "gemma.intevation.de/gemma/pkg/scheduler" + + mw "gemma.intevation.de/gemma/pkg/middleware" ) const ( @@ -97,23 +99,23 @@ (inkluding import errors) and details on the concerned import.`)) ) -func deleteUser(req *http.Request) (jr JSONResult, err error) { +func deleteUser(req *http.Request) (jr mw.JSONResult, err error) { user := mux.Vars(req)["user"] if !models.UserName(user).IsValid() { - err = JSONError{http.StatusBadRequest, "error: user invalid"} + err = mw.JSONError{http.StatusBadRequest, "error: user invalid"} return } session, _ := auth.GetSession(req) if session.User == user { - err = JSONError{http.StatusBadRequest, "error: cannot delete yourself"} + err = mw.JSONError{http.StatusBadRequest, "error: cannot delete yourself"} return } ctx := req.Context() - db := JSONConn(req) + db := mw.JSONConn(req) // Remove scheduled tasks. ids, err2 := scheduler.ScheduledUserIDs(ctx, db, user) @@ -132,7 +134,7 @@ } if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { - err = JSONError{ + err = mw.JSONError{ Code: http.StatusNotFound, Message: fmt.Sprintf("Cannot find user %s.", user), } @@ -142,22 +144,22 @@ // Running in a go routine should not be necessary. go func() { auth.Sessions.Logout(user) }() - jr = JSONResult{Code: http.StatusNoContent} + jr = mw.JSONResult{Code: http.StatusNoContent} return } -func updateUser(req *http.Request) (jr JSONResult, err error) { +func updateUser(req *http.Request) (jr mw.JSONResult, err error) { user := models.UserName(mux.Vars(req)["user"]) if !user.IsValid() { - err = JSONError{http.StatusBadRequest, "error: user invalid"} + err = mw.JSONError{http.StatusBadRequest, "error: user invalid"} return } - newUser := JSONInput(req).(*models.User) + newUser := mw.JSONInput(req).(*models.User) var res sql.Result - db := JSONConn(req) + db := mw.JSONConn(req) if s, _ := auth.GetSession(req); s.Roles.Has("sys_admin") { if newUser.Extent == nil { @@ -187,7 +189,7 @@ } } else { if newUser.Extent == nil { - err = JSONError{http.StatusBadRequest, "extent is mandatory"} + err = mw.JSONError{http.StatusBadRequest, "extent is mandatory"} return } res, err = db.ExecContext( @@ -206,7 +208,7 @@ } if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { - err = JSONError{ + err = mw.JSONError{ Code: http.StatusNotFound, Message: fmt.Sprintf("Cannot find user %s.", user), } @@ -218,7 +220,7 @@ go func() { auth.Sessions.Logout(string(user)) }() } - jr = JSONResult{ + jr = mw.JSONResult{ Code: http.StatusCreated, Result: struct { Result string `json:"result"` @@ -227,11 +229,11 @@ return } -func createUser(req *http.Request) (jr JSONResult, err error) { +func createUser(req *http.Request) (jr mw.JSONResult, err error) { - user := JSONInput(req).(*models.User) + user := mw.JSONInput(req).(*models.User) - db := JSONConn(req) + db := mw.JSONConn(req) if user.Extent == nil { _, err = db.ExecContext( @@ -259,11 +261,11 @@ if err != nil { m, c := pgxutils.ReadableError{Err: err}.MessageAndCode() - err = JSONError{Code: c, Message: m} + err = mw.JSONError{Code: c, Message: m} return } - jr = JSONResult{ + jr = mw.JSONResult{ Code: http.StatusCreated, Result: struct { Result string `json:"result"` @@ -272,11 +274,11 @@ return } -func listUsers(req *http.Request) (jr JSONResult, err error) { +func listUsers(req *http.Request) (jr mw.JSONResult, err error) { var rows *sql.Rows - rows, err = JSONConn(req).QueryContext(req.Context(), listUsersSQL) + rows, err = mw.JSONConn(req).QueryContext(req.Context(), listUsersSQL) if err != nil { return } @@ -299,7 +301,7 @@ users = append(users, user) } - jr = JSONResult{ + jr = mw.JSONResult{ Result: struct { Users []*models.User `json:"users"` }{users}, @@ -307,11 +309,11 @@ return } -func listUser(req *http.Request) (jr JSONResult, err error) { +func listUser(req *http.Request) (jr mw.JSONResult, err error) { user := models.UserName(mux.Vars(req)["user"]) if !user.IsValid() { - err = JSONError{http.StatusBadRequest, "error: user invalid"} + err = mw.JSONError{http.StatusBadRequest, "error: user invalid"} return } @@ -320,7 +322,7 @@ Extent: &models.BoundingBox{}, } - err = JSONConn(req).QueryRowContext(req.Context(), listUserSQL, user).Scan( + err = mw.JSONConn(req).QueryRowContext(req.Context(), listUserSQL, user).Scan( &result.Role, &result.Country, &result.Email, @@ -330,7 +332,7 @@ switch { case err == sql.ErrNoRows: - err = JSONError{ + err = mw.JSONError{ Code: http.StatusNotFound, Message: fmt.Sprintf("Cannot find user %s.", user), } @@ -343,11 +345,11 @@ return } -func sendTestMail(req *http.Request) (jr JSONResult, err error) { +func sendTestMail(req *http.Request) (jr mw.JSONResult, err error) { user := models.UserName(mux.Vars(req)["user"]) if !user.IsValid() { - err = JSONError{http.StatusBadRequest, "error: user invalid"} + err = mw.JSONError{http.StatusBadRequest, "error: user invalid"} return } @@ -356,7 +358,7 @@ Extent: &models.BoundingBox{}, } - err = JSONConn(req).QueryRowContext(req.Context(), listUserSQL, user).Scan( + err = mw.JSONConn(req).QueryRowContext(req.Context(), listUserSQL, user).Scan( &userData.Role, &userData.Country, &userData.Email, @@ -366,7 +368,7 @@ switch { case err == sql.ErrNoRows: - err = JSONError{ + err = mw.JSONError{ Code: http.StatusNotFound, Message: fmt.Sprintf("Cannot find user %s.", user), } @@ -395,7 +397,7 @@ subject = "Gemma: Waterway Admin Notification TEST" bodyTmpl = testWWAdminNotifyMailTmpl } else { - err = JSONError{ + err = mw.JSONError{ Code: http.StatusBadRequest, Message: "Test mails can only be generated for admin roles.", }