| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | package logicimport (	"encoding/json"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/models")// DecrimentKey - decriments key usesfunc DecrimentKey(networkName string, keyvalue string) {	var network models.Network	network, err := GetParentNetwork(networkName)	if err != nil {		return	}	for i := len(network.AccessKeys) - 1; i >= 0; i-- {		currentkey := network.AccessKeys[i]		if currentkey.Value == keyvalue {			network.AccessKeys[i].Uses--			if network.AccessKeys[i].Uses < 1 {				network.AccessKeys = append(network.AccessKeys[:i],					network.AccessKeys[i+1:]...)				break			}		}	}	if newNetworkData, err := json.Marshal(&network); err != nil {		Log("failed to decrement key", 2)		return	} else {		database.Insert(network.NetID, string(newNetworkData), database.NETWORKS_TABLE_NAME)	}}// IsKeyValid - check if key is validfunc IsKeyValid(networkname string, keyvalue string) bool {	network, _ := GetParentNetwork(networkname)	var key models.AccessKey	foundkey := false	isvalid := false	for i := len(network.AccessKeys) - 1; i >= 0; i-- {		currentkey := network.AccessKeys[i]		if currentkey.Value == keyvalue {			key = currentkey			foundkey = true		}	}	if foundkey {		if key.Uses > 0 {			isvalid = true		}	}	return isvalid}func RemoveKeySensitiveInfo(keys []models.AccessKey) []models.AccessKey {	var returnKeys []models.AccessKey	for _, key := range keys {		key.Value = models.PLACEHOLDER_KEY_TEXT		key.AccessString = models.PLACEHOLDER_TOKEN_TEXT		returnKeys = append(returnKeys, key)	}	return returnKeys}
 |