This commit is contained in:
2026-04-02 11:26:14 +07:00
parent d09ba3d2ad
commit c823549458
2 changed files with 38 additions and 178 deletions

2
.env
View File

@@ -7,7 +7,7 @@ NODE_ENV=production
APP_PORT=3000 APP_PORT=3000
# Image used for server pull deployment # Image used for server pull deployment
DOCKER_IMAGE=toiiiiday/accmanager:1.0.2 DOCKER_IMAGE=toiiiiday/accmanager:1.0.3
# Container app port # Container app port
PORT=3000 PORT=3000

214
README.md
View File

@@ -1,196 +1,56 @@
# 🔐 AccManager # AccManager
Hệ thống quản lý tài khoản và ứng dụng tập trung, cho phép quản lý người dùng, danh mục ứng dụng, và gán tài khoản truy cập. AccManager là hệ thống giúp quản lý tập trung tài khoản truy cập cho nhân sự trong tổ chức.
## ✨ Tính năng Thay vì lưu rải rác tài khoản ứng dụng ở nhiều nơi, AccManager gom tất cả về một màn hình để dễ tìm, dễ phân quyền và dễ kiểm soát.
- ✅ Xác thực người dùng (login/register) ## Dự án này dùng để làm gì
- ✅ Quản lý người dùng và vai trò (admin/guest)
- ✅ Quản lý danh mục ứng dụng
- ✅ Gán tài khoản cho mỗi người dùng/ứng dụng
- ✅ Mã hóa mật khẩu bằng bcrypt (bcrypt hashing)
- ✅ Migration tự động: plain text → bcrypt
- ✅ Audit log truy cập
## 🛠️ Công nghệ - Quản lý danh sách người dùng trong nội bộ.
- Quản lý danh sách ứng dụng đang sử dụng trong công ty.
- Gán tài khoản truy cập ứng dụng cho từng người dùng.
- Theo dõi thông tin tài khoản rõ ràng, tránh thất lạc.
| Thành phần | Công nghệ | ## Ai sẽ sử dụng
|-----------|----------|
| Backend | Node.js 20 + Express.js |
| Database | SQL Server 2022 |
| Frontend | HTML5 + Tailwind CSS + Vanilla JS |
| Container | Docker + Docker Compose |
| Reverse Proxy | Nginx Proxy Manager |
| Password Hashing | bcrypt |
## 📦 Cấu trúc dự án - Quản trị viên: tạo người dùng, tạo ứng dụng, cấp tài khoản, cập nhật thông tin.
- Người dùng thông thường: xem các tài khoản được cấp cho mình.
\\\ ## Cách sử dụng nhanh
├── backend/
│ └── server.js # Main server (Express + mssql)
├── public/ # Static files (HTML, CSS, JS)
│ ├── index.html
│ ├── pages/ # Login, dashboard, etc.
│ ├── js/
│ │ └── app.js # Frontend logic
│ └── css/
│ ├── main.css # Tailwind compiled
│ └── tailwind.css # Tailwind source
├── database/
│ └── setup.sql # Database schema
├── Dockerfile # Docker image config
├── docker-compose.yml # Local development
├── docker-compose.image.yml # Production deployment
├── .env # Environment variables
├── deploy-dev.ps1 # Build & push script
├── deploy-server.sh # Pull & deploy script
└── DEPLOYMENT_GUIDE.md # Detailed deployment guide (Vietnamese)
\\\
## 🚀 Khởi động nhanh 1. Đăng nhập vào hệ thống.
2. Vào mục Người dùng để tạo mới hoặc cập nhật thông tin nhân sự.
3. Vào mục Ứng dụng để thêm các hệ thống cần quản lý.
4. Vào mục Tài khoản để gán tài khoản ứng dụng cho đúng người.
5. Dùng nút Xem chi tiết trong danh sách người dùng để kiểm tra đầy đủ thông tin trước khi chỉnh sửa.
### Phát triển local ## Quy trình vận hành gợi ý
\\\ash 1. Khi có nhân sự mới:
npm install - Tạo người dùng.
npm start - Gán quyền phù hợp.
\\\ - Cấp các tài khoản ứng dụng cần thiết.
Truy cập: http://localhost:3000 2. Khi thay đổi công việc:
- Cập nhật lại danh sách ứng dụng được cấp.
- Thu hồi các tài khoản không còn sử dụng.
### Chạy bằng Docker 3. Khi nhân sự nghỉ việc:
- Khóa hoặc ngừng kích hoạt người dùng.
- Rà soát và thu hồi toàn bộ tài khoản liên quan.
\\\ash ## Lợi ích chính
docker compose build
docker compose up -d
\\\
## 🐳 Triển khai với Docker - Giảm thất lạc thông tin tài khoản.
- Rõ ràng trách nhiệm ai đang dùng tài khoản nào.
- Tiết kiệm thời gian bàn giao và thu hồi quyền truy cập.
- Dễ kiểm tra trước khi cấp quyền mới.
### Máy DEV: Build & Push ## Tài liệu liên quan
\\\powershell - Hướng dẫn triển khai: [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md)
cd D:\RoboticsSource\AccManager
.\deploy-dev.ps1 -Tag "1.0.1"
\\\
### Máy Server: Deploy
\\\ash
ssh robotics@172.20.235.176
cd ~/accmanager
bash deploy-server.sh
\\\
**Xem chi tiết**: [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) (Tiếng Việt)
## 🔐 Bảo mật
- Mật khẩu được mã hóa bằng bcrypt (12 rounds)
- Migration tự động từ plain text sang bcrypt
- Không lưu credential trong source control
- Sử dụng .env để cấu hình biến sensitive
- SQL Server connection sử dụng SSL/TLS tùy chọn
**Lưu ý:**
- Thay đổi mật khẩu admin mặc định (\dmin\/\dmin\) ngay sau khi đăng nhập lần đầu
- Không commit \.env\ thực tế lên git
## 📚 API Endpoints
### Authentication
- POST \/api/auth/login\ - Đăng nhập
- POST \/api/auth/register\ - Đăng ký
### Users (Admin)
- GET \/api/users\ - Lấy danh sách người dùng
- GET \/api/users/:id\ - Lấy thông tin người dùng
- POST \/api/users\ - Tạo người dùng mới
- PUT \/api/users/:id\ - Cập nhật người dùng
- DELETE \/api/users/:id\ - Xóa người dùng
### Applications
- GET \/api/applications\ - Danh sách ứng dụng
- POST \/api/applications\ - Tạo ứng dụng
### Accounts
- GET \/api/accounts/user/:userId\ - Tài khoản của người dùng
- POST \/api/accounts\ - Tạo tài khoản
## 🔧 Cấu hình
### .env (Development)
\\\env
NODE_ENV=production
APP_PORT=3000
DOCKER_IMAGE=toiiiiday/accmanager:1.0.1
# Container
PORT=3000
# Database
DB_SERVER=172.20.235.176
DB_USER=sa
DB_PASSWORD=robotics@2022
DB_NAME=AccManager
DB_ENCRYPT=false
DB_TRUST_CERTIFICATE=true
DB_CONNECT_TIMEOUT=30000
# Security
BCRYPT_ROUNDS=12
\\\
## 🌐 Triển khai Public với Domain
Xem: [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) - Mục "Public Domain qua Nginx Proxy Manager"
**Tóm tắt:**
1. Trỏ DNS A record về IP Nginx Proxy Manager
2. Tạo Proxy Host trong NPM: forward 3000 → domain
3. Enable Let's Encrypt SSL + Force SSL
## 📝 Tài liệu
- [DEPLOYMENT_GUIDE.md](DEPLOYMENT_GUIDE.md) - Hướng dẫn triển khai (Tiếng Việt)
- [package.json](package.json) - Dependencies
- [docker-compose.yml](docker-compose.yml) - Dev config
- [docker-compose.image.yml](docker-compose.image.yml) - Prod config
## 📦 Build & Run Scripts
**Windows PowerShell (DEV):**
\\\powershell
.\deploy-dev.ps1 -Tag "1.0.1"
\\\
**Linux/Mac (SERVER):**
\\\ash
bash deploy-server.sh
\\\
## 🆘 Troubleshoot
**Container không start?**
\\\ash
docker compose -f docker-compose.image.yml logs --tail=100 accmanager
\\\
**Image pull fail?**
- Kiểm tra Docker Hub credentials
- Kiểm tra image đã push: https://hub.docker.com/r/toiiiiday/accmanager
**Database connection fail?**
- Kiểm tra .env (DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME)
- Ping server: \ping 172.20.235.176\
## 📄 License
MIT
--- ---
**Phiên bản:** 2.0.0 Phiên bản tài liệu: 3.0.0
**Cập nhật:** Tháng 4 năm 2026 Cập nhật: Tháng 4 năm 2026
**Trạng thái:** Production-ready ✅