(w http.ResponseWriter, r *http.Request, user User, tokenData TokenData)
| 409 | } |
| 410 | |
| 411 | func (h *WebUiHandler) handleClients(w http.ResponseWriter, r *http.Request, user User, tokenData TokenData) { |
| 412 | |
| 413 | r.ParseForm() |
| 414 | |
| 415 | switch r.Method { |
| 416 | case "GET": |
| 417 | var users map[string]User |
| 418 | |
| 419 | // TODO: handle security checks in api |
| 420 | if user.IsAdmin { |
| 421 | users = h.db.GetUsers() |
| 422 | } else { |
| 423 | user, _ := h.db.GetUser(tokenData.Owner) |
| 424 | users = make(map[string]User) |
| 425 | users[tokenData.Owner] = user |
| 426 | } |
| 427 | |
| 428 | clients := make(map[string]DbClient) |
| 429 | |
| 430 | for _, user := range users { |
| 431 | for clientName, client := range user.Clients { |
| 432 | clients[clientName] = client |
| 433 | } |
| 434 | } |
| 435 | |
| 436 | templateData := struct { |
| 437 | User User |
| 438 | Users map[string]User |
| 439 | Clients map[string]DbClient |
| 440 | }{ |
| 441 | User: user, |
| 442 | Users: users, |
| 443 | Clients: clients, |
| 444 | } |
| 445 | |
| 446 | err := h.tmpl.ExecuteTemplate(w, "clients.tmpl", templateData) |
| 447 | if err != nil { |
| 448 | w.WriteHeader(500) |
| 449 | io.WriteString(w, err.Error()) |
| 450 | return |
| 451 | } |
| 452 | case "POST": |
| 453 | |
| 454 | owner := r.Form.Get("owner") |
| 455 | clientName := r.Form.Get("client-name") |
| 456 | |
| 457 | err := h.api.SetClient(tokenData, r.Form, owner, clientName) |
| 458 | if err != nil { |
| 459 | w.WriteHeader(500) |
| 460 | h.alertDialog(w, r, err.Error(), "/clients") |
| 461 | return |
| 462 | } |
| 463 | |
| 464 | http.Redirect(w, r, "/clients", 303) |
| 465 | default: |
| 466 | w.WriteHeader(405) |
| 467 | h.alertDialog(w, r, "Invalid method for tokens", "/tokens") |
| 468 | return |
no test coverage detected