Yii Framework Forum: [Solved]Memberikan roles pada user tertentu - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

[Solved]Memberikan roles pada user tertentu Rate Topic: -----

#1 User is offline   junxiong 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 541
  • Joined: 21-June 10

Posted 29 June 2010 - 04:38 AM

halo para suhu2 Yii semua...

Nanya donk, kan ketika login umumnya ada role admin, authenticate ama guest. Nah yang mau saya tanya adalah bagaimana caranya supaya saya mau assign suatu user sebagai admin. Soalnya selama ini saya harus membuat user dengan username 'admin' baru bisa, tidak bisa dengan menggunakan username lain. Padahal harusnya tidak begitu bukan? Terima kasih sebelumnya :)
“The most likely way for the world to be destroyed, most experts argue, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.” - Nathaniel Borenstein

Yii Playground : Collaborative demo apps. You can join to improve it too!
My Team's Blog: In Indonesian.
0

#2 User is offline   junxiong 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 541
  • Joined: 21-June 10

Posted 29 June 2010 - 04:47 PM

View Postjunxiong, on 29 June 2010 - 04:38 AM, said:

halo para suhu2 Yii semua...

Nanya donk, kan ketika login umumnya ada role admin, authenticate ama guest. Nah yang mau saya tanya adalah bagaimana caranya supaya saya mau assign suatu user sebagai admin. Soalnya selama ini saya harus membuat user dengan username 'admin' baru bisa, tidak bisa dengan menggunakan username lain. Padahal harusnya tidak begitu bukan? Terima kasih sebelumnya :)



Terakhir saya sudah menemukan caranya.. Karena saya lebih prefer cara yang Access control list via fungsi accessRules() daripada RBAC (karena kurang mengerti apa kelebihan RBAC selain bisa hirarki). Saya mendapat referensi dari link ini :

http://blog.dmcinsig...-control-lists/
http://blog.dmcinsig...-yii-framework/

Secara default Yii menggunakan ACL dengan membandingkan username CWebUser orang yang login. Oleh karenanya jika kita memiliki 2 orang admin maka kita harus menulis seperti ini :
array('allow', // allow harold and maude user to perform 'admin' and 'delete' actions
    'actions'=>array('admin','delete'),
    'users'=>array('harold','maude'),
),


Nah masalahnya adalah, terkadang user kita bersifat fleksibel, di mana masing-masing memiliki role khusus. Otomatis membandingkan username bukanlah solusinya. Makanya solusi dari blog itu, kita meminta Yii untuk membandingkan roles dengan cara

array('allow',
    'actions'=>array('admin','delete'),
    'users'=>array('@'),
    'expression'=>'isset($user->role) && ($user->role==="editor")'
),


Di sini expression untuk menjalankan script php dan haruslah mengembalikan nilai boolean. Tetapi bagaimana mungkin kita bisa memakai $user->role padahal CWebUser hanya memiliki Username dan Password?? Nah ketika kita melakukan authenticate() pada file components/UserIdentity.php kita harus setState()

$this->setState('role',$users->type);


NB:$users saya itu merupakan User::model() yang memiliki attribute "type".

Jadi akhirnya thread ini dah diblang solve.
“The most likely way for the world to be destroyed, most experts argue, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.” - Nathaniel Borenstein

Yii Playground : Collaborative demo apps. You can join to improve it too!
My Team's Blog: In Indonesian.
0

#3 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 02 August 2010 - 02:31 AM

Wah, ini yang sy cari. Tetapi bagaimana kalo type usernya banyak misalnya Editor, Administrator, Member, dll?. Bagaimana cara ngeceknya pada controller? ;D.
Terima kasih
0

#4 User is offline   junxiong 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 541
  • Joined: 21-June 10

Posted 22 August 2010 - 11:22 AM

View Post__agus, on 02 August 2010 - 02:31 AM, said:

Wah, ini yang sy cari. Tetapi bagaimana kalo type usernya banyak misalnya Editor, Administrator, Member, dll?. Bagaimana cara ngeceknya pada controller? ;D.
Terima kasih


Kalau udah banyak mending beralih ke RBAC daripada menggunakan cara ACL lagi....
Itu menurut saya sih~
“The most likely way for the world to be destroyed, most experts argue, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.” - Nathaniel Borenstein

