/** * 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['/*']); } }
/** * Ivalidate cache */ protected function invalidate() { if (Configs::instance()->cache !== null) { TagDependency::invalidate(Configs::instance()->cache, self::CACHE_TAG); } }