Overview
Comment: | Fix issue with file access (thanks @Marc) |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dev |
Files: | files | file ages | folders |
SHA1: |
58790b7cfb00d71171a1b56e94dc7597 |
User & Date: | bohwaz on 2020-11-12 19:06:24 |
Other Links: | branch diff | manifest | tags |
Context
2020-11-12
| ||
19:10 | Make sure the currency symbol is not wrapped to the next line check-in: 787237f665 user: bohwaz tags: dev | |
19:06 | Fix issue with file access (thanks @Marc) check-in: 58790b7cfb user: bohwaz tags: dev | |
03:24 | Fix fetch and reset of background image check-in: 01edf88eae user: bohwaz tags: dev, 1.0.0-beta1 | |
Changes
Modified src/include/lib/Garradin/Fichiers.php from [7211749985] to [48bda0546e].
︙ | ︙ | |||
155 156 157 158 159 160 161 | throw new \LogicException('Type de lien de fichier inconnu.'); } return DB::getInstance()->firstColumn(sprintf('SELECT id FROM fichiers_%s WHERE fichier = %d;', $type, $this->id)); } | | < < < | | | 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 | throw new \LogicException('Type de lien de fichier inconnu.'); } return DB::getInstance()->firstColumn(sprintf('SELECT id FROM fichiers_%s WHERE fichier = %d;', $type, $this->id)); } public function isPublic(&$wiki = null): bool { $config = Config::getInstance(); if ($config->get('image_fond') == $this->id) { return true; } // On regarde déjà si le fichier n'est pas lié au wiki $query = sprintf('SELECT wp.droit_lecture FROM fichiers_%s AS link INNER JOIN wiki_pages AS wp ON wp.id = link.id WHERE link.fichier = ? LIMIT 1;', self::LIEN_WIKI); $wiki = DB::getInstance()->firstColumn($query, (int)$this->id); // Page wiki publique, aucune vérification à faire, seul cas d'accès à un fichier en dehors de l'espace admin if ($wiki !== false && $wiki == Wiki::LECTURE_PUBLIC) { return true; } return false; } /** * Vérifie que l'utilisateur a bien le droit d'accéder à ce fichier * @param mixed $user Tableau contenant les infos sur l'utilisateur connecté, provenant de Session::getUser, ou false * @return boolean TRUE si l'utilisateur a le droit d'accéder au fichier, sinon FALSE */ public function checkAccess(Session $session, bool $require_admin = false) { if (!$require_admin && $this->isPublic($wiki)) { return true; } // Pas d'utilisateur connecté, pas d'accès aux fichiers de l'espace admin if (!$session->isLogged()) { return false; |
︙ | ︙ | |||
216 217 218 219 220 221 222 223 224 225 226 227 228 229 | // On renvoie à l'objet Wiki pour savoir si l'utilisateur a le droit de lire ce fichier $_w = new Wiki; $_w->setRestrictionCategorie($user->id_categorie, $user->droit_wiki); return $require_admin ? $_w->canWritePage($wiki) : $_w->canReadPage($wiki); } $level = $require_admin ? Membres::DROIT_ADMIN : Membres::DROIT_ACCES; // On regarde maintenant si le fichier est lié à la compta $query = sprintf('SELECT 1 FROM fichiers_%s WHERE fichier = ? LIMIT 1;', self::LIEN_COMPTA); $compta = $db->firstColumn($query, (int)$this->id); if ($compta) { | > > | 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 | // On renvoie à l'objet Wiki pour savoir si l'utilisateur a le droit de lire ce fichier $_w = new Wiki; $_w->setRestrictionCategorie($user->id_categorie, $user->droit_wiki); return $require_admin ? $_w->canWritePage($wiki) : $_w->canReadPage($wiki); } $level = $require_admin ? Membres::DROIT_ADMIN : Membres::DROIT_ACCES; $db = DB::getInstance(); // On regarde maintenant si le fichier est lié à la compta $query = sprintf('SELECT 1 FROM fichiers_%s WHERE fichier = ? LIMIT 1;', self::LIEN_COMPTA); $compta = $db->firstColumn($query, (int)$this->id); if ($compta) { |
︙ | ︙ |