From 93ffaa979d840cdbe9496c0a6917096afe2fbd54 Mon Sep 17 00:00:00 2001 From: Gisle Aune Date: Wed, 13 Feb 2019 21:08:03 +0100 Subject: [PATCH] user-controller: Added /api/user/session endpoint --- controllers/user-controller.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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")