Files
nl-blogs/.trae/documents/Comprehensive Project Review and Fix Plan.md
2026-01-15 13:51:44 +08:00

4.4 KiB

Comprehensive Project Review and Fix Plan

1. Missing Frontend Components

Issue

The admin layout has navigation links for several pages, but the corresponding Vue components are missing:

  • /admin/posts - Posts.vue
  • /admin/works - Works.vue
  • /admin/snippets - Snippets.vue
  • /admin/settings - Settings.vue
  • /admin/logs - Logs.vue

Fix

Create the missing admin page components with basic CRUD functionality:

  • Posts.vue - Display and manage blog posts
  • Works.vue - Display and manage portfolio works
  • Snippets.vue - Display and manage code snippets
  • Settings.vue - Manage system configurations
  • Logs.vue - View operation logs

2. Backend Security Issues

Issue 1: Hardcoded JWT Secret

  • Location: server/middleware/auth.go:14
  • Impact: Compromises all JWT tokens if source code is exposed

Fix

Replace hardcoded secret with environment variable:

var jwtSecret = []byte(os.Getenv("JWT_SECRET"))

Issue 2: Hardcoded Password Check

  • Location: server/main.go:37
  • Impact: All admin accounts use the same password "admin123"

Fix

Implement proper bcrypt password hashing and verification:

// Replace with actual bcrypt comparison
if err := bcrypt.CompareHashAndPassword([]byte(user.PasswordHash), []byte(req.Password)); err != nil {
    c.JSON(http.StatusUnauthorized, gin.H{"error": "Invalid username or password"})
    return
}

Issue 3: Missing Role-Based Authorization

  • Location: server/main.go - admin routes
  • Impact: No role-based access control for admin endpoints

Fix

Implement role middleware for admin routes:

// Example: Only allow admin users to delete users
authAdmin.DELETE("/users/:id", middleware.RoleMiddleware("admin"), adminDeleteUser)

Issue 4: Insecure CORS Configuration

  • Location: server/main.go:564
  • Impact: Allows all origins (*) which is insecure for production

Fix

Restrict CORS to specific origins in production:

c.Writer.Header().Set("Access-Control-Allow-Origin", os.Getenv("ALLOWED_ORIGINS"))

Issue 5: Missing CSRF Protection

  • Location: All POST/PUT/DELETE endpoints
  • Impact: Vulnerable to CSRF attacks

Fix

Implement CSRF protection middleware

Issue 6: Missing Rate Limiting

  • Location: Authentication endpoints
  • Impact: Vulnerable to brute force attacks

Fix

Implement rate limiting middleware for login endpoint

3. Database Issues

Issue 1: Inconsistent Role Implementation

  • Location: Database schema
  • Impact: User table uses ENUM for role instead of foreign key to roles table

Fix

  1. Modify user table to use role_id foreign key instead of role enum
  2. Update user registration and authentication logic

Issue 2: Missing API Endpoints

  • Location: server/main.go
  • Impact: No endpoints for tags and access logs

Fix

Implement missing API endpoints:

  • Tag management endpoints
  • Access log viewing endpoints

4. Implementation Issues

Issue 1: Inconsistent ID Types

  • Location: Multiple models and endpoints
  • Impact: Confusion and potential bugs in data handling

Fix

Standardize ID types across the application:

  • Use uint for auto-incrementing primary keys
  • Use string for UUIDs if needed

Issue 2: Missing Validation

  • Location: Many API endpoints
  • Impact: Potential for invalid data in database

Fix

Implement validation middleware for all request bodies

Issue 3: Incomplete Error Handling

  • Location: Several repository functions
  • Impact: Unhandled errors could crash the server

Fix

Add proper error handling and logging throughout the codebase

5. Code Quality Improvements

Issue 1: Duplicate Code

  • Location: Similar CRUD operations across endpoints
  • Impact: Increased maintenance effort

Fix

Refactor common functionality into reusable functions/middleware

Issue 2: Missing Documentation

  • Location: Most files
  • Impact: Difficult for new developers to understand the codebase

Fix

Add appropriate comments and documentation

Implementation Order

  1. Create missing frontend components - Priority 1
  2. Fix critical security issues - Priority 1
  3. Implement role-based access control - Priority 2
  4. Fix database inconsistencies - Priority 2
  5. Implement missing API endpoints - Priority 3
  6. Improve code quality and documentation - Priority 3

This plan addresses all identified issues while prioritizing critical functionality and security fixes first.