mirror of
https://github.com/netbirdio/netbird.git
synced 2024-11-23 08:33:45 +01:00
12ae2e93fc
Allow users to set groups in which the DNS management is disabled Added API, activity store, and network map sync test
84 lines
2.4 KiB
Go
84 lines
2.4 KiB
Go
package http
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/netbirdio/netbird/management/server"
|
|
"github.com/netbirdio/netbird/management/server/http/api"
|
|
"github.com/netbirdio/netbird/management/server/http/util"
|
|
"github.com/netbirdio/netbird/management/server/jwtclaims"
|
|
log "github.com/sirupsen/logrus"
|
|
"net/http"
|
|
)
|
|
|
|
// DNSSettings is a handler that returns the DNS settings of the account
|
|
type DNSSettings struct {
|
|
jwtExtractor jwtclaims.ClaimsExtractor
|
|
accountManager server.AccountManager
|
|
authAudience string
|
|
}
|
|
|
|
// NewDNSSettings returns a new instance of DNSSettings handler
|
|
func NewDNSSettings(accountManager server.AccountManager, authAudience string) *DNSSettings {
|
|
return &DNSSettings{
|
|
accountManager: accountManager,
|
|
authAudience: authAudience,
|
|
jwtExtractor: *jwtclaims.NewClaimsExtractor(nil),
|
|
}
|
|
}
|
|
|
|
// GetDNSSettings returns the DNS settings for the account
|
|
func (h *DNSSettings) GetDNSSettings(w http.ResponseWriter, r *http.Request) {
|
|
claims := h.jwtExtractor.ExtractClaimsFromRequestContext(r, h.authAudience)
|
|
account, user, err := h.accountManager.GetAccountFromToken(claims)
|
|
if err != nil {
|
|
log.Error(err)
|
|
http.Redirect(w, r, "/", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
dnsSettings, err := h.accountManager.GetDNSSettings(account.Id, user.Id)
|
|
if err != nil {
|
|
util.WriteError(err, w)
|
|
return
|
|
}
|
|
|
|
apiDNSSettings := &api.DNSSettings{
|
|
DisabledManagementGroups: dnsSettings.DisabledManagementGroups,
|
|
}
|
|
|
|
util.WriteJSONObject(w, apiDNSSettings)
|
|
}
|
|
|
|
// UpdateDNSSettings handles update to DNS settings of an account
|
|
func (h *DNSSettings) UpdateDNSSettings(w http.ResponseWriter, r *http.Request) {
|
|
claims := h.jwtExtractor.ExtractClaimsFromRequestContext(r, h.authAudience)
|
|
account, user, err := h.accountManager.GetAccountFromToken(claims)
|
|
if err != nil {
|
|
util.WriteError(err, w)
|
|
return
|
|
}
|
|
|
|
var req api.PutApiDnsSettingsJSONRequestBody
|
|
err = json.NewDecoder(r.Body).Decode(&req)
|
|
if err != nil {
|
|
util.WriteErrorResponse("couldn't parse JSON request", http.StatusBadRequest, w)
|
|
return
|
|
}
|
|
|
|
updateDNSSettings := &server.DNSSettings{
|
|
DisabledManagementGroups: req.DisabledManagementGroups,
|
|
}
|
|
|
|
err = h.accountManager.SaveDNSSettings(account.Id, user.Id, updateDNSSettings)
|
|
if err != nil {
|
|
util.WriteError(err, w)
|
|
return
|
|
}
|
|
|
|
resp := api.DNSSettings{
|
|
DisabledManagementGroups: updateDNSSettings.DisabledManagementGroups,
|
|
}
|
|
|
|
util.WriteJSONObject(w, &resp)
|
|
}
|