← บทความทั้งหมด
คู่มือ17 ต.ค. 2569· อ่าน 4 นาที· Kanawoot K.

ให้ทีมเข้าหน้า admin ด้วยบัญชี Google

ไม่ต้องแจกรหัสผ่านให้ทุกคนในทีมอีกต่อไป ตั้งค่าให้ทีมเข้าหน้า admin ของ Easy CMS ด้วยบัญชี Google ในไม่กี่ขั้นตอน และเลือกได้ว่าใครเข้าได้บ้าง

ทุกคนในทีมมีบัญชี Google อยู่แล้ว ทำไมต้องจำรหัสผ่านอีกชุดสำหรับหน้า admin single sign-on ใน Easy CMS ฟรีภายใต้ MIT ไม่ต้องซื้อแพ็กเกจ enterprise เว็บที่คุณกำลังอ่านอยู่นี้ก็ใช้วิธีนี้

1. ติดตั้งและใส่ใน config

npm install @easy-cms/auth-oauth
import { google } from '@easy-cms/auth-oauth'

export default defineConfig({
  serverURL: 'https://cms.example.com',
  auth: {
    providers: [google()], // อ่าน GOOGLE_CLIENT_ID และ GOOGLE_CLIENT_SECRET
  },
  // …
})

serverURL ต้องมีบน production เพราะใช้สร้าง callback URL การเปิด single sign-on จะเพิ่มตาราง user-identities จึงต้องสร้าง migration ด้วย npx easy-cms migrate:create sso แล้ว commit ไฟล์ที่ได้

2. สร้าง OAuth client ใน Google Cloud

  • ไปที่ Google Cloud console → APIs & Services → Credentials แล้วสร้าง OAuth client ID แบบ Web application

  • ถ้าถูกถามให้ตั้ง consent screen: ทีมที่ใช้ Google Workspace เลือก Internal ถ้าไม่ใช่ให้เลือก External และระหว่างที่ยังอยู่ในสถานะ Testing ให้เพิ่มบัญชีของทุกคนที่จะเข้าใน Test users

  • ใน Authorized redirect URIs ใส่ https://cms.example.com/api/cms/auth/google/callback และ http://localhost:3000/api/cms/auth/google/callback สำหรับตอนพัฒนา

หน้า ตั้งค่า → Single sign-on ในหน้า admin แสดง callback URL ที่ถูกต้องพร้อมปุ่มคัดลอก ใช้ตรงนั้นจะได้ไม่พิมพ์ผิด

3. ตั้งค่า environment

ใส่ GOOGLE_CLIENT_ID และ GOOGLE_CLIENT_SECRET ที่ได้จาก Google ในที่ที่คุณ deploy เช่น Environment Variables ของ Vercel อย่า commit ลง git และอย่าส่งต่อในแชต หลัง deploy หน้า login จะมีปุ่ม เข้าสู่ระบบด้วย Google

4. เลือกว่าใครเข้าได้

ค่าเริ่มต้นปลอดภัยที่สุด: เฉพาะคนที่มีบัญชีใน Easy CMS อยู่แล้ว เข้าสู่ระบบด้วยรหัสผ่านครั้งแรกแล้วกด เชื่อม Google ที่หน้าบัญชีของตัวเอง อีเมลที่ไม่รู้จักจะเข้าไม่ได้

ถ้าทีมใช้ Google Workspace มีทางลัดสองแบบ:

  • google({ linkByEmail: true }) จับคู่บัญชีด้วยอีเมลที่ Google ยืนยันแล้ว ไม่ต้องกดเชื่อมเอง

  • providerSignUp: { domains: ['example.com'], role: 'editor' } ให้คนในโดเมนของคุณได้บัญชีตอนเข้าครั้งแรก (บทบาทนี้ตั้งเป็น admin ไม่ได้)

ใช้ google({ hd: 'example.com' }) ร่วมด้วย เพื่อให้หน้าเลือกบัญชีของ Google แสดงเฉพาะบัญชีในโดเมนของคุณ

5. ปิดรหัสผ่าน (ถ้าต้องการ)

auth: { providers: [google()], password: false },

ทุกคนจะต้องเข้าด้วย Google ยกเว้น admin ที่ยังใช้รหัสผ่านได้ ไว้เป็นทางเข้าสำรองตอน Google มีปัญหา

ต่อจากนี้

รวม single sign-on กับ บทบาทและสิทธิ์ระดับ field และ audit log แล้ว ทีมจะรู้ว่าใครแก้อะไรเมื่อไร รายละเอียดทั้งหมด รวมถึง Microsoft, GitHub และ OpenID Connect อยู่ที่ คู่มือ Single sign-on