Dotclear

Ticket #624 (closed defect: fixed)

Opened 17 years ago

Last modified 16 years ago

DC_AUTH_CLASS : Vérifier tous les parents

Reported by: olab Owned by: olivier
Priority: high Milestone: 2.2
Component: module:core Version: 2.1
Severity: normal Keywords: auth
Cc:

Description

Dans la fonction authInstance est utilisée la classe ReflectionClass?, en faisant appel à getParentClass pour vérifier si la classe d'authentification est bien une sous-classe de dcAuth. Il est alors impossible de sous-classer une sous-classe de dcAuth puisqu'on regarde seulement le parent immédiat.

L'utilisation de isSubclassOf permet d'observer toute la hiérarchie d'héritage, autorisant ainsi toute une palette de systèmes d'authentification.

if ($c != 'dcAuth')
{
	$r = new ReflectionClass($c);

	if (!$r->isSubclassOf(new ReflectionClass('dcAuth'))) {
		throw new Exception('Authentication class '.$c.' does not inherit dcAuth.');
	}
}

Change History

comment:1 Changed 17 years ago by sacha

(In [2666]) sandbox: Verifies that dcAuth is an ancestor (and not a parent) of DC_AUTH_CLASS. See #624 (solved)

comment:2 follow-up: ↓ 3 Changed 17 years ago by olivier

  • Status changed from new to closed
  • Resolution set to fixed

(In [2679]) Merged r2666 in trunk, with fixes. Closes #624.

comment:3 in reply to: ↑ 2 Changed 17 years ago by olab

Hello,

Ligne 94

if ($c != 'dcAuth' && !is_subclass_of($c,'dcAut')) {

devrait plutôt être

if ($c != 'dcAuth' && !is_subclass_of($c,'dcAuth')) {

Une petite coquille due au champagne sans doute ;-) Et bonne année !

comment:4 Changed 16 years ago by olab

Bonjour,

Il semblerait que le bug soit revenu avec la 2.1.6, la vérification de tous les parents ne se faisant plus. En fait, après vérification, la correction a eu lieu sur le tronc mais n'a pas été reportée sur la branche 2.1

Olivier.

comment:5 Changed 16 years ago by xave

Dans ce cas là, c'est pas grave : ça sera dans la 2.2 (qui est en route.)

Note: See TracTickets for help on using tickets.

Sites map