Mercurial > gemma
comparison controllers/user.go @ 342:c6bd6ed18942
Use INSTEAD OF trigger for user deletion
As we already have this for updating, it's more symmetric to make
the whole thing look like a real table. TODO: make it happen also
for user creation.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Mon, 06 Aug 2018 12:37:06 +0200 |
parents | 003243ec5ce5 |
children | 5b03f420957d |
comparison
equal
deleted
inserted
replaced
341:889517f254f5 | 342:c6bd6ed18942 |
---|---|
26 updateUserExtentSQL = `UPDATE users.list_users | 26 updateUserExtentSQL = `UPDATE users.list_users |
27 SET (rolname, username, pw, country, map_extent, email_address) | 27 SET (rolname, username, pw, country, map_extent, email_address) |
28 = ($2, $3, $4, $5, ST_MakeBox2D(ST_Point($6, $7), ST_Point($8, $9)), $10) | 28 = ($2, $3, $4, $5, ST_MakeBox2D(ST_Point($6, $7), ST_Point($8, $9)), $10) |
29 WHERE username = $1` | 29 WHERE username = $1` |
30 | 30 |
31 deleteUserSQL = `SELECT sys_admin.delete_user($1)` | 31 deleteUserSQL = `DELETE FROM users.list_users WHERE username = $1` |
32 | 32 |
33 listUsersSQL = `SELECT | 33 listUsersSQL = `SELECT |
34 rolname, | 34 rolname, |
35 username, | 35 username, |
36 country, | 36 country, |
64 if session.User == user { | 64 if session.User == user { |
65 err = JSONError{http.StatusBadRequest, "error: cannot delete yourself"} | 65 err = JSONError{http.StatusBadRequest, "error: cannot delete yourself"} |
66 return | 66 return |
67 } | 67 } |
68 | 68 |
69 if _, err = db.Exec(deleteUserSQL, user); err != nil { | 69 var res sql.Result |
70 | |
71 if res, err = db.Exec(deleteUserSQL, user); err != nil { | |
72 return | |
73 } | |
74 | |
75 if n, err2 := res.RowsAffected(); err2 == nil && n == 0 { | |
76 err = JSONError{ | |
77 Code: http.StatusNotFound, | |
78 Message: fmt.Sprintf("Cannot find user %s.", user), | |
79 } | |
70 return | 80 return |
71 } | 81 } |
72 | 82 |
73 // Running in a go routine should not be necessary. | 83 // Running in a go routine should not be necessary. |
74 go func() { auth.ConnPool.Logout(user) }() | 84 go func() { auth.ConnPool.Logout(user) }() |