หากจำเป็นที่จะต้องมีจัดการผู้ใช้และสิทธิการใช้งานใน yii ในรูปแบบที่ซับซ้อน ผู้ใช้มีหลายระดับชั้น แต่ละกลุ่มมีสิทธิในการสร้าง แก้ไข ลบ ดู หรือห้ามใช้งาน ไม่เหมือนกัน yii ได้เตรียม Authentication and Authorization ที่นิยมใช้กันคือ Role-Based Access Control หรือ rbac
แต่เพราะความซับซ้อนในการใช้งาน และต้องเขียน code ควบคุม จึงมักนิยมใช้ extension Yii Users และ Rights มาช่วย การลงไม่ยาก แต่มีหลายขั้นตอน ถ้าทำผิดขั้นตอนอาจจะทำให้ลงไม่สำเร็จ เคยทำตามวิธีทั้งในคู่มือและเว็บบอร์ดแต่ไม่สำเร็จ พยามอยู่นานกว่าจะทำได้ T_T อันนี้เป็นขั้นตอนที่ผมทำจนสำเร็จ
- download yii-rights จาก rights แตกใส่ /your-app/protected/modules/rights เช่น D:\xampp\htdocs\yii1\JumpFlower\protected\modules\rights
- เปิดไฟล์ ใน \your-app\protected\modules\user\data เช่น D:\xampp\htdocs\yii1\JumpFlower\protected\modules\user\data เลือกไฟล์ schema.mysql.sql ถ้าใช้ tablePrefix อื่นอาจจะมีปัญหาได้ ทางที่ดีไม่ควรใช้ สร้างตารางขึ้นมาใหม่ และแก้ field tbl_users.Lastvisit เป็น lastvisit_at
- เปิดไฟล์ /your-app/protected/config/main.php เพิ่มใน array 'components'
123456789101112131415
'components'
=>
array
(
...
'authManager'
=>
array
(
'class'
=>
'RDbAuthManager'
,
'connectionID'
=>
'db'
,
'defaultRoles'
=>
array
(
'Authenticated'
,
'Guest'
),
),
'user'
=>
array
(
'class'
=>
'RWebUser'
,
// enable cookie-based authentication
'allowAutoLogin'
=>true,
'loginUrl'
=>
array
(
'/user/login'
),
),
...
),
เพิ่มใน array 'import'
12345678'import'
=>
array
(
...
'application.modules.rights.*'
,
'application.modules.rights.components.*'
,
'application.modules.user.components.*'
,
'application.modules.user.models.*'
,
...
),
เพิ่มใน array 'modules'
1234567891011121314151617'modules'
=>
array
(
...
'rights'
=>
array
(
'authenticatedName'
=>
'Authenticated'
,
'debug'
=>false,
'install'
=>true,
'superuserName'
=>
'Admin'
,
'userIdColumn'
=>
'id'
,
'userNameColumn'
=>
'username'
,
),
'user'
=>
array
(
'tableProfileFields'
=>
'profiles_fields'
,
'tableProfiles'
=>
'profiles'
,
'tableUsers'
=>
'users'
),
...
),
-
- เปิด browser ไปที่ url http://localhost/yii1/JumpFlower/index.php?r=rights
- ตอบ yes พยามเปิดทุกอย่างให้กลุ่ม Authenticated อย่าลืม Assign ตัวเองเข้ากลุ่ม Authenticated
กว่าจะได้ แต่ถ้าได้คุ้มแน่นอน