second
This commit is contained in:
294
SETUP_GUIDE.md
Normal file
294
SETUP_GUIDE.md
Normal file
@@ -0,0 +1,294 @@
|
||||
# 🚀 AccManager Backend - Complete Setup Guide
|
||||
|
||||
## ⚠️ Pre-requisites
|
||||
|
||||
### 1. Install Node.js & npm
|
||||
|
||||
**Download từ:** https://nodejs.org/
|
||||
**Khuyến khích:** LTS version (v18 hoặc mới hơn)
|
||||
|
||||
#### Kiểm tra installation:
|
||||
```bash
|
||||
node --version
|
||||
npm --version
|
||||
```
|
||||
|
||||
Expected output:
|
||||
```
|
||||
v18.* (or newer)
|
||||
9.* (or newer)
|
||||
```
|
||||
|
||||
### 2. Verify SQL Server Connection
|
||||
|
||||
Trước khi chạy backend, kiểm tra SQL Server:
|
||||
|
||||
```bash
|
||||
ping 172.20.235.176
|
||||
```
|
||||
|
||||
Nếu không ping được, kiểm tra:
|
||||
- SQL Server đang chạy
|
||||
- Firewall cho phép port 1433
|
||||
- Network connectivity
|
||||
|
||||
---
|
||||
|
||||
## 📥 Setup Steps
|
||||
|
||||
### Step 1: Install Node Packages
|
||||
|
||||
```bash
|
||||
cd d:\RoboticsSource\AccManager
|
||||
npm install
|
||||
```
|
||||
|
||||
Wait cho tới khi mô tả xuất hiện `added X packages`
|
||||
|
||||
### Step 2: Run Backend Server
|
||||
|
||||
```bash
|
||||
npm start
|
||||
```
|
||||
|
||||
**Expected Output:**
|
||||
```
|
||||
========================================
|
||||
AccManager Backend Server
|
||||
========================================
|
||||
✓ Server running on http://localhost:3000
|
||||
✓ Database: AccManager
|
||||
✓ Default admin: admin / admin
|
||||
|
||||
API Endpoints:
|
||||
POST /api/auth/login
|
||||
GET /api/database/info
|
||||
GET /api/users
|
||||
GET /api/applications
|
||||
GET /api/accounts/user/:userId
|
||||
========================================
|
||||
```
|
||||
|
||||
### Step 3: Test Connection
|
||||
|
||||
Mở terminal mới, chạy:
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
**Response:**
|
||||
```json
|
||||
{
|
||||
"status": "OK",
|
||||
"database": "Connected"
|
||||
}
|
||||
```
|
||||
|
||||
### Step 4: Test Database Info
|
||||
|
||||
```bash
|
||||
curl http://localhost:3000/api/database/info
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 Database Structure
|
||||
|
||||
### Database Name: `AccManager`
|
||||
|
||||
#### Tables:
|
||||
1. **Users** (1 admin account)
|
||||
- Username: admin
|
||||
- Password: admin
|
||||
- Role: admin
|
||||
|
||||
2. **Applications** (4 sample apps)
|
||||
- AWS
|
||||
- GitHub
|
||||
- Google Workspace
|
||||
- Nginx Proxy
|
||||
|
||||
3. **Accounts** (empty, ready to use)
|
||||
|
||||
4. **AuditLog** (empty, for logging)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 Test API Endpoints
|
||||
|
||||
### Test 1: Login
|
||||
```bash
|
||||
curl -X POST http://localhost:3000/api/auth/login \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"username\":\"admin\",\"password\":\"admin\"}"
|
||||
```
|
||||
|
||||
### Test 2: Get Users
|
||||
```bash
|
||||
curl http://localhost:3000/api/users
|
||||
```
|
||||
|
||||
### Test 3: Get Applications
|
||||
```bash
|
||||
curl http://localhost:3000/api/applications
|
||||
```
|
||||
|
||||
### Test 4: View Database Info
|
||||
```bash
|
||||
curl http://localhost:3000/api/database/info
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔌 Frontend Integration
|
||||
|
||||
Update your frontend to connect to the backend:
|
||||
|
||||
### Option 1: Update app.js
|
||||
|
||||
```javascript
|
||||
const API_URL = 'http://localhost:3000/api';
|
||||
|
||||
// Update login function
|
||||
async function login(username, password) {
|
||||
const response = await fetch(`${API_URL}/auth/login`, {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ username, password })
|
||||
});
|
||||
const data = await response.json();
|
||||
|
||||
if (data.success) {
|
||||
localStorage.setItem('currentUser', JSON.stringify(data.user));
|
||||
window.location.href = './pages/accounts.html';
|
||||
} else {
|
||||
alert('Login failed: ' + data.message);
|
||||
}
|
||||
}
|
||||
|
||||
// Update get accounts function
|
||||
async function getAccounts(userId) {
|
||||
const response = await fetch(`${API_URL}/accounts/user/${userId}`);
|
||||
const data = await response.json();
|
||||
return data.data || [];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📦 Project Structure
|
||||
|
||||
```
|
||||
d:\RoboticsSource\AccManager\
|
||||
├── server.js # Backend server (Node.js)
|
||||
├── package.json # Dependencies
|
||||
├── .env # Configuration
|
||||
├── DATABASE_SETUP.md # This file
|
||||
├── database/
|
||||
│ └── setup.sql # SQL setup script
|
||||
├── index.html # Frontend entry
|
||||
├── pages/
|
||||
│ ├── login.html
|
||||
│ ├── accounts.html
|
||||
│ ├── applications.html
|
||||
│ └── index.html
|
||||
└── js/
|
||||
└── app.js # Frontend logic
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔒 Security Notes
|
||||
|
||||
⚠️ **For Development Only:**
|
||||
- Admin password is hardcoded as "admin"
|
||||
- SQL credentials in code (not recommended for production)
|
||||
- CORS enabled for all origins
|
||||
|
||||
### For Production:
|
||||
1. Use environment variables
|
||||
2. Hash passwords with bcrypt
|
||||
3. Implement JWT authentication
|
||||
4. Use firewalls and VPNs
|
||||
5. Enable SSL/TLS
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### Error: "Cannot find module 'express'"
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
### Error: "Connection failed"
|
||||
Check:
|
||||
- SQL Server running
|
||||
- IP address correct: 172.20.235.176
|
||||
- Port 1433 accessible
|
||||
- Username/password correct
|
||||
|
||||
### Error: "Port 3000 already in use"
|
||||
```bash
|
||||
# Change port in .env
|
||||
PORT=3001
|
||||
|
||||
# Then restart server
|
||||
npm start
|
||||
```
|
||||
|
||||
### Error: "CORS error in browser"
|
||||
This is normal during development. The backend already has CORS enabled.
|
||||
|
||||
---
|
||||
|
||||
## 📊 Database Credentials
|
||||
|
||||
```
|
||||
Server: 172.20.235.176
|
||||
Database: AccManager
|
||||
User: sa
|
||||
Password: robotics@2020
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ Verification Checklist
|
||||
|
||||
- [ ] Node.js installed
|
||||
- [ ] npm packages installed (`npm install`)
|
||||
- [ ] Backend server running (`npm start`)
|
||||
- [ ] Can access http://localhost:3000/api/health
|
||||
- [ ] Can login with admin/admin
|
||||
- [ ] Database shows tables and statistics
|
||||
- [ ] Frontend connects to backend
|
||||
|
||||
---
|
||||
|
||||
## 📚 Additional Commands
|
||||
|
||||
### Install Development Tools
|
||||
```bash
|
||||
npm install -D nodemon
|
||||
npm run dev # Auto-restart on code changes
|
||||
```
|
||||
|
||||
### Check npm packages
|
||||
```bash
|
||||
npm list
|
||||
```
|
||||
|
||||
### Update packages
|
||||
```bash
|
||||
npm update
|
||||
```
|
||||
|
||||
### Clear npm cache
|
||||
```bash
|
||||
npm cache clean --force
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**For Support:** Check server logs for error messages
|
||||
Reference in New Issue
Block a user