File tree Expand file tree Collapse file tree 2 files changed +33
-1
lines changed Expand file tree Collapse file tree 2 files changed +33
-1
lines changed Original file line number Diff line number Diff line change @@ -196,10 +196,13 @@ func Route() *mux.Router {
196
196
tasksAPI .Path ("/{task_id}" ).HandlerFunc (tasks .GetTasks ).Methods ("GET" , "HEAD" )
197
197
tasksAPI .Path ("/{task_id}" ).HandlerFunc (tasks .DeleteTask ).Methods ("DELETE" )
198
198
199
+ userUserAPI := authenticatedAPI .Path ("/users/{user_id}" ).Subrouter ()
200
+ userUserAPI .Use (readonlyUserMiddleware )
201
+ userUserAPI .Methods ("GET" , "HEAD" ).HandlerFunc (getUser )
202
+
199
203
userAPI := authenticatedAPI .Path ("/users/{user_id}" ).Subrouter ()
200
204
userAPI .Use (getUserMiddleware )
201
205
202
- userAPI .Methods ("GET" , "HEAD" ).HandlerFunc (getUser )
203
206
userAPI .Methods ("PUT" ).HandlerFunc (updateUser )
204
207
userAPI .Methods ("DELETE" ).HandlerFunc (deleteUser )
205
208
Original file line number Diff line number Diff line change @@ -77,6 +77,35 @@ func addUser(w http.ResponseWriter, r *http.Request) {
77
77
78
78
helpers .WriteJSON (w , http .StatusCreated , newUser )
79
79
}
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
+ }
80
109
81
110
func getUserMiddleware (next http.Handler ) http.Handler {
82
111
return http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
You can’t perform that action at this time.
0 commit comments