2016-05-12 9 views
0

Ich verwende Rollenvalidierungen und ich verwende derzeit nur phprbca, bin noch nicht in die Datenbankrbca gekommen.Wenn Benutzer fortfahren, wie? Yii2

Ich habe einige benutzerdefinierte Validierungen auf meinem Controller, ich möchte den Benutzer in der Lage, bestimmte Regeln zu ignorieren, wenn er als Administrator angemeldet ist. Wie könnte ich das tun?

<?php 
use app\models\User; 
#Next line, how would i do it? or if (username=Richard) 
if (userid=100){ 
    if($model->driver_identitynum!=null){ 
     $count = Drivers::find()->select('drivers.*')->joinWith('archives')->where('archive.DateCreated > DATE(CURDATE())')->andWhere(['archive.driver_identitynum' => $model->driver_identitynum])->count(); 

     if($count>0) 
     $valid=false; 
     \Yii::$app->getSession()->setFlash('error', 'Can\'t proceed, already added today.'); 
     $model->addError('driver_identitynum',"El conductor ha salido {$count} veces."); 
    } 
} 
?> 

meine Benutzer Modell:

<?php 

namespace app\models; 

class User extends \yii\base\Object implements \yii\web\IdentityInterface 
{ 
    public $id; 
    public $username; 
    public $password; 
    public $authKey; 
    public $accessToken; 

    private static $users = [ 
     '100' => [ 
      'id' => '100', 
      'username' => 'admin', 
      'password' => 'admin', 
      'authKey' => 'test100key', 
      'accessToken' => '100-token', 

     ], 
     '101' => [ 
      'id' => '101', 
      'username' => 'demo', 
      'password' => 'demo', 
      'authKey' => 'test101key', 
      'accessToken' => '101-token', 
     ], 
    ]; 

    /** 
    * @inheritdoc 
    */ 
    public static function findIdentity($id) 
    { 
     return isset(self::$users[$id]) ? new static(self::$users[$id]) : null; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public static function findIdentityByAccessToken($token, $type = null) 
    { 
     foreach (self::$users as $user) { 
      if ($user['accessToken'] === $token) { 
       return new static($user); 
      } 
     } 

     return null; 
    } 

    /** 
    * Finds user by username 
    * 
    * @param string  $username 
    * @return static|null 
    */ 
    public static function findByUsername($username) 
    { 
     foreach (self::$users as $user) { 
      if (strcasecmp($user['username'], $username) === 0) { 
       return new static($user); 
      } 
     } 

     return null; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function getAuthKey() 
    { 
     return $this->authKey; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public function validateAuthKey($authKey) 
    { 
     return $this->authKey === $authKey; 
    } 

    /** 
    * Validates password 
    * 
    * @param string $password password to validate 
    * @return boolean if password provided is valid for current user 
    */ 
    public function validatePassword($password) 
    { 
     return $this->password === $password; 
    } 


} 

Antwort

0

Wenn Sie eine rbac Erlaubnis admin für Ihre Benutzer haben, können Sie die Benutzerrolle eval mit

Yii::$app->User->can('admin')

if (Yii::$app->User->can('admin')) { 
    // your code fro admin 
} 
Verwandte Themen