Service Terms, Identity Orchestration & Data Protection
These Terms describe the rules for using AuthSys. The email/password registration form records an explicit checkbox action; social sign-in may create an account without a separate AuthSys checkbox, as explained below.
Email/password registration requires a checkbox accepting these Terms and acknowledging this Privacy Notice. Google or GitHub sign-in can create an AuthSys account without that separate checkbox. The current implementation records the essential-acceptance flag and notice version for a newly created social-login account automatically; that database flag is not evidence of a separate checkbox action. Consent shown by Google or GitHub applies to the provider sign-in flow and is separate from this AuthSys notice.
This notice describes data processing by AuthSys ("we", "us", "our"), the name used for this private deployment. The controller name and address shown here are AuthSys; no separate physical mailing address is published.
ตัวอย่างด้านล่างอ้างอิงจากข้อมูลที่ระบบปัจจุบันจัดเก็บจริง แต่ไม่ใช่รายการฟิลด์ครบทุกฟิลด์ และฐานทางกฎหมายต้องยืนยันตามผู้ควบคุมข้อมูลและการติดตั้งใช้งานจริง
| ข้อมูล / Data | ตัวอย่าง / Examples | วัตถุประสงค์ / Purpose | ฐานทางกฎหมายที่ผู้ควบคุมข้อมูลต้องยืนยัน / Legal basis to be confirmed |
|---|---|---|---|
| Account Data | ชื่อผู้ใช้, อีเมล, ชื่อที่แสดง, ประวัติย่อ, role, สถานะบัญชี, การตั้งค่า, เวลาที่เข้าสู่ระบบล่าสุด Username, email, display name, bio, role, account status, preferences, latest login timestamp |
สร้างและจัดการบัญชี Account management |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| Authentication Data | password hash, password-reset token hash/expiry, failed-login count และ lock status Password hash, reset-token hash/expiry, failed-login count, account-lock status |
ยืนยันตัวตน, กู้คืนบัญชี และป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต Authentication, account recovery, and abuse prevention |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| Social Login Data | อีเมลที่ยืนยันแล้ว, provider ID, ชื่อ/username จาก provider ที่ใช้สร้าง username ของ AuthSys และ avatar จาก GitHub เมื่อมี Verified email, provider ID, provider display name/username used to derive the AuthSys username, and GitHub avatar when supplied |
เชื่อมต่อ Google/GitHub และสร้างบัญชี Social sign-in and account linking |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| OAuth Data | ชื่อ/รายละเอียดแอป, contact email, redirect URI, allowed scopes, client secret ที่เก็บเป็น hash และสถิติการใช้; grant, scope, วันหมดอายุ/เพิกถอน; authorization code, PKCE challenge และ nonce ชั่วคราว Client name/description, contact email, redirect URI, allowed scopes, hashed client secret, usage counters; grant/scope/expiry/revocation; short-lived authorization code, PKCE challenge, and nonce |
ลงทะเบียน OAuth client, ขออนุญาต, ออก token และตรวจสอบสิทธิ์ OAuth client registration, authorization, token issuance, and access control |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| Technical Data | IP, user-agent, browser/OS/device category, HTTP method/path/status, session hashes/status และเหตุการณ์ audit IP, user-agent, derived browser/OS/device category, HTTP method/path/status, session hashes/status, audit events |
จัดการ session, แสดงอุปกรณ์ที่เข้าสู่ระบบ, ตรวจสอบและป้องกันเหตุด้านความปลอดภัย Session management, device display, security monitoring and prevention |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| Usage Data | เวลาเข้าสู่ระบบล่าสุด และจำนวน/เวลาการเรียกใช้ OAuth client Latest login timestamp and OAuth-client request counts/last-used time |
แสดงประวัติเข้าใช้บัญชีและติดตามการใช้งาน client; ไม่ได้ใช้เป็น analytics เพื่อปรับปรุงบริการในโค้ดปัจจุบัน Account access history and client-usage tracking; not used for service-improvement analytics in the current code |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
| Consent Record | บันทึก essentialAccepted/เวลาที่บันทึก/version ตอนสร้างบัญชีและ IP เมื่อ flow ส่งมา; เมื่อเข้าสู่ระบบและ sync สำเร็จจะเก็บ cookie/analytics choice กับเวลาและ IP ของการ sync ล่าสุด; OAuth grant แยกเก็บ client, scopes, เวลาอนุมัติ/เพิกถอน/หมดอายุ Essential-acceptance flag/time/version at account creation and IP when the flow supplies it; after successful signed-in sync, cookie/analytics choice and latest sync time/IP; OAuth grants separately store client, scopes, grant/revocation/expiry times |
จำค่าตัวเลือกและจัดการสิทธิ์ OAuth; เวลา sync ไม่ใช่หลักฐานเวลาคลิกยืนยันครั้งแรก Remember preferences and enforce OAuth grants; sync time is not proof of the original click time |
ผู้ควบคุมข้อมูลต้องยืนยัน / Controller to confirm |
*The application code does not determine legal basis. The data controller must confirm the legal basis, required versus optional fields, and any consequences of not providing data for the actual deployment.
เราใช้ข้อมูลของท่านตามวัตถุประสงค์ที่ได้รับความยินยอม หรือมีฐานทางกฎหมายรองรับเท่านั้น
การยืนยันตัวตนไม่ขึ้นอยู่กับ analytics และท่านปฏิเสธตัวเลือกที่ไม่จำเป็นได้ หากผู้ดูแลเพิ่ม analytics หรือบริการโฆษณาภายนอก ต้องปรับประกาศนี้และการตั้งค่าความยินยอมให้ตรงก่อนเปิดใช้
AuthSys uses essential cookies for authentication and OAuth security, plus first-party
cookies to remember your cookie choice and mark an unsuccessful consent-sync attempt.
Production HTTPS/TLS must be provided by the hosting layer or reverse proxy; the session
cookie is marked Secure when NODE_ENV=production. A local HTTP deployment does
not encrypt traffic unless TLS is configured separately. First-party AuthSys pages use a server-side
HttpOnly session cookie and do not store bearer tokens in browser storage.
| Storage item | Name | Duration | Required |
|---|---|---|---|
| Browser session cookie | connect.sid |
1 hour by default; up to 30 days with Remember me | Essential |
| Privacy choice | cookieConsent |
365 days | Functional |
| Analytics choice | analyticsConsent |
365 days | Optional |
| Pending consent sync | cookieConsentPending |
30 days, only when consent cannot yet sync to an account | Functional |
| Interface preferences | localStorage: theme, language, email notifications, and login alerts |
Until cleared in the browser; preferences may remain after logout | Optional |
The web client uses localStorage for non-authentication preferences
(theme, language, email notifications, and login alerts). Recent activity is kept in
memory, not persisted as browser storage. The profile page may read legacy
userProfile/lastLogin values left by an older version; the
current code does not write those keys. Cookie-banner
choices are stored in first-party cookies, not localStorage. These values
are not credentials or advertising trackers. The available choices are
Accept all and Reject non-essential; rejecting
non-essential items does not disable the essential login session.
When an account session is available, the stored choice is sent when selected and is also re-sent by pages that initialize the cookie-banner script. The account record stores the most recently synchronized choice, timestamp, IP address, and version sent by the client; the timestamp is therefore a last-sync time, not a reliable, immutable timestamp of the original click. A saved choice is not shown again solely because the policy version changes. Anonymous choices stay in the browser until a later sync succeeds.
state and keeps the code verifier for the
callback. In the sample clients, these flow values use short-lived HttpOnly cookies
and are cleared at callback; they are not tracking cookies.
AuthSys may return data to a registered third-party application only under the scopes you approve and grant on the OAuth consent screen. The data an application receives depends on those granted scopes.
SMTP_HOST setting.| Data | Lifetime / Retention and Cleanup |
|---|---|
| Account data | Email/password accounts can request deletion in AuthSys after confirming the password. Provider-linked accounts cannot use this self-service control; manage the external Google/GitHub account with that provider and contact the privacy email in the Contact Us section for deletion of AuthSys data. Deleting an external provider account does not automatically delete its AuthSys account. When AuthSys deletion is completed, the account is disabled, email/username are replaced, provider IDs and credentials are cleared, and audit identity is redacted. A minimal tombstone remains until cleanup after DATA_RETENTION_DAYS (90 days by default; minimum 30). Some operational fields, including last-login/lockout fields, remain in the tombstone until purge. |
| OAuth access and ID tokens | Token validity is 1 hour (not a promise that every client-held copy is erased at that time). AuthSys rejects tokens for revoked grants when it checks grant status; offline JWT-only validation may not observe revocation before expiry. |
| OAuth refresh tokens | 30 days only when an OAuth client is granted offline_access; tokens rotate and are rejected after revocation. First-party AuthSys login does not require this scope. |
| Authorization codes | 2 minutes and single-use |
| Password-reset token | Valid for 1 hour; MongoDB stores only its SHA-256 hash and expiry time. The current code clears it after successful use or when issuing a replacement; an expired hash may remain in the account record until then or account deletion. |
| OAuth consent/grant records | Authorization remains valid for up to 30 days. Revocation disables the grant immediately; the grant record remains as a tombstone until its expiry/TTL cleanup. AuthSys token validation checks the active grant and approved scopes. |
| Security audit/login records | SecurityAudit records expire after DATA_RETENTION_DAYS (90 days by default; minimum 30). The account's lastLogin is a separate latest-value field retained while the account exists; after account deletion it remains in the tombstone until that tombstone is purged. Local rotated operational log files older than 14 days are removed at application startup, so they may remain longer until a restart. |
| Kafka application/security logs | Only when Kafka logging is enabled: standard Compose config is 7 days or 256 MiB per log partition; local fallback is 24 hours or 128 MiB per log partition. Whichever broker limit is reached first may remove older segments; the byte value is not a total cluster cap. |
| First-party sessions | connect.sid browser cookie: 1 hour by default or up to 30 days with Remember me. Separate MongoDB device/session-control record: 1 day or 30 days respectively; it contains hashed tokens and session/device metadata. |
Subject to the conditions and exceptions in the Personal Data Protection Act (PDPA), your rights include:
Request access and a copy, subject to legal exceptions
Request correction of inaccurate data
Request erasure where statutory grounds apply
Request restriction in cases provided by law
Request eligible data in a portable format where applicable
Object in the circumstances specified by law
Withdraw consent where processing relies on it; this does not affect prior lawful processing
Lodge a complaint with the competent authority where applicable
Security controls in the application and deployment include:
For privacy-related requests, contact our privacy contact: