Skip to content

Commit b0bf230

Browse files
committed
Merge branch '2-14-stable' into develop
2 parents 8494987 + 461355d commit b0bf230

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

api/router.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,10 +196,13 @@ func Route() *mux.Router {
196196
tasksAPI.Path("/{task_id}").HandlerFunc(tasks.GetTasks).Methods("GET", "HEAD")
197197
tasksAPI.Path("/{task_id}").HandlerFunc(tasks.DeleteTask).Methods("DELETE")
198198

199+
userUserAPI := authenticatedAPI.Path("/users/{user_id}").Subrouter()
200+
userUserAPI.Use(readonlyUserMiddleware)
201+
userUserAPI.Methods("GET", "HEAD").HandlerFunc(getUser)
202+
199203
userAPI := authenticatedAPI.Path("/users/{user_id}").Subrouter()
200204
userAPI.Use(getUserMiddleware)
201205

202-
userAPI.Methods("GET", "HEAD").HandlerFunc(getUser)
203206
userAPI.Methods("PUT").HandlerFunc(updateUser)
204207
userAPI.Methods("DELETE").HandlerFunc(deleteUser)
205208

api/users.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,35 @@ func addUser(w http.ResponseWriter, r *http.Request) {
7777

7878
helpers.WriteJSON(w, http.StatusCreated, newUser)
7979
}
80+
func readonlyUserMiddleware(next http.Handler) http.Handler {
81+
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
82+
userID, err := helpers.GetIntParam("user_id", w, r)
83+
84+
if err != nil {
85+
return
86+
}
87+
88+
user, err := helpers.Store(r).GetUser(userID)
89+
90+
if err != nil {
91+
helpers.WriteError(w, err)
92+
return
93+
}
94+
95+
editor := context.Get(r, "user").(*db.User)
96+
97+
if !editor.Admin && editor.ID != user.ID {
98+
user = db.User{
99+
ID: user.ID,
100+
Username: user.Username,
101+
Name: user.Name,
102+
}
103+
}
104+
105+
context.Set(r, "_user", user)
106+
next.ServeHTTP(w, r)
107+
})
108+
}
80109

81110
func getUserMiddleware(next http.Handler) http.Handler {
82111
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)