commento/api/domain_list.go

78 lines
1.6 KiB
Go
Raw Permalink Normal View History

package main
import (
"net/http"
)
func domainList(ownerHex string) ([]domain, error) {
if ownerHex == "" {
return []domain{}, errorMissingField
}
statement := `
SELECT ` + domainsRowColumns + `
FROM domains
WHERE ownerHex=$1;
`
rows, err := db.Query(statement, ownerHex)
if err != nil {
logger.Errorf("cannot query domains: %v", err)
return nil, errorInternal
}
defer rows.Close()
domains := []domain{}
for rows.Next() {
var d domain
if err = domainsRowScan(rows, &d); err != nil {
logger.Errorf("cannot Scan domain: %v", err)
return nil, errorInternal
}
d.Moderators, err = domainModeratorList(d.Domain)
if err != nil {
return []domain{}, err
}
domains = append(domains, d)
}
return domains, rows.Err()
}
func domainListHandler(w http.ResponseWriter, r *http.Request) {
type request struct {
OwnerToken *string `json:"ownerToken"`
}
var x request
if err := bodyUnmarshal(r, &x); err != nil {
bodyMarshal(w, response{"success": false, "message": err.Error()})
return
}
o, err := ownerGetByOwnerToken(*x.OwnerToken)
if err != nil {
bodyMarshal(w, response{"success": false, "message": err.Error()})
return
}
domains, err := domainList(o.OwnerHex)
if err != nil {
bodyMarshal(w, response{"success": false, "message": err.Error()})
return
}
bodyMarshal(w, response{
"success": true,
"domains": domains,
"configuredOauths": map[string]bool{
"google": googleConfigured,
"twitter": twitterConfigured,
"github": githubConfigured,
2022-10-11 00:01:30 +08:00
"authentik": authentikConfigured,
"gitlab": gitlabConfigured,
},
})
}