Tag Archive ผู้ดูแลระบบ

Byphunsanit

จัดการผู้ใช้และสิทธิใน yii

หากจำเป็นที่จะต้องมีจัดการผู้ใช้และสิทธิการใช้งานใน yii ในรูปแบบที่ซับซ้อน ผู้ใช้มีหลายระดับชั้น แต่ละกลุ่มมีสิทธิในการสร้าง แก้ไข ลบ ดู หรือห้ามใช้งาน ไม่เหมือนกัน yii ได้เตรียม Authentication and Authorization ที่นิยมใช้กันคือ Role-Based Access Control หรือ rbac

แต่เพราะความซับซ้อนในการใช้งาน และต้องเขียน code ควบคุม จึงมักนิยมใช้ extension Yii Users และ Rights มาช่วย การลงไม่ยาก แต่มีหลายขั้นตอน ถ้าทำผิดขั้นตอนอาจจะทำให้ลงไม่สำเร็จ เคยทำตามวิธีทั้งในคู่มือและเว็บบอร์ดแต่ไม่สำเร็จ พยามอยู่นานกว่าจะทำได้ T_T อันนี้เป็นขั้นตอนที่ผมทำจนสำเร็จ

  1. download yii-rights จาก rights แตกใส่ /your-app/protected/modules/rights เช่น D:\xampp\htdocs\yii1\JumpFlower\protected\modules\rights
  2. เปิดไฟล์ ใน \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
  3. เปิดไฟล์ /your-app/protected/config/main.php เพิ่มใน array 'components'
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        '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'

    1
    2
    3
    4
    5
    6
    7
    8
        'import'=>array(
    ...
            'application.modules.rights.*',
            'application.modules.rights.components.*',
            'application.modules.user.components.*',
            'application.modules.user.models.*',
    ...
        ),

    เพิ่มใน array 'modules'

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
        '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

กว่าจะได้ แต่ถ้าได้คุ้มแน่นอน