Esempio n. 1
0
 /**
  * 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];
 }