netmaker/cli/functions/access_tokens.go
Aceix 506f73ebb9
Merge pull request #3441 from gravitl/nmctl-access-token
feat: add support for user access tokens in nmctl
2025-05-20 09:16:24 +05:30

58 lines
1.7 KiB
Go

package functions
import (
"encoding/json"
"log"
"net/http"
"github.com/gravitl/netmaker/models"
"github.com/gravitl/netmaker/schema"
)
// CreateAccessToken - creates an access token for a user
func CreateAccessToken(payload *schema.UserAccessToken) *models.SuccessfulUserLoginResponse {
res := request[models.SuccessResponse](http.MethodPost, "/api/v1/users/access_token", payload)
if res.Code != http.StatusOK {
log.Fatalf("Error creating access token: %s", res.Message)
}
var token models.SuccessfulUserLoginResponse
responseBytes, err := json.Marshal(res.Response)
if err != nil {
log.Fatalf("Error marshaling response: %v", err)
}
if err := json.Unmarshal(responseBytes, &token); err != nil {
log.Fatalf("Error unmarshaling token: %v", err)
}
return &token
}
// GetAccessToken - fetch all access tokens per user
func GetAccessToken(userName string) []schema.UserAccessToken {
res := request[models.SuccessResponse](http.MethodGet, "/api/v1/users/access_token?username="+userName, nil)
if res.Code != http.StatusOK {
log.Fatalf("Error getting access token: %s", res.Message)
}
var tokens []schema.UserAccessToken
responseBytes, err := json.Marshal(res.Response)
if err != nil {
log.Fatalf("Error marshaling response: %v", err)
}
if err := json.Unmarshal(responseBytes, &tokens); err != nil {
log.Fatalf("Error unmarshaling tokens: %v", err)
}
return tokens
}
// DeleteAccessToken - delete an access token
func DeleteAccessToken(id string) {
res := request[models.SuccessResponse](http.MethodDelete, "/api/v1/users/access_token?id="+id, nil)
if res.Code != http.StatusOK {
log.Fatalf("Error deleting access token: %s", res.Message)
}
}