How To Create Access Role In Yii ?




Hi guys


How to create access role in yii and where in yii application part ?

I want to create access role in yii application but i have a problem and dont know about where  to assign role in yii like 

i have three department role

1.admin -: admin have a all access role in our application 

2.staff -: staff same of page and access role like to edit or update 

3.user  -: user have a all access page only viewing in our application


These type of role can set in controller but i can justify where to write all access in yii and how to set access role ,


thank 

hari maliya







Hi,

Yii offers you a plenty of nice tools: see filters, auth … See also auth category of extensions.

Cheers.

hi this is Arun from India . i created new blog after studying yiiblog i am getting

error while creating a new "Post"

CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (blog.tbl_post, CONSTRAINT FK_post_author FOREIGN KEY (author_id) REFERENCES tbl_user (id) ON DELETE CASCADE). The SQL statement executed was: INSERT INTO tbl_post (title, content, tags, status, create_time, update_time, author_id) VALUES (:yp0, :yp1, :yp2, :yp3, :yp4, :yp5, :yp6)

here any example to create Access Rules …

echo Yii::app()->user->getState(‘roles’);

public function accessRules()

{

  return array(  


       array('allow', //allow admin user to perform 'index'&'view' actions


            'actions'=>array('index','view'),


            'users'=>array('admin'),


            'roles'=>array('admin'),


            ),


  );

}

Hi guys

I sold there question answer but i use another type method like this:

Step 1: Write a same code in UserIdentity.php file




    public function authenticate()

    {

	   $user = User::model()->findByAttributes(array('email'=>$this->username));


		if ($user===null) { // No user found!

			$this->errorCode=self::ERROR_USERNAME_INVALID;

		} else if ($user->password !== ($this->password) ) { // Invalid password!

			$this->errorCode=self::ERROR_PASSWORD_INVALID;

		} else { // Okay!

		    $this->errorCode=self::ERROR_NONE;

		    // Store the role in a session and assign action for role 

		    $this->setState('role', $user->role);

		   $this->_id = $user->id;

		}

		return !$this->errorCode;

	}



setp 2: Then After write same code in YourController.php, you to access and assign role in your staff, admin, user.




 public function accessRules()

	{

	

	if( Yii::app()->user->getState('role') =="admin")

	{

             $arr =array('index','calendar','contact','staff','service');   // give all access to admin

        }else if( Yii::app()->user->getState('role') =="staff")

		{

			$arr =array('index','staff','staffcalendar','update');   // give all access to staff

		}

		else

		{

          $arr = array('');          //  no access to other user

        }

		

        return array(			

		array('allow', // allow authenticated user to perform 'create' and 'update' actions

				'actions'=>$arr,

				'users'=>array('@'),

			),

						

			array('deny',  // deny all users

				'users'=>array('*'),

			),

		);

	}



Step 3: Now you can access role based user and perform action.

Thanks

hari maliya

Hello,

I am facing the same problem… did you found the way to execute the script that adds to auth tables.

Solved : http://www.yiiframework.com/forum/index.php/topic/44894-creating-authorization-roles/