Browse Source

user-controller: Added /api/user/session endpoint

login_bugfix
Gisle Aune 5 years ago
parent
commit
93ffaa979d
  1. 25
      controllers/user-controller.go

25
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")

Loading…
Cancel
Save