Example #1
0
 /**
  * Check access route for user.
  * @param string|array $route
  * @param integer|User $user
  * @return boolean
  */
 public static function checkRoute($route, $params = [], $user = null)
 {
     $config = Configs::instance();
     $r = static::normalizeRoute($route);
     if ($config->onlyRegisteredRoute && !isset(static::getRegisteredRoutes()[$r])) {
         return true;
     }
     if ($user === null) {
         $user = Yii::$app->getUser();
     }
     $userId = $user instanceof User ? $user->getId() : $user;
     if ($config->strict) {
         if ($user->can($r, $params)) {
             return true;
         }
         while (($pos = strrpos($r, '/')) > 0) {
             $r = substr($r, 0, $pos);
             if ($user->can($r . '/*')) {
                 return true;
             }
         }
         return $user->can('/*');
     } else {
         $routes = static::getRoutesByUser($userId);
         if (isset($routes[$r])) {
             return true;
         }
         while (($pos = strrpos($r, '/')) > 0) {
             $r = substr($r, 0, $pos);
             if (isset($routes[$r . '/*'])) {
                 return true;
             }
         }
         return isset($routes['/*']);
     }
 }
Example #2
0
 /**
  * Ivalidate cache
  */
 protected function invalidate()
 {
     if (Configs::instance()->cache !== null) {
         TagDependency::invalidate(Configs::instance()->cache, self::CACHE_TAG);
     }
 }