feat: integrate Grafana dashboards into BOC DashboardPage

- Add Infrastructure Health section with CPU/Memory/Disk panels
- Add Service Status section with PM2/Docker panels
- Create GrafanaPanel component for iframe embedding
- Build passes successfully
This commit is contained in:
Bernt
2026-07-29 19:03:06 +00:00
parent af874040ca
commit e5623d2f84
77 changed files with 11338 additions and 779 deletions
+3 -9
View File
@@ -8,6 +8,7 @@ import (
"github.com/golang-jwt/jwt/v5"
"golang.org/x/crypto/bcrypt"
"boc/models"
)
const tokenExpiry = 24 * time.Hour
@@ -17,13 +18,6 @@ type AuthHandler struct {
JWTSecret []byte
}
type Claims struct {
UserID string `json:"user_id"`
Email string `json:"email"`
Role string `json:"role"`
jwt.RegisteredClaims
}
type loginRequest struct {
Email string `json:"email"`
Password string `json:"password"`
@@ -72,7 +66,7 @@ func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
}
now := time.Now()
claims := Claims{
claims := models.Claims{
UserID: id,
Email: req.Email,
Role: role,
@@ -102,7 +96,7 @@ func (h *AuthHandler) Login(w http.ResponseWriter, r *http.Request) {
}
func (h *AuthHandler) Me(w http.ResponseWriter, r *http.Request) {
claims, ok := r.Context().Value("user").(*Claims)
claims, ok := r.Context().Value("user").(*models.Claims)
if !ok {
writeError(w, http.StatusUnauthorized, "unauthorized")
return