Bonjour à tous !

J'utilise angular sous symfony, ainsi que grunt ( adieu assetic ) pour gérer mes ressources. Mon gruntfile se situe dans /web, ainsi que toutes mes ressources. ( /web/js, /web/css, etc ). Tout cela est parfait tant que la partie angular est publique.

Le soucis est que j'aimerais avoir une partie privée ( <=> admin ) sous angular. Où j'en suis ?

J'utilise le protocole OAuth2 pour avoir un access_token, avec les droits qui vont avec. J'ai donc un accès restreint ( ou non ) à l'api. Le soucis est le suivant :

Sous Symfony2, tout ce qui se trouve dans /web et publique, mais j'aimerais pouvoir restreindre l'accès des fichiers JS/html de la partie Admin d'Angular.
D'où ma question : Quelle est la meilleure façon de faire cela ?
Je veux pouvoir continuer de bosser avec grunt, j'ai pensé à demander les ressources spécifiques via l'api ( en garantissant mon identité via l'access_token )(Un peu comme assetic non? ) mais peut être qu'il y a plus simple je ne sais pas ...

Cette méthode impliquerais de créer à la racine de symfony un dossier /front ( contenant désormais mon gruntfile et mon environnement d'intégration ) non accessible depuis le web ( contrairement à /web ) et de demander à l'api une resources contenu dans ce dossier. Par exemple /api/resource/chemin/vers/resource.res irait chercher la resource à /etc/.../symfony-project/front/chemin/vers/resources.res .. Cela marcherait bien et me donnerait l'opportunité de tester l'identité de la personne qui demande la ressources. Mais tout cela ne me semble pas très "symfony-able" ahah :)

Si vous vous demandez pourquoi je veux cacher le front ( js / html etc ) de la partie admin c'est simplement pour ne pas révéler sa structure à un utilisateur malin qui irait fouiller lui même dans les templates. J’estime qu'un anonyme n'a pas à connaitre l'organisation de l'espace admin ( même si dans tous les cas il ne peut réaliser aucune action car tout passe par l'API qui est sécurisée ).

Merci d'avance à vous :)

2 réponses


Salut,

Si tu utilises FOSUserBundle ou un bundle qui gere les droits pour les utilisateurs inscrits, tu peux simplement mettre une régle dans le firewall de symfony. (Ca ce passe dans le fichier app/config/security.yml)

- access_control:
      - { path: ^/admin, roles: ROLE_ADMIN }

J'espère que ca aide !

Salut ! Merci pour ta réponse !

Alors oui j'y avais pensé mais le soucis c'est que je veux aller chercher des ressources et non passer par des routes qui mènent à des actions, tu vois ?

( J'aimerais bien continuer cette discution tout de même, même si j'ai codé un bundle me permettant de gérer ce soucis, j'ai utilisé la solution que j'avais laissé en hypothèse .