|
@ -66,6 +66,30 @@ func (c *UserController) getUser(w http.ResponseWriter, r *http.Request) { |
|
|
respond.Data(w, user) |
|
|
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
|
|
|
// login (`POST /login`): Log in as user
|
|
|
func (c *UserController) login(w http.ResponseWriter, r *http.Request) { |
|
|
func (c *UserController) login(w http.ResponseWriter, r *http.Request) { |
|
|
loginData := struct { |
|
|
loginData := struct { |
|
@ -197,6 +221,7 @@ func (c *UserController) Mount(router *mux.Router, prefix string) { |
|
|
sub := router.PathPrefix(prefix).Subrouter() |
|
|
sub := router.PathPrefix(prefix).Subrouter() |
|
|
|
|
|
|
|
|
sub.HandleFunc("/", c.getUsers).Methods("GET") |
|
|
sub.HandleFunc("/", c.getUsers).Methods("GET") |
|
|
|
|
|
sub.HandleFunc("/session", c.session).Methods("GET") |
|
|
sub.HandleFunc("/{id}", c.getUser).Methods("GET") |
|
|
sub.HandleFunc("/{id}", c.getUser).Methods("GET") |
|
|
sub.HandleFunc("/login", c.login).Methods("POST") |
|
|
sub.HandleFunc("/login", c.login).Methods("POST") |
|
|
sub.HandleFunc("/logout", c.logout).Methods("POST") |
|
|
sub.HandleFunc("/logout", c.logout).Methods("POST") |
|
|