package webui import ( "html/template" "net/http" "git.adyxax.org/adyxax/tfstated/pkg/database" "git.adyxax.org/adyxax/tfstated/pkg/model" "go.n16f.net/uuid" ) type AccountsIdPage struct { Account *model.Account IsAdmin string Page *Page Username string StatePaths map[string]string UsernameDuplicate bool UsernameInvalid bool Versions []model.Version } var accountsIdTemplates = template.Must(template.ParseFS(htmlFS, "html/base.html", "html/accountsId.html")) func handleAccountsIdGET(db *database.DB) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var accountId uuid.UUID if err := accountId.Parse(r.PathValue("id")); err != nil { errorResponse(w, r, http.StatusBadRequest, err) return } account, err := db.LoadAccountById(accountId) if err != nil { errorResponse(w, r, http.StatusInternalServerError, err) return } if account == nil { errorResponse(w, r, http.StatusNotFound, err) return } statePaths, err := db.LoadStatePaths() if err != nil { errorResponse(w, r, http.StatusInternalServerError, err) return } versions, err := db.LoadVersionsByAccount(account) if err != nil { errorResponse(w, r, http.StatusInternalServerError, err) return } isAdmin := "" if account.IsAdmin { isAdmin = "1" } render(w, accountsIdTemplates, http.StatusOK, AccountsIdPage{ Account: account, IsAdmin: isAdmin, Page: makePage(r, &Page{ Section: "accounts", Title: account.Username, }), StatePaths: statePaths, Versions: versions, }) }) }