* @var \Zend\Db\Adapter */ $ZendDb = Bootstrap::get('ZendDb'); /** * @var \Directus\Acl */ $acl = Bootstrap::get('acl'); /** * Authentication */ $DirectusUsersTableGateway = new DirectusUsersTableGateway($acl, $ZendDb); Auth::setUserCacheRefreshProvider(function ($userId) use($DirectusUsersTableGateway) { $cacheFn = function () use($userId, $DirectusUsersTableGateway) { return $DirectusUsersTableGateway->find($userId); }; $cacheKey = MemcacheProvider::getKeyDirectusUserFind($userId); $user = $DirectusUsersTableGateway->memcache->getOrCache($cacheKey, $cacheFn, 10800); return $user; }); if (Auth::loggedIn()) { $user = Auth::getUserRecord(); $acl->setUserId($user['id']); $acl->setGroupId($user['group']); } /** * Request Payload */ $params = $_GET; $requestPayload = json_decode($app->request()->getBody(), true); /** * Extension Alias
/** * Construct Acl provider * @return \Directus\Acl */ private static function acl() { $acl = new acl(); $db = self::get('ZendDb'); $DirectusTablesTableGateway = new DirectusTablesTableGateway($acl, $db); $getTables = function () use($DirectusTablesTableGateway) { return $DirectusTablesTableGateway->select()->toArray(); }; $tableRecords = $DirectusTablesTableGateway->memcache->getOrCache(MemcacheProvider::getKeyDirectusTables(), $getTables, 1800); $magicOwnerColumnsByTable = []; foreach ($tableRecords as $tableRecord) { if (!empty($tableRecord['user_create_column'])) { $magicOwnerColumnsByTable[$tableRecord['table_name']] = $tableRecord['user_create_column']; } } $acl::$cms_owner_columns_by_table = $magicOwnerColumnsByTable; if (AuthProvider::loggedIn()) { $currentUser = AuthProvider::getUserInfo(); $Users = new DirectusUsersTableGateway($acl, $db); $cacheFn = function () use($currentUser, $Users) { return $Users->find($currentUser['id']); }; $cacheKey = MemcacheProvider::getKeyDirectusUserFind($currentUser['id']); $currentUser = $Users->memcache->getOrCache($cacheKey, $cacheFn, 10800); if ($currentUser) { $privilegesTable = new DirectusPrivilegesTableGateway($acl, $db); $acl->setGroupPrivileges($privilegesTable->getGroupPrivileges($currentUser['group'])); } } return $acl; }