Yii Playground : Collaborative demo apps. You can join to improve it too!
My Team's Blog: In Indonesian.
0

#5 User is offline   __agus 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 166
  • Joined: 22-April 10
  • Location:Yogyakarta, Indonesia

Posted 22 August 2010 - 04:38 PM

View Postjunxiong, on 22 August 2010 - 11:22 AM, said:

Kalau udah banyak mending beralih ke RBAC daripada menggunakan cara ACL lagi....
Itu menurut saya sih~


yepp, bener sekali. walaupun agak susah menggunakan RBAC.. ;D
0

#6 User is offline   fastcrash 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 245
  • Joined: 10-March 10
  • Location:South Jakarta

Posted 22 August 2010 - 11:03 PM

View Postjunxiong, on 29 June 2010 - 04:47 PM, said:

Terakhir saya sudah menemukan caranya.. Karena saya lebih prefer cara yang Access control list via fungsi accessRules() daripada RBAC (karena kurang mengerti apa kelebihan RBAC selain bisa hirarki). Saya mendapat referensi dari link ini :

http://blog.dmcinsig...-control-lists/
http://blog.dmcinsig...-yii-framework/

Secara default Yii menggunakan ACL dengan membandingkan username CWebUser orang yang login. Oleh karenanya jika kita memiliki 2 orang admin maka kita harus menulis seperti ini :
array('allow', // allow harold and maude user to perform 'admin' and 'delete' actions
    'actions'=>array('admin','delete'),
    'users'=>array('harold','maude'),
),


Nah masalahnya adalah, terkadang user kita bersifat fleksibel, di mana masing-masing memiliki role khusus. Otomatis membandingkan username bukanlah solusinya. Makanya solusi dari blog itu, kita meminta Yii untuk membandingkan roles dengan cara

array('allow',
    'actions'=>array('admin','delete'),
    'users'=>array('@'),
    'expression'=>'isset($user->role) && ($user->role==="editor")'
),


Di sini expression untuk menjalankan script php dan haruslah mengembalikan nilai boolean. Tetapi bagaimana mungkin kita bisa memakai $user->role padahal CWebUser hanya memiliki Username dan Password?? Nah ketika kita melakukan authenticate() pada file components/UserIdentity.php kita harus setState()

$this->setState('role',$users->type);


NB:$users saya itu merupakan User::model() yang memiliki attribute "type".

Jadi akhirnya thread ini dah diblang solve.


Mantaf gan,
ane juga dulu pernah install tuh RBAC ext. tp emank ribet banget, maklum oop-nya pas-pasan. Posted Image
kyanya memang untuk kelas berat. Posted Image


klo ada yang dah make and tau kelebihannya boleh diceritaiin..
0

#7 User is offline   junxiong 

  • Advanced Member
  • PipPipPip
  • Yii
  • Group: Members
  • Posts: 541
  • Joined: 21-June 10

Posted 23 August 2010 - 11:08 AM

View Postfastcrash, on 22 August 2010 - 11:03 PM, said:

Mantaf gan,
ane juga dulu pernah install tuh RBAC ext. tp emank ribet banget, maklum oop-nya pas-pasan. Posted Image
kyanya memang untuk kelas berat. Posted Image


klo ada yang dah make and tau kelebihannya boleh diceritaiin..


Sekarang sih saya dah pakai, cuma saya pakai Srbac, soalnya dah dibikinin deh rbac-nya. Jadi saya cukup tinggal klak klik doank. Soalnya setau saya, rbac ternyata harus dimasukkin satu per satu gitu.. maksudnya kita musti masukkin nama action controller(sebagai Operation) satu per satu, masukkin user (sebagai Role) satu per satu, terus hubung2in satu per satu...bisa bego duluan sebelum semuanya selesai dimasukkin.

Kalo pakai Srbac saya tinggal drag klik dah~

itu menurut saya sih :P
“The most likely way for the world to be destroyed, most experts argue, is by accident. That’s where we come in; we’re computer professionals. We cause accidents.” - Nathaniel Borenstein

Yii Playground : Collaborative demo apps. You can join to improve it too!
My Team's Blog: In Indonesian.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users