# Vauthz CLI

Công cụ dòng lệnh để quản lý hệ thống Vauthz Authorization.

## Cài đặt

```bash
npm install -g vauthz-cli
```

## Các lệnh chính

### Login
Đăng nhập vào hệ thống:

```bash
vauthz login                    # Đăng nhập qua trình duyệt
vauthz login -k <api-key>       # Đăng nhập bằng API key
```

### Status
Kiểm tra trạng thái đăng nhập:

```bash
vauthz status
```

### Info
Xem thông tin chi tiết:

```bash
vauthz info
vauthz info -k <api-key>
vauthz info -n "Project Name" -e "Environment"
```

### Env Export
Xuất cấu hình sang Terraform HCL:

```bash
vauthz env export
vauthz env export -f ./config.tf
vauthz env export -k <api-key> -f ./config.tf
```

### Env Clear
Xóa cấu hình environment:

```bash
# Xóa toàn bộ cấu hình (policies, resources, roles, etc.)
vauthz env clear
vauthz env clear -k <api-key>

# Chỉ xóa resource instances và role assignments
vauthz env clear --instance
vauthz env clear -i -k <api-key>
```

**Các tùy chọn:**
- `-k, --apiKey`: API Key để xác thực
- `-i, --instance`: Chỉ xóa resource instances và role assignments của chúng

**Lưu ý:**
- Lệnh `vauthz env clear` (không có --instance) sẽ xóa **TẤT CẢ** cấu hình bao gồm:
  - Relationship tuples (Facts)
  - Condition set rules
  - Global roles (trừ role `default`)
  - Condition sets
  - Resource roles, relations, actions, attributes
  - Resources (trừ `__user`)
  
- Lệnh `vauthz env clear --instance` sẽ chỉ xóa:
  - Tất cả resource instances
  - Role assignments liên quan đến các instances đó

- **Không thể hoàn tác** sau khi chạy
- Nên backup trước bằng `vauthz env export`

### Resource
Sinh code từ cấu hình resource (hiện tại hỗ trợ Java):

```bash
vauthz resource
vauthz resource -l java -f ./Resource.java
vauthz resource -k <api-key> -n "Project Name" -e "Environment"
```

**Các tùy chọn:**
- `-k, --apiKey`: API Key để xác thực
- `-n, --name`: Tên project
- `-e, --environment`: Tên environment
- `-l, --language`: Ngôn ngữ đích (mặc định: `java`)
- `-f, --file`: Đường dẫn file xuất

### Test Generate (Đang phát triển)
Tạo test case từ cấu hình environment:

```bash
vauthz test generate
vauthz test generate -f ./test_case.json
vauthz test generate -k <api-key> -n "Project Name" -e "Environment"
```

**Các tùy chọn:**
- `-k, --apiKey`: API Key để xác thực
- `-n, --projectName`: Tên project cần tạo test case
- `-e, --envName`: Tên environment cần tạo test case  
- `-f, --exportFile`: Tên file xuất (mặc định: `test_case.json`)

## Phát triển

```bash
npm install       # Cài đặt dependencies
npm run dev       # Chạy development mode
npm run build     # Build production
```

## Công nghệ

- React & Ink (CLI UI)
- TypeScript
- Pastel (CLI framework)
- Handlebars (HCL templates)
