Bonjour
je cherche à interfacer un annuaire Ldap avec des application clientes.Je suis donc en train de développer une API php qui aura ce rôle.Les applications clientes enverront des requêtes vers l'API pour accéder aux ressources de l'annuaire.Ces requêtes auront la forme d'URI.Au niveau de l'API je vais avoir un fichier mapping.php. C'est dans ce fichier que je vais transformer les URI en chemin d'accès réel aux ressources de l'annuaire.Je vais également déterminer les droits associés aux ressources.
Je veux donc maintenant écrire ce fichier mais je ne sais pas trop comment m'y prendre.

-Première solution(complétement inadapté): faire un switch avec toute les ressources possibles:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
//une requête = URI + méthode
 
 switch ($this->URI) {
	//URI1
	case /essai1/....:
		//l'URL=le chemin de la ressource dans le l'annuaire
		$chemin="ou=test;dc=test2...";
		switch ($this->method) {
			case 'GET':
				//A= administrateur, I=invité...
				$autorisations=[A,I];
				getRessource($chemin,$autorisations);
				break;
			case 'POST':
				$autorisations=[A];
				postRessource($chemin,$autorisations);
				break;
			case 'PUT':
				$autorisations=[A];
				putRessource($chemin,$autorisations);
				break;
			case 'DELETE':
				$autorisations=[A];
				deleteRessource($chemin,$autorisations);
				break;
		} 
		break;
	//URI2
	case /essai2/....:
		$chemin="ou=test;dc=test2...";
		switch ($this->method) {
			case 'GET':
				//A= administrateur, I=invité...
				$autorisations=[A,I];
				getRessource($chemin,$autorisation);
				break;
			case 'POST':
				$autorisations=[A];
				postRessource($chemin,$autorisation);
				break;
			case 'PUT':
				$autorisations=[A];
				putRessource($chemin,$autorisation);
				break;
			case 'DELETE':
				$autorisations=[A];
				deleteRessource($chemin,$autorisation);
				break;
		} 
		break;
.....
 
	}
Etant donné le nombre de ressource cette solution n'est vraiment pas performante, le nombre de test étant trop important...

-Deuxième solution:construire des URI logiques qui correspondent à la structure de l'annuaire. Je pourrais donc directement reconstruire l'URL à partir de l'URI
exemple
si
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$URI= /ou_test/dc_test2...
l'URL sera
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$chemin="ou=test;dc=test2...";
Je peux ainsi reconstruire dynamiquement les URL à partir des URI.Mais ce système pose plusieurs problèmes:
-c'est fortement dépendant de la structure de l'annuaire.
-La structure de l'annuaire est visible par le client
-Il est bcp plus difficile d'attribuer des droits pour chacune des opérations (lecture,suppression,ajout et modification)

Avez vous des conseils? Merci davance