Commit ca9916b7 authored by ajlarrosa's avatar ajlarrosa

hs-12 Mejora en mensajes de errores

parent e1aec448
package controllers package controllers
import ( import (
"net/http"
"strconv"
"github.com/genshen/ssh-web-console/src/models" "github.com/genshen/ssh-web-console/src/models"
"github.com/genshen/ssh-web-console/src/utils" "github.com/genshen/ssh-web-console/src/utils"
"golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh"
"net/http"
"strconv"
) )
func SignIn(w http.ResponseWriter, r *http.Request) { func SignIn(w http.ResponseWriter, r *http.Request) {
...@@ -35,13 +36,25 @@ func SignIn(w http.ResponseWriter, r *http.Request) { ...@@ -35,13 +36,25 @@ func SignIn(w http.ResponseWriter, r *http.Request) {
session.Node = utils.NewSSHNode(userinfo.Host, userinfo.Port) session.Node = utils.NewSSHNode(userinfo.Host, userinfo.Port)
err := session.Connect(userinfo.Username, ssh.Password(userinfo.Password)) err := session.Connect(userinfo.Username, ssh.Password(userinfo.Password))
if err != nil { if err != nil {
errUnmarshal = models.JsonResponse{HasError: true, Message: models.SIGN_IN_FORM_TYPE_ERROR_PASSWORD} // Incluir mensaje de error SSH detallado
errorDetail := err.Error()
errUnmarshal = models.JsonResponse{
HasError: true,
Message: models.SIGN_IN_FORM_TYPE_ERROR_PASSWORD,
ErrorDetail: errorDetail,
}
} else { } else {
defer session.Close() defer session.Close()
// create session // create session
client, err := session.GetClient() client, err := session.GetClient()
if err != nil { if err != nil {
// bad connection. // bad connection.
errUnmarshal = models.JsonResponse{
HasError: true,
Message: models.SIGN_IN_FORM_TYPE_ERROR_TEST,
ErrorDetail: "Error al obtener cliente SSH: " + err.Error(),
}
utils.ServeJSON(w, errUnmarshal)
return return
} }
if session, err := client.NewSession(); err == nil { if session, err := client.NewSession(); err == nil {
...@@ -51,10 +64,30 @@ func SignIn(w http.ResponseWriter, r *http.Request) { ...@@ -51,10 +64,30 @@ func SignIn(w http.ResponseWriter, r *http.Request) {
utils.ServeJSON(w, errUnmarshal) utils.ServeJSON(w, errUnmarshal)
utils.SessionStorage.Put(token, expireUnix, userinfo) utils.SessionStorage.Put(token, expireUnix, userinfo)
return return
} else {
// Error al crear token JWT
errUnmarshal = models.JsonResponse{
HasError: true,
Message: models.SIGN_IN_FORM_TYPE_ERROR_TEST,
ErrorDetail: "Error al crear token JWT: " + err.Error(),
}
} }
} else {
// Error al ejecutar whoami
errUnmarshal = models.JsonResponse{
HasError: true,
Message: models.SIGN_IN_FORM_TYPE_ERROR_TEST,
ErrorDetail: "Error al ejecutar comando de prueba (whoami): " + err.Error(),
}
}
} else {
// Error al crear sesión SSH
errUnmarshal = models.JsonResponse{
HasError: true,
Message: models.SIGN_IN_FORM_TYPE_ERROR_TEST,
ErrorDetail: "Error al crear sesión SSH: " + err.Error(),
} }
} }
errUnmarshal = models.JsonResponse{HasError: true, Message: models.SIGN_IN_FORM_TYPE_ERROR_TEST}
} }
} else { } else {
errUnmarshal = models.JsonResponse{HasError: true, Message: models.SIGN_IN_FORM_TYPE_ERROR_VALID} errUnmarshal = models.JsonResponse{HasError: true, Message: models.SIGN_IN_FORM_TYPE_ERROR_VALID}
......
...@@ -15,7 +15,8 @@ type UserInfo struct { ...@@ -15,7 +15,8 @@ type UserInfo struct {
} }
type JsonResponse struct { type JsonResponse struct {
HasError bool `json:"has_error"` HasError bool `json:"has_error"`
Message interface{} `json:"message"` Message interface{} `json:"message"`
Addition interface{} `json:"addition"` Addition interface{} `json:"addition"`
ErrorDetail string `json:"error_detail,omitempty"` // Mensaje de error detallado (ej: error SSH específico)
} }
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment