Mercurial > gemma
comparison controllers/user.go @ 240:9012e4045da4
Implemented /user delete controller.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 26 Jul 2018 17:56:02 +0200 |
parents | 3771788d3dae |
children | 3b688fe04c39 |
comparison
equal
deleted
inserted
replaced
239:713234a04a87 | 240:9012e4045da4 |
---|---|
6 "errors" | 6 "errors" |
7 "net/http" | 7 "net/http" |
8 "regexp" | 8 "regexp" |
9 "strings" | 9 "strings" |
10 | 10 |
11 "gemma.intevation.de/gemma/auth" | |
11 "github.com/gorilla/mux" | 12 "github.com/gorilla/mux" |
12 ) | 13 ) |
13 | 14 |
14 type ( | 15 type ( |
15 Email string | 16 Email string |
39 ST_MakeBox2D(ST_Point($5, $6), ST_Point($7, $8)), $9)` | 40 ST_MakeBox2D(ST_Point($5, $6), ST_Point($7, $8)), $9)` |
40 | 41 |
41 updateUserSQL = `SELECT sys_admin.update_user($1, $2, $3, $4, $5, NULL, $6)` | 42 updateUserSQL = `SELECT sys_admin.update_user($1, $2, $3, $4, $5, NULL, $6)` |
42 updateUserExtentSQL = `SELECT sys_admin.update_user($1, $2, $3, $4, $5, | 43 updateUserExtentSQL = `SELECT sys_admin.update_user($1, $2, $3, $4, $5, |
43 ST_MakeBox2D(ST_Point($6, $7), ST_Point($8, $9)), $10)` | 44 ST_MakeBox2D(ST_Point($6, $7), ST_Point($8, $9)), $10)` |
45 | |
46 deleteUserSQL = `SELECT sys_admin.delete_user($1)` | |
44 ) | 47 ) |
45 | 48 |
46 var ( | 49 var ( |
47 // https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression | 50 // https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression |
48 emailRe = regexp.MustCompile( | 51 emailRe = regexp.MustCompile( |
115 } | 118 } |
116 } | 119 } |
117 return errNoValidRole | 120 return errNoValidRole |
118 } | 121 } |
119 | 122 |
123 func deleteUser( | |
124 rw http.ResponseWriter, req *http.Request, | |
125 input interface{}, db *sql.DB, | |
126 ) (jr JSONResult, err error) { | |
127 | |
128 user := mux.Vars(req)["user"] | |
129 if user == "" { | |
130 err = JSONError{http.StatusBadRequest, "error: user empty"} | |
131 return | |
132 } | |
133 | |
134 session, _ := auth.GetSession(req) | |
135 if session.User == user { | |
136 err = JSONError{http.StatusBadRequest, "error: cannot delete yourself"} | |
137 return | |
138 } | |
139 | |
140 if _, err = db.Exec(deleteUserSQL, user); err != nil { | |
141 return | |
142 } | |
143 | |
144 // Running in a go routine should not be necessary. | |
145 go func() { auth.ConnPool.Logout(user) }() | |
146 | |
147 jr = JSONResult{Code: http.StatusNoContent} | |
148 return | |
149 } | |
150 | |
120 func updateUser( | 151 func updateUser( |
121 rw http.ResponseWriter, req *http.Request, | 152 rw http.ResponseWriter, req *http.Request, |
122 input interface{}, | 153 input interface{}, db *sql.DB, |
123 db *sql.DB, | |
124 ) (jr JSONResult, err error) { | 154 ) (jr JSONResult, err error) { |
125 | 155 |
126 user := mux.Vars(req)["user"] | 156 user := mux.Vars(req)["user"] |
127 if user == "" { | 157 if user == "" { |
128 err = JSONError{http.StatusBadRequest, "error: user empty"} | 158 err = JSONError{http.StatusBadRequest, "error: user empty"} |
170 return | 200 return |
171 } | 201 } |
172 | 202 |
173 func createUser( | 203 func createUser( |
174 rw http.ResponseWriter, req *http.Request, | 204 rw http.ResponseWriter, req *http.Request, |
175 input interface{}, | 205 input interface{}, db *sql.DB, |
176 db *sql.DB, | |
177 ) (jr JSONResult, err error) { | 206 ) (jr JSONResult, err error) { |
178 | 207 |
179 user := input.(*User) | 208 user := input.(*User) |
180 | 209 |
181 if user.Extent == nil { | 210 if user.Extent == nil { |