Merge pull request #3141 from gravitl/master

Master
This commit is contained in:
Abhishek K 2024-09-29 16:47:36 +04:00 committed by GitHub
commit 427a3b1ad0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 35 additions and 21 deletions

View file

@ -2,7 +2,6 @@ package controller
import (
"net/http"
"net/url"
"strings"
"github.com/gorilla/mux"
@ -92,7 +91,7 @@ func userMiddleWare(handler http.Handler) http.Handler {
if userID, ok := params["username"]; ok {
r.Header.Set("TARGET_RSRC_ID", userID)
} else {
username, _ := url.QueryUnescape(r.URL.Query().Get("username"))
username := r.URL.Query().Get("username")
if username != "" {
r.Header.Set("TARGET_RSRC_ID", username)
}

View file

@ -5,7 +5,6 @@ import (
"errors"
"fmt"
"net/http"
"net/url"
"reflect"
"github.com/gorilla/mux"
@ -240,7 +239,7 @@ func getUser(w http.ResponseWriter, r *http.Request) {
func getUserV1(w http.ResponseWriter, r *http.Request) {
// set header.
w.Header().Set("Content-Type", "application/json")
usernameFetched, _ := url.QueryUnescape(r.URL.Query().Get("username"))
usernameFetched := r.URL.Query().Get("username")
if usernameFetched == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("username is required"), "badrequest"))
return

View file

@ -2,7 +2,6 @@ package logic
import (
"net/http"
"net/url"
"strings"
"github.com/gorilla/mux"
@ -97,7 +96,7 @@ func ContinueIfUserMatch(next http.Handler) http.HandlerFunc {
var params = mux.Vars(r)
var requestedUser = params["username"]
if requestedUser == "" {
requestedUser, _ = url.QueryUnescape(r.URL.Query().Get("username"))
requestedUser = r.URL.Query().Get("username")
}
if requestedUser != r.Header.Get("user") {
ReturnErrorResponse(w, r, errorResponse)

View file

@ -21,11 +21,11 @@ import (
func Run() {
updateEnrollmentKeys()
assignSuperAdmin()
removeOldUserGrps()
syncUsers()
updateHosts()
updateNodes()
updateAcls()
}
func assignSuperAdmin() {
@ -124,6 +124,20 @@ func updateEnrollmentKeys() {
}
}
func removeOldUserGrps() {
rows, err := database.FetchRecords(database.USER_GROUPS_TABLE_NAME)
if err != nil {
return
}
for key, row := range rows {
userG := models.UserGroup{}
_ = json.Unmarshal([]byte(row), &userG)
if userG.ID == "" {
database.DeleteRecord(database.USER_GROUPS_TABLE_NAME, key)
}
}
}
func updateHosts() {
rows, err := database.FetchRecords(database.HOSTS_TABLE_NAME)
if err != nil {

View file

@ -71,8 +71,8 @@ func UserHandlers(r *mux.Router) {
// Responses:
// 200: ReturnSuccessResponse
func userInviteSignUp(w http.ResponseWriter, r *http.Request) {
email, _ := url.QueryUnescape(r.URL.Query().Get("email"))
code, _ := url.QueryUnescape(r.URL.Query().Get("invite_code"))
email := r.URL.Query().Get("email")
code := r.URL.Query().Get("invite_code")
in, err := logic.GetUserInvite(email)
if err != nil {
logger.Log(0, "failed to fetch users: ", err.Error())
@ -133,8 +133,8 @@ func userInviteSignUp(w http.ResponseWriter, r *http.Request) {
// Responses:
// 200: ReturnSuccessResponse
func userInviteVerify(w http.ResponseWriter, r *http.Request) {
email, _ := url.QueryUnescape(r.URL.Query().Get("email"))
code, _ := url.QueryUnescape(r.URL.Query().Get("invite_code"))
email := r.URL.Query().Get("email")
code := r.URL.Query().Get("invite_code")
err := logic.ValidateAndApproveUserInvite(email, code)
if err != nil {
logger.Log(0, "failed to fetch users: ", err.Error())
@ -299,7 +299,7 @@ func listUserInvites(w http.ResponseWriter, r *http.Request) {
// Responses:
// 200: ReturnSuccessResponse
func deleteUserInvite(w http.ResponseWriter, r *http.Request) {
email, _ := url.QueryUnescape(r.URL.Query().Get("invitee_email"))
email := r.URL.Query().Get("invitee_email")
err := logic.DeleteUserInvite(email)
if err != nil {
logger.Log(0, "failed to delete user invite: ", email, err.Error())
@ -365,7 +365,7 @@ func listUserGroups(w http.ResponseWriter, r *http.Request) {
// 200: userBodyResponse
func getUserGroup(w http.ResponseWriter, r *http.Request) {
gid, _ := url.QueryUnescape(r.URL.Query().Get("group_id"))
gid := r.URL.Query().Get("group_id")
if gid == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("group id is required"), "badrequest"))
return
@ -486,14 +486,14 @@ func updateUserGroup(w http.ResponseWriter, r *http.Request) {
// @Failure 500 {object} models.ErrorResponse
func deleteUserGroup(w http.ResponseWriter, r *http.Request) {
gid, _ := url.QueryUnescape(r.URL.Query().Get("group_id"))
gid := r.URL.Query().Get("group_id")
if gid == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("role is required"), "badrequest"))
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("group id is required"), "badrequest"))
return
}
userG, err := proLogic.GetUserGroup(models.UserGroupID(gid))
if err != nil {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("role is required"), "badrequest"))
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("failed to fetch group details"), "badrequest"))
return
}
err = proLogic.DeleteUserGroup(models.UserGroupID(gid))
@ -512,7 +512,7 @@ func deleteUserGroup(w http.ResponseWriter, r *http.Request) {
// @Success 200 {object} []models.UserRolePermissionTemplate
// @Failure 500 {object} models.ErrorResponse
func ListRoles(w http.ResponseWriter, r *http.Request) {
platform, _ := url.QueryUnescape(r.URL.Query().Get("platform"))
platform := r.URL.Query().Get("platform")
var roles []models.UserRolePermissionTemplate
var err error
if platform == "true" {
@ -538,7 +538,7 @@ func ListRoles(w http.ResponseWriter, r *http.Request) {
// @Success 200 {object} models.UserRolePermissionTemplate
// @Failure 500 {object} models.ErrorResponse
func getRole(w http.ResponseWriter, r *http.Request) {
rid, _ := url.QueryUnescape(r.URL.Query().Get("role_id"))
rid := r.URL.Query().Get("role_id")
if rid == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("role is required"), "badrequest"))
return
@ -628,7 +628,7 @@ func updateRole(w http.ResponseWriter, r *http.Request) {
// @Failure 500 {object} models.ErrorResponse
func deleteRole(w http.ResponseWriter, r *http.Request) {
rid, _ := url.QueryUnescape(r.URL.Query().Get("role_id"))
rid := r.URL.Query().Get("role_id")
if rid == "" {
logic.ReturnErrorResponse(w, r, logic.FormatError(errors.New("role is required"), "badrequest"))
return

View file

@ -75,6 +75,9 @@ func UserRolesInit() {
}
func CreateDefaultNetworkRolesAndGroups(netID models.NetworkID) {
if netID.String() == "" {
return
}
var NetworkAdminPermissionTemplate = models.UserRolePermissionTemplate{
ID: models.UserRoleID(fmt.Sprintf("%s-%s", netID, models.NetworkAdmin)),
Default: true,
@ -120,7 +123,7 @@ func CreateDefaultNetworkRolesAndGroups(netID models.NetworkID) {
models.UserRoleID(fmt.Sprintf("%s-%s", netID, models.NetworkAdmin)): {},
},
},
MetaData: "The network role was automatically created by Netmaker.",
MetaData: "The network group was automatically created by Netmaker.",
}
var NetworkUserGroup = models.UserGroup{
ID: models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkUser)),
@ -129,7 +132,7 @@ func CreateDefaultNetworkRolesAndGroups(netID models.NetworkID) {
models.UserRoleID(fmt.Sprintf("%s-%s", netID, models.NetworkUser)): {},
},
},
MetaData: "The network role was automatically created by Netmaker.",
MetaData: "The network group was automatically created by Netmaker.",
}
d, _ = json.Marshal(NetworkAdminGroup)
database.Insert(NetworkAdminGroup.ID.String(), string(d), database.USER_GROUPS_TABLE_NAME)