Je suis a la recherche de quelque lumière sur un petit problème avec slim framework.
J'utilise Slim pour faire une api, j'adore ce framework!! il est tout bonement genial!! mais voila, je voudrais utilisé aussi slim pour pouvoir faire un blog perso et donc avoir une adminisration, et une vue sans connection. mais je ne sais pas comment dissocier mes 2 partie. la partie public aurai la partie visible a tous le monde et la partie admin contiendrais l'administration de mon blog.

je pense qu'il faut utiliser le .htacces mais je ne sais pas du tous comment, j'ai aucune experience dans ce domaine. Quelqu'un aurais une idée?

14 réponses


Salut,

Le .htaccess fourni dans la doc de Slim Framework répond à tes besoins:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Il suffit qu'un fichier appellé admin.php existe, et tu pourras y accéder.

Tu pourrais modifier le .htaccess pour mieux répondre à tes besoins.

RewriteEngine On
RewriteRule ^admin$ admin.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Le différence est que si tu accèdes à site.com/admin, tu seras redirigé vers admin.php.

Defy
Auteur

J'essai ce demain merci :-) je pourrai avoir un peut plus d'explication sur la composition de se htaccess stp? pour comprendre un peut a quoi cela correspond

edit: Bon ben désolé, ca ne fonctionne pas du tout, ou alors j'ai mon squelette de dossier qui est pas optimisé pour ca

@Greg: Si j'ai bien compris, il souhaite séparer completement la partie admin. C'est un choix.

@Defy:

RewriteEngine On
RewriteRule ^admin$ admin.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
  • Autorise les redirections ;
  • Si l'URL ressemble à site.com/admin, alors utiliser la page site.com/admin.php ;
  • Si les prochaines requests ne sont pas des fichiers, alors exécuter la ligne suivante ;
  • Redirige tout vers index.php.
Defy
Auteur

@Greg Kalinarczyk qu'est ce que tu entend par system de router?

Defy
Auteur

t'aurais un exemple par exemple pour protéger les acces sur les routes admins?

Dans un router, toutes les demandes sont redirigés vers une page, qui appelle la méthode d'un controlleur. Par exemple, la page site.com/event/list executera la méthode list qui est dans la classe Event, dans le dossier destinés aux controlleurs.

Defy
Auteur

heu....... ^^

Tu auras besoin d'un .htpasswd:

  • Crée ce fichier ;
  • Vas sur ce site, et entre le pseudo et le mdp que tu souhaite ;
  • Il te donnera une ligne qu'il faut mettre dans ton .htpasswd ;
  • Dans ton .htaccess, ajoute:

    AuthUserFile chemin/vers/.htpasswd
    AuthName "Message"
    AuthType Basic
    <Files "admin.php">
        require valid-user
    </Files> 

Tout ce que j'ai fais, c'est traduire cet article.

Defy
Auteur

Bon, on vas repartir depuis le debut, je suis absolument pas du tous au gout du jours des htaccess et htpasswd

Concrètement j'ai une architecture comme ceci actuellment

  • dossier application racine
    • mon dossier app ou j'ai mes controllers et mes modèles
    • mon dossier vendor ou j'ai tous les lib externe la slim et redbean
    • index.php ou j'ai toute mes route
    • .htaccess, celui qui est conseillé par la doc de slim

Le .htpasswd ce met a quel niveau? au meme endroit? dans un dossier admin?
tu aurais une architecture type?

je connais bien slim en temps que server API en faite, j'ai devellopé tout une api pour les cours avec slim pour une application mobil et une appli java, mais je ne m'occupé pas d'authentification ou de multi vue, le serveur a dispo etait deja protégé par un system de token mais étant encore debutant en PHP, je travail avec depuis 1ans et demi maitenant, je n'ai pas encore saisie toute les facette de l'objet en php et des tokens et tout le tralala

.htaccess et .htpasswd ne sont pas liés à PHP, ils sont liés à Apache.

Le .htpasswd va ou tu veux, je le metterais à la racine personnellement.

Defy
Auteur

et du coup, j'aurais un index.php avec mes route vue utilisateur et un admin.php ou j'aurai ma partie admin. j'ai bien résumé la chose?

edit: oui ca je sais ^^ je suis pas si a la pêches que ca en htaccess et tous le tralalala ^^

Oui.

Tu y arrives ?

Defy
Auteur

je suis pas encore au taf, des que j'y suis je test et je te fait un retour

Defy
Auteur

Bon ben ca ne marche pas, je t'avous que je suis un peut perdu la avec tous ca ^^

Bon j'avance a petit pat comme on dirait, j'ai réussi a mettre en place les différentes url et la redirection comme je veut, mais je n'arrive pas a comprendre comment empêcher aux utilisateur d'accéder au groupe d'url "admin"