diff --git a/lib/routes/me.go b/lib/routes/me.go new file mode 100644 index 0000000000000000000000000000000000000000..3ce5fe4a63c57b0b22039d1f29d57147f1be05db --- /dev/null +++ b/lib/routes/me.go @@ -0,0 +1,24 @@ +package routes + +import ( + "net/http" + + "owo.codes/whats-this/api/lib/apierrors" + "owo.codes/whats-this/api/lib/middleware" + + "github.com/go-chi/render" +) + +// Me handles /users/me requests. +func Me(w http.ResponseWriter, r *http.Request) { + // Only authorized users can use this route + user := middleware.GetAuthorizedUser(r) + if user.ID == "" || user.IsBlocked { + panic(apierrors.Unauthorized) + } + + // Return response + w.Header().Set("Content-Type", "application/json") + w.WriteHeader(http.StatusOK) + render.JSON(w, r, user) +} diff --git a/main.go b/main.go index 298798c341fa0c6c8183196c689d397dc812e69d..e10090f26df95c97e64769cbcf71ed5f7170250b 100644 --- a/main.go +++ b/main.go @@ -145,6 +145,7 @@ func main() { r.Post("/upload/pomf", routes.UploadPomf(false)) r.Post("/upload/pomf/associated", routes.UploadPomf(true)) r.Post("/users", routes.CreateUser) + r.Get("/users/me", routes.Me) // MethodNotAllowed handler r.MethodNotAllowed(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {