fix token issue

This commit is contained in:
behrooz
2025-08-15 18:23:50 +03:30
parent 244be8ea85
commit 720e6914fb
2 changed files with 52 additions and 18 deletions

View File

@@ -32,8 +32,28 @@ import (
"k8s.io/client-go/tools/remotecommand" "k8s.io/client-go/tools/remotecommand"
) )
func Authorization(w http.ResponseWriter, r *http.Request) {
var header models.Header
var user models.User
header.Authorization = r.Header.Get("Authorization")
err := helpers.DecodeJwt(&header.Authorization, &user)
if err != nil {
http.Error(w, "Anauthorized User", http.StatusUnauthorized)
return
}
err = helpers.ValidateUser(user.Username)
if err != nil {
http.Error(w, "Anauthorized User", http.StatusUnauthorized)
return
}
}
func CreateClusterHandler(w http.ResponseWriter, r *http.Request) { func CreateClusterHandler(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
var cluster models.Cluster var cluster models.Cluster
_ = json.NewDecoder(r.Body).Decode(&cluster) _ = json.NewDecoder(r.Body).Decode(&cluster)
@@ -71,6 +91,7 @@ func CreateClusterHandler(w http.ResponseWriter, r *http.Request) {
func Deletecluster(w http.ResponseWriter, r *http.Request) { func Deletecluster(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clusterName := r.URL.Query().Get("Name") clusterName := r.URL.Query().Get("Name")
if clusterName == "" { if clusterName == "" {
http.Error(w, "Invalid input", http.StatusBadRequest) http.Error(w, "Invalid input", http.StatusBadRequest)
@@ -122,16 +143,7 @@ func getClientset(w http.ResponseWriter, clustername string) (*kubernetes.Client
func ListUserClusters(w http.ResponseWriter, r *http.Request) { func ListUserClusters(w http.ResponseWriter, r *http.Request) {
var header models.Header Authorization(w, r)
var user models.User
header.Authorization = r.Header.Get("Authorization")
helpers.DecodeJwt(&header.Authorization, &user)
err := helpers.ValidateUser(user.Username)
if err != nil {
http.Error(w, "Anauthorized User", http.StatusUnauthorized)
return
}
_, clusterList := argohandler.ListUserClusters("userid") _, clusterList := argohandler.ListUserClusters("userid")
w.Header().Set("Content-Type", "application/json") w.Header().Set("Content-Type", "application/json")
@@ -141,6 +153,7 @@ func ListUserClusters(w http.ResponseWriter, r *http.Request) {
func Cluster_namespaces(w http.ResponseWriter, r *http.Request) { func Cluster_namespaces(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
if clustername == "" { if clustername == "" {
@@ -175,6 +188,7 @@ func Cluster_namespaces(w http.ResponseWriter, r *http.Request) {
func Cluster_services(w http.ResponseWriter, r *http.Request) { func Cluster_services(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -225,6 +239,7 @@ func Cluster_services(w http.ResponseWriter, r *http.Request) {
func Cluster_statefulset(w http.ResponseWriter, r *http.Request) { func Cluster_statefulset(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -273,6 +288,7 @@ func Cluster_statefulset(w http.ResponseWriter, r *http.Request) {
func Cluster_daemonsets(w http.ResponseWriter, r *http.Request) { func Cluster_daemonsets(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -324,6 +340,7 @@ func Cluster_daemonsets(w http.ResponseWriter, r *http.Request) {
func Cluster_deployments(w http.ResponseWriter, r *http.Request) { func Cluster_deployments(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -384,6 +401,7 @@ func servicePortsToString(ports []corev1.ServicePort) string {
} }
func Cluster_pods(w http.ResponseWriter, r *http.Request) { func Cluster_pods(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -443,12 +461,15 @@ func getClusterConfig(clustername string) (string, error) {
} }
decoded, err := base64.StdEncoding.DecodeString(existsCluster.Cluster_config) decoded, err := base64.StdEncoding.DecodeString(existsCluster.Cluster_config)
if err != nil {
return string(decoded), nil return string(decoded), nil
} }
return "", err
}
func Connect(w http.ResponseWriter, r *http.Request) { func Connect(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clusterName := r.URL.Query().Get("Name") clusterName := r.URL.Query().Get("Name")
if clusterName == "" { if clusterName == "" {
http.Error(w, "Missing 'Name' parameter", http.StatusBadRequest) http.Error(w, "Missing 'Name' parameter", http.StatusBadRequest)
@@ -470,12 +491,9 @@ func Connect(w http.ResponseWriter, r *http.Request) {
} }
// func Cluster_details(w http.ResponseWriter, r *http.Request) {
// }
func Cluster_jobs(w http.ResponseWriter, r *http.Request) { func Cluster_jobs(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -538,6 +556,7 @@ func Cluster_jobs(w http.ResponseWriter, r *http.Request) {
func Cluster_replicasets(w http.ResponseWriter, r *http.Request) { func Cluster_replicasets(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -583,6 +602,7 @@ func Cluster_replicasets(w http.ResponseWriter, r *http.Request) {
func Cluster_replicationcontrollers(w http.ResponseWriter, r *http.Request) { func Cluster_replicationcontrollers(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -625,6 +645,7 @@ func Cluster_replicationcontrollers(w http.ResponseWriter, r *http.Request) {
func Cluster_cronjobs(w http.ResponseWriter, r *http.Request) { func Cluster_cronjobs(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
@@ -671,6 +692,8 @@ func Cluster_cronjobs(w http.ResponseWriter, r *http.Request) {
} }
func Pod_logs(w http.ResponseWriter, r *http.Request) { func Pod_logs(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
podName := r.URL.Query().Get("Pod") podName := r.URL.Query().Get("Pod")
@@ -707,6 +730,7 @@ func Pod_logs(w http.ResponseWriter, r *http.Request) {
} }
func Pod_exec(w http.ResponseWriter, r *http.Request) { func Pod_exec(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
podName := r.URL.Query().Get("Pod") podName := r.URL.Query().Get("Pod")
@@ -775,6 +799,7 @@ func Pod_exec(w http.ResponseWriter, r *http.Request) {
} }
func Pod_delete(w http.ResponseWriter, r *http.Request) { func Pod_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
podName := r.URL.Query().Get("Pod") podName := r.URL.Query().Get("Pod")
@@ -801,6 +826,7 @@ func Pod_delete(w http.ResponseWriter, r *http.Request) {
} }
func Service_delete(w http.ResponseWriter, r *http.Request) { func Service_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
serviceName := r.URL.Query().Get("serviceName") serviceName := r.URL.Query().Get("serviceName")
@@ -827,6 +853,7 @@ func Service_delete(w http.ResponseWriter, r *http.Request) {
} }
func Deployment_delete(w http.ResponseWriter, r *http.Request) { func Deployment_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
deploymenteName := r.URL.Query().Get("deploymenteName") deploymenteName := r.URL.Query().Get("deploymenteName")
@@ -853,6 +880,7 @@ func Deployment_delete(w http.ResponseWriter, r *http.Request) {
} }
func StatefulSet_delete(w http.ResponseWriter, r *http.Request) { func StatefulSet_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
statefulSetName := r.URL.Query().Get("statefulSetName") statefulSetName := r.URL.Query().Get("statefulSetName")
@@ -879,6 +907,7 @@ func StatefulSet_delete(w http.ResponseWriter, r *http.Request) {
} }
func Daemonsets_delete(w http.ResponseWriter, r *http.Request) { func Daemonsets_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
daemonsetsName := r.URL.Query().Get("daemonsetsName") daemonsetsName := r.URL.Query().Get("daemonsetsName")
@@ -905,6 +934,7 @@ func Daemonsets_delete(w http.ResponseWriter, r *http.Request) {
} }
func JobsName_delete(w http.ResponseWriter, r *http.Request) { func JobsName_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
jobsName := r.URL.Query().Get("jobsName") jobsName := r.URL.Query().Get("jobsName")
@@ -931,6 +961,7 @@ func JobsName_delete(w http.ResponseWriter, r *http.Request) {
} }
func Replicaset_delete(w http.ResponseWriter, r *http.Request) { func Replicaset_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
replicasetName := r.URL.Query().Get("replicasetName") replicasetName := r.URL.Query().Get("replicasetName")
@@ -957,6 +988,7 @@ func Replicaset_delete(w http.ResponseWriter, r *http.Request) {
} }
func Replicationcontroller_delete(w http.ResponseWriter, r *http.Request) { func Replicationcontroller_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
replicationcontrollerName := r.URL.Query().Get("replicationcontrollerName") replicationcontrollerName := r.URL.Query().Get("replicationcontrollerName")
@@ -983,6 +1015,7 @@ func Replicationcontroller_delete(w http.ResponseWriter, r *http.Request) {
} }
func Cronjob_delete(w http.ResponseWriter, r *http.Request) { func Cronjob_delete(w http.ResponseWriter, r *http.Request) {
Authorization(w, r)
clustername := r.URL.Query().Get("Name") clustername := r.URL.Query().Get("Name")
namespace := r.URL.Query().Get("Namespace") namespace := r.URL.Query().Get("Namespace")
cronjobName := r.URL.Query().Get("cronjobName") cronjobName := r.URL.Query().Get("cronjobName")

View File

@@ -69,7 +69,7 @@ func Human(d time.Duration) string {
var jwtKey = []byte("mysecret123") var jwtKey = []byte("mysecret123")
func DecodeJwt(tokenString *string, user *models.User) { func DecodeJwt(tokenString *string, user *models.User) error {
claims := jwt.MapClaims{} claims := jwt.MapClaims{}
_, err := jwt.ParseWithClaims(*tokenString, claims, func(token *jwt.Token) (interface{}, error) { _, err := jwt.ParseWithClaims(*tokenString, claims, func(token *jwt.Token) (interface{}, error) {
return []byte(jwtKey), nil return []byte(jwtKey), nil
@@ -77,10 +77,11 @@ func DecodeJwt(tokenString *string, user *models.User) {
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return return err
} }
user.Username = claims["username"].(string) user.Username = claims["username"].(string)
return nil
} }
func ValidateUser(user string) error { func ValidateUser(user string) error {