/** * Get assigned routes of user. * @param integer $userId * @return array */ public static function getRoutesByUser($userId) { if (!isset(self::$_userRoutes[$userId])) { $cache = Configs::cache(); if ($cache && ($routes = $cache->get([__METHOD__, $userId])) !== false) { self::$_userRoutes[$userId] = $routes; } else { $routes = static::getDefaultRoutes(); $manager = Yii::$app->getAuthManager(); foreach ($manager->getPermissionsByUser($userId) as $item) { if ($item->name[0] === '/') { $routes[$item->name] = true; } } self::$_userRoutes[$userId] = $routes; if ($cache) { $cache->set([__METHOD__, $userId], $routes, Configs::cacheDuration(), new TagDependency(['tags' => Configs::CACHE_TAG])); } } } return self::$_userRoutes[$userId]; }