comparison pkg/controllers/user.go @ 442:fc37e7072022

Moved some models used in controllers to to model package because they may be needed elsewhere (e.g. GeoServer config).
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Tue, 21 Aug 2018 16:57:55 +0200
parents c49f4c1808b1
children b2dc9c2f69e0
comparison
equal deleted inserted replaced
441:76a76691a298 442:fc37e7072022
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/models"
11 ) 12 )
12 13
13 const ( 14 const (
14 createUserSQL = `INSERT INTO users.list_users 15 createUserSQL = `INSERT INTO users.list_users
15 VALUES ($1, $2, $3, $4, NULL, $5)` 16 VALUES ($1, $2, $3, $4, NULL, $5)`
55 _ interface{}, req *http.Request, 56 _ interface{}, req *http.Request,
56 db *sql.DB, 57 db *sql.DB,
57 ) (jr JSONResult, err error) { 58 ) (jr JSONResult, err error) {
58 59
59 user := mux.Vars(req)["user"] 60 user := mux.Vars(req)["user"]
60 if !UserName(user).isValid() { 61 if !models.UserName(user).IsValid() {
61 err = JSONError{http.StatusBadRequest, "error: user invalid"} 62 err = JSONError{http.StatusBadRequest, "error: user invalid"}
62 return 63 return
63 } 64 }
64 65
65 session, _ := auth.GetSession(req) 66 session, _ := auth.GetSession(req)
92 func updateUser( 93 func updateUser(
93 input interface{}, req *http.Request, 94 input interface{}, req *http.Request,
94 db *sql.DB, 95 db *sql.DB,
95 ) (jr JSONResult, err error) { 96 ) (jr JSONResult, err error) {
96 97
97 user := UserName(mux.Vars(req)["user"]) 98 user := models.UserName(mux.Vars(req)["user"])
98 if !user.isValid() { 99 if !user.IsValid() {
99 err = JSONError{http.StatusBadRequest, "error: user invalid"} 100 err = JSONError{http.StatusBadRequest, "error: user invalid"}
100 return 101 return
101 } 102 }
102 103
103 newUser := input.(*User) 104 newUser := input.(*models.User)
104 var res sql.Result 105 var res sql.Result
105 106
106 if s, _ := auth.GetSession(req); s.Roles.Has("sys_admin") { 107 if s, _ := auth.GetSession(req); s.Roles.Has("sys_admin") {
107 if newUser.Extent == nil { 108 if newUser.Extent == nil {
108 res, err = db.Exec( 109 res, err = db.Exec(
171 func createUser( 172 func createUser(
172 input interface{}, req *http.Request, 173 input interface{}, req *http.Request,
173 db *sql.DB, 174 db *sql.DB,
174 ) (jr JSONResult, err error) { 175 ) (jr JSONResult, err error) {
175 176
176 user := input.(*User) 177 user := input.(*models.User)
177 178
178 if user.Extent == nil { 179 if user.Extent == nil {
179 _, err = db.Exec( 180 _, err = db.Exec(
180 createUserSQL, 181 createUserSQL,
181 user.Role, 182 user.Role,
221 if err != nil { 222 if err != nil {
222 return 223 return
223 } 224 }
224 defer rows.Close() 225 defer rows.Close()
225 226
226 var users []*User 227 var users []*models.User
227 228
228 for rows.Next() { 229 for rows.Next() {
229 user := &User{Extent: &BoundingBox{}} 230 user := &models.User{Extent: &models.BoundingBox{}}
230 if err = rows.Scan( 231 if err = rows.Scan(
231 &user.Role, 232 &user.Role,
232 &user.User, 233 &user.User,
233 &user.Country, 234 &user.Country,
234 &user.Email, 235 &user.Email,
240 users = append(users, user) 241 users = append(users, user)
241 } 242 }
242 243
243 jr = JSONResult{ 244 jr = JSONResult{
244 Result: struct { 245 Result: struct {
245 Users []*User `json:"users"` 246 Users []*models.User `json:"users"`
246 }{users}, 247 }{users},
247 } 248 }
248 return 249 return
249 } 250 }
250 251
251 func listUser( 252 func listUser(
252 _ interface{}, req *http.Request, 253 _ interface{}, req *http.Request,
253 db *sql.DB, 254 db *sql.DB,
254 ) (jr JSONResult, err error) { 255 ) (jr JSONResult, err error) {
255 256
256 user := UserName(mux.Vars(req)["user"]) 257 user := models.UserName(mux.Vars(req)["user"])
257 if !user.isValid() { 258 if !user.IsValid() {
258 err = JSONError{http.StatusBadRequest, "error: user invalid"} 259 err = JSONError{http.StatusBadRequest, "error: user invalid"}
259 return 260 return
260 } 261 }
261 262
262 result := &User{ 263 result := &models.User{
263 User: user, 264 User: user,
264 Extent: &BoundingBox{}, 265 Extent: &models.BoundingBox{},
265 } 266 }
266 267
267 err = db.QueryRow(listUserSQL, user).Scan( 268 err = db.QueryRow(listUserSQL, user).Scan(
268 &result.Role, 269 &result.Role,
269 &result.Country, 270 &result.Country,