png_92
چهارشنبه 13 مرداد 1395, 13:04 عصر
سلام
من میخوام تو پروژم از RBAC استفاده کنم و یکسری کد اضافه کردم ولی دقیقا نمیدونم چطوری باید جاهای دیگه مثل اضافه شدن کاربر ازش استفاده کنم.
کد زیر کنترلر rbac:
<?php
namespace commands;
use Yii;
use yii\console\Controller;
class RbacController extends Controller
{
public function actionInit()
{
$auth = Yii::$app->authManager;
// add "login" permission
$login = $auth->createPermission('login');
$login->description = 'login';
$auth->add($login);
// add "create user" permission
$create = $auth->createPermission('create');
$create->description = 'create user';
$auth->add($create);
// add "user" role and give this role the "createPost" permission
$user = $auth->createRole('user');
$auth->add($user);
$auth->addChild($user, $login);
// add "admin" role and give this role the "updatePost" permission
// as well as the permissions of the "user,server,guest" role
$admin = $auth->createRole('admin');
$auth->add($admin);
$auth->addChild($admin, $create);
$auth->addChild($admin,$user);
// Assign roles to users. 1 and 2 are IDs returned by IdentityInterface::getId()
// usually implemented in your User model.
$auth->assign($user, 2);
$auth->assign($admin, 1);
}
}
و این هم فانکشن create که در کنترلر user قرار داره:
class UsersController extends Controller
{
public function actionCreate()
{
$model = new User();
// $model = new User(['scenario' => 'register']);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}}
این هم کد لاگینم در کنترلر site :
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
], ];
}
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
return $this->render('login', [
'model' => $model,
]);
}}
من موقع ثبت نام کاربر چطوری میتونم بهش نقش بدم؟ ایا باید از این کد استفاده کنم؟ :
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
$user->save(false);
// the following three lines were added:
$auth = Yii::$app->authManager;
$authorRole = $auth->getRole('author');
$auth->assign($authorRole, $user->getId());
return $user;
}
return null;
}
من همه مراحلو انجام دادم. کانفیگ لازمو انجام دادم. جدولای migration رو درست کردم. آیا نیازی هست با وجود این جدولا بازم فیلد role در جدول user باشه؟
در کل چجوری باید ازش تعیین سطح دسترسی استفاده کنم.
من میخوام تو پروژم از RBAC استفاده کنم و یکسری کد اضافه کردم ولی دقیقا نمیدونم چطوری باید جاهای دیگه مثل اضافه شدن کاربر ازش استفاده کنم.
کد زیر کنترلر rbac:
<?php
namespace commands;
use Yii;
use yii\console\Controller;
class RbacController extends Controller
{
public function actionInit()
{
$auth = Yii::$app->authManager;
// add "login" permission
$login = $auth->createPermission('login');
$login->description = 'login';
$auth->add($login);
// add "create user" permission
$create = $auth->createPermission('create');
$create->description = 'create user';
$auth->add($create);
// add "user" role and give this role the "createPost" permission
$user = $auth->createRole('user');
$auth->add($user);
$auth->addChild($user, $login);
// add "admin" role and give this role the "updatePost" permission
// as well as the permissions of the "user,server,guest" role
$admin = $auth->createRole('admin');
$auth->add($admin);
$auth->addChild($admin, $create);
$auth->addChild($admin,$user);
// Assign roles to users. 1 and 2 are IDs returned by IdentityInterface::getId()
// usually implemented in your User model.
$auth->assign($user, 2);
$auth->assign($admin, 1);
}
}
و این هم فانکشن create که در کنترلر user قرار داره:
class UsersController extends Controller
{
public function actionCreate()
{
$model = new User();
// $model = new User(['scenario' => 'register']);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}}
این هم کد لاگینم در کنترلر site :
class SiteController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'logout' => ['post'],
],
], ];
}
public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
}
return $this->render('login', [
'model' => $model,
]);
}}
من موقع ثبت نام کاربر چطوری میتونم بهش نقش بدم؟ ایا باید از این کد استفاده کنم؟ :
public function signup()
{
if ($this->validate()) {
$user = new User();
$user->username = $this->username;
$user->email = $this->email;
$user->setPassword($this->password);
$user->generateAuthKey();
$user->save(false);
// the following three lines were added:
$auth = Yii::$app->authManager;
$authorRole = $auth->getRole('author');
$auth->assign($authorRole, $user->getId());
return $user;
}
return null;
}
من همه مراحلو انجام دادم. کانفیگ لازمو انجام دادم. جدولای migration رو درست کردم. آیا نیازی هست با وجود این جدولا بازم فیلد role در جدول user باشه؟
در کل چجوری باید ازش تعیین سطح دسترسی استفاده کنم.