Mercurial > gemma
comparison pkg/controllers/user.go @ 486:b2dc9c2f69e0 metamorph-for-all
First stab to use the metamorphic db to do all database stuff.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Fri, 24 Aug 2018 13:56:06 +0200 |
parents | fc37e7072022 |
children | 8a0737aa6ab6 |
comparison
equal
deleted
inserted
replaced
485:7a8644e9e50e | 486:b2dc9c2f69e0 |
---|---|
52 WHERE username = $1` | 52 WHERE username = $1` |
53 ) | 53 ) |
54 | 54 |
55 func deleteUser( | 55 func deleteUser( |
56 _ interface{}, req *http.Request, | 56 _ interface{}, req *http.Request, |
57 db *sql.DB, | 57 db *sql.Conn, |
58 ) (jr JSONResult, err error) { | 58 ) (jr JSONResult, err error) { |
59 | 59 |
60 user := mux.Vars(req)["user"] | 60 user := mux.Vars(req)["user"] |
61 if !models.UserName(user).IsValid() { | 61 if !models.UserName(user).IsValid() { |
62 err = JSONError{http.StatusBadRequest, "error: user invalid"} | 62 err = JSONError{http.StatusBadRequest, "error: user invalid"} |
69 return | 69 return |
70 } | 70 } |
71 | 71 |
72 var res sql.Result | 72 var res sql.Result |
73 | 73 |
74 if res, err = db.Exec(deleteUserSQL, user); err != nil { | 74 if res, err = db.ExecContext(req.Context(), deleteUserSQL, user); err != nil { |
75 return | 75 return |
76 } | 76 } |
77 | 77 |
78 if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { | 78 if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { |
79 err = JSONError{ | 79 err = JSONError{ |
89 jr = JSONResult{Code: http.StatusNoContent} | 89 jr = JSONResult{Code: http.StatusNoContent} |
90 return | 90 return |
91 } | 91 } |
92 | 92 |
93 func updateUser( | 93 func updateUser( |
94 input interface{}, req *http.Request, | 94 input interface{}, |
95 db *sql.DB, | 95 req *http.Request, |
96 db *sql.Conn, | |
96 ) (jr JSONResult, err error) { | 97 ) (jr JSONResult, err error) { |
97 | 98 |
98 user := models.UserName(mux.Vars(req)["user"]) | 99 user := models.UserName(mux.Vars(req)["user"]) |
99 if !user.IsValid() { | 100 if !user.IsValid() { |
100 err = JSONError{http.StatusBadRequest, "error: user invalid"} | 101 err = JSONError{http.StatusBadRequest, "error: user invalid"} |
104 newUser := input.(*models.User) | 105 newUser := input.(*models.User) |
105 var res sql.Result | 106 var res sql.Result |
106 | 107 |
107 if s, _ := auth.GetSession(req); s.Roles.Has("sys_admin") { | 108 if s, _ := auth.GetSession(req); s.Roles.Has("sys_admin") { |
108 if newUser.Extent == nil { | 109 if newUser.Extent == nil { |
109 res, err = db.Exec( | 110 res, err = db.ExecContext( |
111 req.Context(), | |
110 updateUserSQL, | 112 updateUserSQL, |
111 user, | 113 user, |
112 newUser.Role, | 114 newUser.Role, |
113 newUser.User, | 115 newUser.User, |
114 newUser.Password, | 116 newUser.Password, |
115 newUser.Country, | 117 newUser.Country, |
116 newUser.Email, | 118 newUser.Email, |
117 ) | 119 ) |
118 } else { | 120 } else { |
119 res, err = db.Exec( | 121 res, err = db.ExecContext( |
122 req.Context(), | |
120 updateUserExtentSQL, | 123 updateUserExtentSQL, |
121 user, | 124 user, |
122 newUser.Role, | 125 newUser.Role, |
123 newUser.User, | 126 newUser.User, |
124 newUser.Password, | 127 newUser.Password, |
131 } else { | 134 } else { |
132 if newUser.Extent == nil { | 135 if newUser.Extent == nil { |
133 err = JSONError{http.StatusBadRequest, "extent is mandatory"} | 136 err = JSONError{http.StatusBadRequest, "extent is mandatory"} |
134 return | 137 return |
135 } | 138 } |
136 res, err = db.Exec( | 139 res, err = db.ExecContext( |
140 req.Context(), | |
137 updateUserUnprivSQL, | 141 updateUserUnprivSQL, |
138 user, | 142 user, |
139 newUser.Password, | 143 newUser.Password, |
140 newUser.Extent.X1, newUser.Extent.Y1, | 144 newUser.Extent.X1, newUser.Extent.Y1, |
141 newUser.Extent.X2, newUser.Extent.Y2, | 145 newUser.Extent.X2, newUser.Extent.Y2, |
168 } | 172 } |
169 return | 173 return |
170 } | 174 } |
171 | 175 |
172 func createUser( | 176 func createUser( |
173 input interface{}, req *http.Request, | 177 input interface{}, |
174 db *sql.DB, | 178 req *http.Request, |
179 db *sql.Conn, | |
175 ) (jr JSONResult, err error) { | 180 ) (jr JSONResult, err error) { |
176 | 181 |
177 user := input.(*models.User) | 182 user := input.(*models.User) |
178 | 183 |
179 if user.Extent == nil { | 184 if user.Extent == nil { |
180 _, err = db.Exec( | 185 _, err = db.ExecContext( |
186 req.Context(), | |
181 createUserSQL, | 187 createUserSQL, |
182 user.Role, | 188 user.Role, |
183 user.User, | 189 user.User, |
184 user.Password, | 190 user.Password, |
185 user.Country, | 191 user.Country, |
186 user.Email, | 192 user.Email, |
187 ) | 193 ) |
188 } else { | 194 } else { |
189 _, err = db.Exec( | 195 _, err = db.ExecContext( |
196 req.Context(), | |
190 createUserExtentSQL, | 197 createUserExtentSQL, |
191 user.Role, | 198 user.Role, |
192 user.User, | 199 user.User, |
193 user.Password, | 200 user.Password, |
194 user.Country, | 201 user.Country, |
210 } | 217 } |
211 return | 218 return |
212 } | 219 } |
213 | 220 |
214 func listUsers( | 221 func listUsers( |
215 _ interface{}, req *http.Request, | 222 _ interface{}, |
216 db *sql.DB, | 223 req *http.Request, |
224 db *sql.Conn, | |
217 ) (jr JSONResult, err error) { | 225 ) (jr JSONResult, err error) { |
218 | 226 |
219 var rows *sql.Rows | 227 var rows *sql.Rows |
220 | 228 |
221 rows, err = db.Query(listUsersSQL) | 229 rows, err = db.QueryContext(req.Context(), listUsersSQL) |
222 if err != nil { | 230 if err != nil { |
223 return | 231 return |
224 } | 232 } |
225 defer rows.Close() | 233 defer rows.Close() |
226 | 234 |
248 } | 256 } |
249 return | 257 return |
250 } | 258 } |
251 | 259 |
252 func listUser( | 260 func listUser( |
253 _ interface{}, req *http.Request, | 261 _ interface{}, |
254 db *sql.DB, | 262 req *http.Request, |
263 db *sql.Conn, | |
255 ) (jr JSONResult, err error) { | 264 ) (jr JSONResult, err error) { |
256 | 265 |
257 user := models.UserName(mux.Vars(req)["user"]) | 266 user := models.UserName(mux.Vars(req)["user"]) |
258 if !user.IsValid() { | 267 if !user.IsValid() { |
259 err = JSONError{http.StatusBadRequest, "error: user invalid"} | 268 err = JSONError{http.StatusBadRequest, "error: user invalid"} |
263 result := &models.User{ | 272 result := &models.User{ |
264 User: user, | 273 User: user, |
265 Extent: &models.BoundingBox{}, | 274 Extent: &models.BoundingBox{}, |
266 } | 275 } |
267 | 276 |
268 err = db.QueryRow(listUserSQL, user).Scan( | 277 err = db.QueryRowContext(req.Context(), listUserSQL, user).Scan( |
269 &result.Role, | 278 &result.Role, |
270 &result.Country, | 279 &result.Country, |
271 &result.Email, | 280 &result.Email, |
272 &result.Extent.X1, &result.Extent.Y1, | 281 &result.Extent.X1, &result.Extent.Y1, |
273 &result.Extent.X2, &result.Extent.Y2, | 282 &result.Extent.X2, &result.Extent.Y2, |