Skip to content

Biến môi trường & runtimeConfig

Mọi khoá runtimeConfig@tasco/nuxt-layer-base khai báo, kèm biến môi trường ghi đè, giá trị mặc định và nơi đọc. Cách chọn giá trị cho từng môi trường: Cấu hình & biến môi trường.

Quy tắc

  • Tên biến = NUXT_ + đường dẫn khoá viết hoa, các cấp nối bằng _, camelCase tách thành từ: auth.endpoints.userInfoNUXT_AUTH_ENDPOINTS_USER_INFO, public.apiBaseURLNUXT_PUBLIC_API_BASE_URL.
  • Chỉ khoá có trong bảng mới nhận giá trị từ env. Biến NUXT_* không khớp khoá nào thì không có tác dụng.
  • Kiểu giá trị: Nuxt parse chuỗi env — true/false thành boolean, chuỗi số thành number.
  • Đổi lúc chạy: server đọc env khi khởi động, không cần build lại. Khác với app.config.ts — xem app.config › tasco.
  • public.* xuống trình duyệt: không bao giờ đặt bí mật dưới public.

Bắt buộc

BiếnKhi nàoThiếu thì
NUXT_SESSION_SECRETProductionRoute chạm phiên trả 500 Session secret chưa cấu hình. Đặt NUXT_SESSION_SECRET (>= 32 ký tự). Dev thì dùng khoá tạm và in cảnh báo
NUXT_AUTH_BASE_URLKhông bật NUXT_AUTH_MOCKĐăng nhập trả 500 auth.baseURL chưa cấu hình (NUXT_AUTH_BASE_URL).
NUXT_API_PROXY_TARGETApp gọi /api/**Mọi lời gọi /api/** trả 500 apiProxyTarget chưa cấu hình.

Server

Chỉ code chạy trên server (route Nitro) đọc được: useRuntimeConfig(event).

Phiên và proxy

KhoáBiến môi trườngKiểuMặc địnhĐọc ở
session.secretNUXT_SESSION_SECRETstring''Mã hoá và ký cookie tasco_session (AES-256-GCM). Tạo: openssl rand -base64 32
apiProxyTargetNUXT_API_PROXY_TARGETstring''Đích chuyển tiếp của /api/** — xem Route BFF

IAM — endpoint

Đường dẫn tương đối, nối sau auth.baseURL. Để rỗng endpoint nào thì tính năng tương ứng tắt.

KhoáBiến môi trườngMặc địnhDùng cho
auth.baseURLNUXT_AUTH_BASE_URL''Base URL cổng IAM, bọc cả /iam/auth, vd https://iam.example.com/cop
auth.endpoints.loginNUXT_AUTH_ENDPOINTS_LOGIN/auth/auth/login-v1POST đổi tài khoản lấy token
auth.endpoints.userInfoNUXT_AUTH_ENDPOINTS_USER_INFO/iam/user/userInfoPOST, header authorization: <token> không có tiền tố Bearer
auth.endpoints.clientsNUXT_AUTH_ENDPOINTS_CLIENTS/iam/client/findAll?status=1GET danh sách ứng dụng cho dropdown; rỗng → /auth/clients trả mảng rỗng
auth.endpoints.otpSendNUXT_AUTH_ENDPOINTS_OTP_SEND/auth/auth/login/requestPOST gửi OTP Telegram; rỗng → /auth/otp/send trả 400

IAM — bóc dữ liệu từ response

Giá trị là dot-path tính từ gốc JSON của response IAM.

KhoáBiến môi trườngMặc địnhLấy ra
auth.mapping.tokenNUXT_AUTH_MAPPING_TOKENbody.tokenData.access_tokenAccess token (bắt buộc có, thiếu thì đăng nhập lỗi)
auth.mapping.refreshNUXT_AUTH_MAPPING_REFRESHbody.tokenData.refresh_tokenRefresh token — đọc được nhưng không lưu vào cookie
auth.mapping.expiresInNUXT_AUTH_MAPPING_EXPIRES_INbody.tokenData.expires_inSố giây token còn sống (số hoặc chuỗi số)
auth.mapping.idNUXT_AUTH_MAPPING_IDbody.userIdAuthUser.id
auth.mapping.nameNUXT_AUTH_MAPPING_NAMEbody.fullNameAuthUser.name
auth.mapping.emailNUXT_AUTH_MAPPING_EMAILbody.emailAuthUser.email
auth.mapping.rolesNUXT_AUTH_MAPPING_ROLESbody.listRoleMảng role
auth.mapping.permissionsNUXT_AUTH_MAPPING_PERMISSIONSbody.authorizationMảng quyền
auth.mapping.roleKeyNUXT_AUTH_MAPPING_ROLE_KEYcodeField làm mã role khi phần tử là object
auth.mapping.permissionKeyNUXT_AUTH_MAPPING_PERMISSION_KEYuriField làm mã quyền khi phần tử là object
auth.mapping.permissionTypeNUXT_AUTH_MAPPING_PERMISSION_TYPEwebChỉ giữ quyền có type này; rỗng → không lọc
auth.mapping.permissionTypeKeyNUXT_AUTH_MAPPING_PERMISSION_TYPE_KEYtypeTên field chứa type

IAM — mã phương thức OTP

KhoáBiến môi trườngMặc địnhÝ nghĩa
auth.authenMethod.googleNUXT_AUTH_AUTHEN_METHOD_GOOGLE1authenMethod gửi IAM khi người dùng chọn Google Authenticator (đã xác nhận với IAM)
auth.authenMethod.telegramNUXT_AUTH_AUTHEN_METHOD_TELEGRAM2Mã cho OTP Telegram — giá trị giả định, đối chiếu lại với IAM của dự án

Phương thức không có trong bảng thì BFF gửi mã 1.

Dev

KhoáBiến môi trườngMặc địnhÝ nghĩa
auth.mockNUXT_AUTH_MOCKfalseBỏ qua IAM: /auth/login nhận mọi tài khoản, trả người dùng giả — chỉ dùng ở dev. Xem Chạy dev không có IAM

Public

Client đọc được: useRuntimeConfig().public. Nằm trong HTML gửi xuống trình duyệt.

KhoáBiến môi trườngKiểuMặc địnhĐọc ở
public.apiBaseURLNUXT_PUBLIC_API_BASE_URLstring/apiTiền tố của useApi
public.auth.methodsNUXT_PUBLIC_AUTH_METHODSstringgoogle,telegramPhương thức OTP trên TascoLoginForm, ngăn cách bằng dấu phẩy; rỗng → ẩn ô OTP
public.auth.showClientSelectNUXT_PUBLIC_AUTH_SHOW_CLIENT_SELECTbooleantrueHiện dropdown "Chọn ứng dụng"
public.auth.defaultClientCodeNUXT_PUBLIC_AUTH_DEFAULT_CLIENT_CODEstring''Cố định một ứng dụng khi ẩn dropdown
public.auth.superRolesNUXT_PUBLIC_AUTH_SUPER_ROLESstring''Role bỏ qua mọi kiểm tra quyền, ngăn cách bằng dấu phẩy — dùng ở usePermission, v-can, <Can>

Props của TascoLoginForm (methods, show-client-select, default-client-code) thắng giá trị public.auth.*.

Biến ngoài runtimeConfig

Không đi qua runtimeConfig nên không theo quy tắc NUXT_*.

BiếnĐọc ởGhi chú
AI_GATEWAY_URL, AI_GATEWAY_KEYRoute server/api/ai/chat.post.ts app tự tạo, truyền vào createAiChatProxyChỉ khi dùng @tasco/ai — xem AI trong sản phẩm
NPM_TOKEN.npmrc khi pnpm installToken đọc registry @tasco, không bao giờ commit — xem Chuẩn bị môi trường
HOST, PORTServer Nitro của bản buildDockerfile của template đặt 0.0.0.03000

Biến CI/CD của app (REGISTRY_USER, REGISTRY_PASSWORD…): CI/CD & Deploy.

Liên quan