40 lines
860 B
Go
40 lines
860 B
Go
package handler
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"github.com/drone/drone/server/resource/user"
|
|
"github.com/drone/drone/server/session"
|
|
"github.com/gorilla/pat"
|
|
)
|
|
|
|
type UsersHandler struct {
|
|
users user.UserManager
|
|
sess session.Session
|
|
}
|
|
|
|
func NewUsersHandler(users user.UserManager, sess session.Session) *UsersHandler {
|
|
return &UsersHandler{users, sess}
|
|
}
|
|
|
|
// GetUsers gets all users.
|
|
// GET /api/users
|
|
func (h *UsersHandler) GetUsers(w http.ResponseWriter, r *http.Request) error {
|
|
// get the user form the session
|
|
user := h.sess.User(r)
|
|
if user == nil || !user.Admin {
|
|
return notAuthorized{}
|
|
}
|
|
// get all users
|
|
users, err := h.users.List()
|
|
if err != nil {
|
|
return internalServerError{err}
|
|
}
|
|
|
|
return json.NewEncoder(w).Encode(users)
|
|
}
|
|
|
|
func (h *UsersHandler) Register(r *pat.Router) {
|
|
r.Get("/v1/users", errorHandler(h.GetUsers))
|
|
}
|