Mercurial > gemma
comparison pkg/controllers/user.go @ 822:8926c413db21
Started implementation of test mail end point.
This is intended to test the sending of system notification emails.
TODO: more sensible content.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Thu, 27 Sep 2018 18:52:41 +0200 |
parents | 8a0737aa6ab6 |
children | f3adc0f3a20a |
comparison
equal
deleted
inserted
replaced
821:d32516051d08 | 822:8926c413db21 |
---|---|
6 "net/http" | 6 "net/http" |
7 | 7 |
8 "github.com/gorilla/mux" | 8 "github.com/gorilla/mux" |
9 | 9 |
10 "gemma.intevation.de/gemma/pkg/auth" | 10 "gemma.intevation.de/gemma/pkg/auth" |
11 "gemma.intevation.de/gemma/pkg/misc" | |
11 "gemma.intevation.de/gemma/pkg/models" | 12 "gemma.intevation.de/gemma/pkg/models" |
12 ) | 13 ) |
13 | 14 |
14 const ( | 15 const ( |
15 createUserSQL = `INSERT INTO users.list_users | 16 createUserSQL = `INSERT INTO users.list_users |
294 } | 295 } |
295 | 296 |
296 jr.Result = result | 297 jr.Result = result |
297 return | 298 return |
298 } | 299 } |
300 | |
301 func sendTestMail( | |
302 _ interface{}, | |
303 req *http.Request, | |
304 db *sql.Conn, | |
305 ) (jr JSONResult, err error) { | |
306 | |
307 user := models.UserName(mux.Vars(req)["user"]) | |
308 if !user.IsValid() { | |
309 err = JSONError{http.StatusBadRequest, "error: user invalid"} | |
310 return | |
311 } | |
312 | |
313 userData := &models.User{ | |
314 User: user, | |
315 Extent: &models.BoundingBox{}, | |
316 } | |
317 | |
318 err = db.QueryRowContext(req.Context(), listUserSQL, user).Scan( | |
319 &userData.Role, | |
320 &userData.Country, | |
321 &userData.Email, | |
322 &userData.Extent.X1, &userData.Extent.Y1, | |
323 &userData.Extent.X2, &userData.Extent.Y2, | |
324 ) | |
325 | |
326 switch { | |
327 case err == sql.ErrNoRows: | |
328 err = JSONError{ | |
329 Code: http.StatusNotFound, | |
330 Message: fmt.Sprintf("Cannot find user %s.", user), | |
331 } | |
332 return | |
333 case err != nil: | |
334 return | |
335 } | |
336 | |
337 var body string | |
338 | |
339 if userData.Role == "sys_admin" { | |
340 body = "Test for Sys Admin Notification" | |
341 } else if userData.Role == "waterway_admin" { | |
342 body = "Test for Water Way Admin Notification" | |
343 } else { | |
344 err = JSONError{ | |
345 Code: http.StatusBadRequest, | |
346 Message: "Test mails can only be generated for admin roles.", | |
347 } | |
348 return | |
349 } | |
350 err = misc.SendMail(string(userData.Email), "Test Email", body) | |
351 if err != nil { | |
352 return | |
353 } | |
354 | |
355 jr.Result = &struct { | |
356 Message string `json:"message"` | |
357 }{"Sending test mail."} | |
358 | |
359 return | |
360 } |