diff --git a/controllers/user-controller.go b/controllers/user-controller.go index 277a0de..2838a99 100644 --- a/controllers/user-controller.go +++ b/controllers/user-controller.go @@ -66,6 +66,30 @@ func (c *UserController) getUser(w http.ResponseWriter, r *http.Request) { respond.Data(w, user) } +func (c *UserController) session(w http.ResponseWriter, r *http.Request) { + type response struct { + LoggedIn bool `json:"loggedIn"` + User *models.User `json:"user"` + } + + session := models.SessionFromContext(r.Context()) + if session == nil { + respond.JSON(w, 200, response{}) + return + } + + user, err := c.users.FindByID(r.Context(), session.UserID) + if err != nil { + respond.JSON(w, 200, response{}) + return + } + + respond.JSON(w, 200, response{ + LoggedIn: true, + User: &user, + }) +} + // login (`POST /login`): Log in as user func (c *UserController) login(w http.ResponseWriter, r *http.Request) { loginData := struct { @@ -197,6 +221,7 @@ func (c *UserController) Mount(router *mux.Router, prefix string) { sub := router.PathPrefix(prefix).Subrouter() sub.HandleFunc("/", c.getUsers).Methods("GET") + sub.HandleFunc("/session", c.session).Methods("GET") sub.HandleFunc("/{id}", c.getUser).Methods("GET") sub.HandleFunc("/login", c.login).Methods("POST") sub.HandleFunc("/logout", c.logout).Methods("POST")