IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Backend.php vers /admin + guard


Sujet :

Symfony PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut Backend.php vers /admin + guard
    Bonjour à tous,

    Je viens vers vous suite à un problème subtilement présent dans le projet symfony sur lequel je bosse actuellement.

    J'ai un backend généré pour mon site. J'ai installé le plugin sfAdminDashPlugin ainsi que le fameux sfGuardPlugin.

    Jusqu'ici tout va bien.
    J'ai configuré comme spécifié dans la doc de admindash la connexion avec sfGuardPlugin en créant un module sfGuardAuth dans le backend, configuré les actions:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    require_once(sfConfig::get('sf_root_dir').'/plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/BasesfGuardAuthActions.class.php');
    class sfGuardAuthActions extends BasesfGuardAuthActions
    {
      public function preExecute()
      {
        sfForm::disableCSRFProtection();
      }
    }
     
    ?>
    et le template signinsuccess.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php include_partial('sfAdminDash/login', array('form' => $form)); ?>
    J'aimerai ensuite supprimé l'url backend.php et la remplacer par /admin

    J'ai donc activer le no_script_name à true. Dans mon routage, la route par défaut est donc

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    sf_atos_cart:
      class: sfDoctrineRouteCollection
      options:
        model:                sf_atos_cart
        module:               sf_atos_cart
        prefix_path:          /admin/sf_atos_cart
        column:               id
        with_wildcard_routes: true
     
    abonnement_type:
      class: sfDoctrineRouteCollection
      options:
        model:                abonnementType
        module:               abonnementType
        prefix_path:          /admin/abonnementType
        column:               id
        with_wildcard_routes: true
     
    magazine:
      class: sfDoctrineRouteCollection
      options:
        model:                magazine
        module:               magazine
        prefix_path:          /admin/magazine
        column:               id
        with_wildcard_routes: true
     
    abonnementType:
      class: sfDoctrineRouteCollection
      options:
        model:                abonnementType
        module:               abonnementType
        prefix_path:          /admin/abonnementType
        column:               id
        with_wildcard_routes: true
     
    abonne:
      class: sfDoctrineRouteCollection
      options:
        model:                abonne
        module:               abonne
        prefix_path:          /admin/abonne
        column:               id
        with_wildcard_routes: true
     
    atos:
      class: sfDoctrineRouteCollection
      options:
        model:                sf_atos_cart
        module:               sf_atos_cart
        prefix_path:          /admin/sf_atos_cart
        column:               id
        with_wildcard_routes: true
     
    # default rules
    homepage:
      url:   /admin/
      param: { module: sfAdminDash, action: dashboard }
     
    sf_guard_signin:
          url:   /guard/login
          param: { module: sfGuardAuth, action: signin }
     
    sf_guard_signout:
          url:   /guard/logout
          param: { module: sfGuardAuth, action: signout }
     
    sf_guard_password:
          url:   /guard/request_password
          param: { module: sfGuardAuth, action: password }
     
    # generic rules
    # please, remove them by adding more specific rules
    default_index:
      url:   /:module
      param: { action: index }
     
    default:
      url:   /:module/:action/*
    et dans mon fichier htaccess:

    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
     
    RewriteCond %{REQUEST_URI} ^/admin/?
    RewriteRule ^/admin/(.*)$ backend_dev.php?$1 [QSA,L]
     
    #RewriteCond %{REQUEST_URI} ^/guard/?
      RewriteRule ^guard/(.*)$ backend_dev.php/guard/$1 [QSA,L]
     
      # we skip all files with .something
      RewriteCond %{REQUEST_URI} \..+$
      RewriteCond %{REQUEST_URI} !\.html$
      RewriteCond %{REQUEST_URI} !\.php
      RewriteRule .* - [L]
     
      # we check if the .html version is here (caching)
      RewriteRule ^$ index.html [QSA]
      RewriteRule ^([^.]+)$ $1.html [QSA]
      RewriteCond %{REQUEST_FILENAME} !-f
     
      # no, so we redirect to our front web controller
      RewriteRule ^(.*)$ index.php [QSA,L]
    En local, sur mon mac avec Mamp, tout marche parfaitement.

    Dès que je passe sur mon serveur de prod chez ovh, ça passe plus.

    Précisement, l'accès à http://abo.travail.lemensuel.com/admin/ (admin et admin) fonctionne bien, donc la première partie du htaccess fonctionne.

    Par contre une fois le formulaire soumis, normalement je suis censé tombé sur la route homepage, mais j'obtiens une belle erreur 500.

    L'entrée avec http://abo.travail.lemensuel.com/backend_dev.php/admin/ marche bien

    Quelqu'un a-t-il une idée, là je suis perdu après quelques heures de débug.

    Merci

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut


    Citation Envoyé par globule22 Voir le message
    Par contre une fois le formulaire soumis, normalement je suis censé tombé sur la route homepage, mais j'obtiens une belle erreur 500.
    Il est rare que PHP te lâche simplement une erreur sans rien en dire d'autre ; affiche les erreurs (php_flag display_errors 1 dans le .htaccess) et donne-nous ce qu'affiche dans ce cas le contrôleur debug.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Il est déjà activé c'est ça qui est chiant pour débuger. Je n'ai pas accès même en lecture au log apache en ssh sur le serveur.

  4. #4
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu as essayé en mode débug ?

    Tu peux utiliser symfony pour parsemer ton code de code de log et récupérer cela dans les logs symfony.

    Tu peux aussi le parsemer de die() et autre echo pour savoir où il passe, mais c'est plus lourd sur ce type de serveur.

    Eventuellement, essaye de te monter une machine virtuel en local avec un debian et un serveur xamp pour voir si l'erreur est reproductible.

    Il faut se méfier d'un site développé sous windows et exécuté sous linux, la gestion des majuscules et minuscules n'est pas la même, là où windows est tolérant, linux est extrémiste. Si tu as des liens coucou/Durant/vErt sous windows qui pointent vers la structure coucou/durant/vert ils passeront. Sous linux il planteront. Vérifies. Et vérifies que le transfert par FTP ne t'ai pas rajouté de majuscules intempestives en début de nom de fichier.

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Je suis sous Mac.

    Voilà les logs que j'obtiens en lançant une connection à l'admin:

    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
    55
    56
    57
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signin" (/guard/login)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfRoute "sf_guard_signout" (/guard/logout)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_filter" (/guard/users/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_batch" (/guard/users/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user" (/guard/users.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_new" (/guard/users/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_create" (/guard/users.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_edit" (/guard/users/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_update" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_delete" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_show" (/guard/users/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_object" (/guard/users/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_user_collection" (/guard/users/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_filter" (/guard/groups/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_batch" (/guard/groups/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group" (/guard/groups.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_new" (/guard/groups/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_create" (/guard/groups.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_edit" (/guard/groups/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_update" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_delete" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_show" (/guard/groups/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_object" (/guard/groups/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_group_collection" (/guard/groups/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_filter" (/guard/permissions/filter.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_batch" (/guard/permissions/batch.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission" (/guard/permissions.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_new" (/guard/permissions/new.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_create" (/guard/permissions.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_edit" (/guard/permissions/:id/edit.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_update" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_delete" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_show" (/guard/permissions/:id.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_object" (/guard/permissions/:id/:action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Connect sfDoctrineRoute "sf_guard_permission_collection" (/guard/permissions/:action/action.:sf_format)
    Apr 07 09:06:08 symfony [info] {sfPatternRouting} Match route "sf_guard_signin" (/guard/login) for /guard/login with parameters array (  'module' => 'sfGuardAuth',  'action' => 'signin',)
    Apr 07 09:06:08 symfony [info] {sfFilterChain} Executing filter "sfRenderingFilter"
    Apr 07 09:06:08 symfony [info] {sfFilterChain} Executing filter "sfExecutionFilter"
    Apr 07 09:06:08 symfony [info] {sfGuardAuthActions} Call "sfGuardAuthActions->executeSignin()"
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Mysql} exec : SET NAMES 'utf8' - ()
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s WHERE (s.username = ? AND s.is_active = ?) - (admin, 1)
    Apr 07 09:06:08 symfony [info] {myUser} User is authenticated
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.user_id AS s2__user_id, s2.permission_id AS s2__permission_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_permission s LEFT JOIN sf_guard_user_permission s2 ON s.id = s2.permission_id WHERE (s2.user_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.user_id AS s2__user_id, s2.group_id AS s2__group_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_group s LEFT JOIN sf_guard_user_group s2 ON s.id = s2.group_id WHERE (s2.user_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.name AS s__name, s.description AS s__description, s.created_at AS s__created_at, s.updated_at AS s__updated_at, s2.group_id AS s2__group_id, s2.permission_id AS s2__permission_id, s2.created_at AS s2__created_at, s2.updated_at AS s2__updated_at FROM sf_guard_permission s LEFT JOIN sf_guard_group_permission s2 ON s.id = s2.permission_id WHERE (s2.group_id IN (?)) - (1)
    Apr 07 09:06:08 symfony [info] {myUser} Add credential(s) "admin"
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : UPDATE sf_guard_user SET last_login = ?, updated_at = ? WHERE id = ? - (2011-04-07 09:06:08, 2011-04-07 09:06:08, 1)
    Apr 07 09:06:08 symfony [info] {Doctrine_Connection_Statement} execute : SELECT s.id AS s__id, s.first_name AS s__first_name, s.last_name AS s__last_name, s.email_address AS s__email_address, s.username AS s__username, s.algorithm AS s__algorithm, s.salt AS s__salt, s.password AS s__password, s.is_active AS s__is_active, s.is_super_admin AS s__is_super_admin, s.last_login AS s__last_login, s.created_at AS s__created_at, s.updated_at AS s__updated_at FROM sf_guard_user s WHERE (s.id = ?) - (1)
    Apr 07 09:06:08 symfony [info] {sfFrontWebController} Redirect to "http://abo.travail.lemensuel.com/admin/"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send status "HTTP/1.1 302 Found"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send header "Location: http://abo.travail.lemensuel.com/admin/"
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send header "Content-Type: text/html; charset=utf-8"
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Configuration 0.97 ms (8)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Factories 38.66 ms (1)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Action "sfGuardAuth/signin" 61.77 ms (1)
    Apr 07 09:06:08 symfony [info] {sfWebDebugLogger} Database (Doctrine) 0.01 ms (7)
    Apr 07 09:06:08 symfony [info] {sfWebResponse} Send content (110 o)
    Donc le sfguard fonctionne bien, j'ai bien une authentification. Dans la lib de sfguard: plugins/sfdoctrineguardplugin/modules/sfguardauth/lib/BasesfGuardAuthActions.class il redirige ensuite après authentification vers la route homepage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
      url:   /admin/
      param: { module: sfAdminDash, action: dashboard }
    Je viens de tester en local, le code suivant plante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
      url:   /admin
      param: { module: sfAdminDash, action: dashboard }
    ça viendrait surement de là, mais je comprends pk entre mon local et en ligne ça merdouille ?

  6. #6
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Arrive-t-il dans ton contrôleur ?

    Quid si tu mets un code de débug (die() ) dans ton contrôleur (executeDashboard) ?

    Que donne l'exécution en mode débug sur le serveur ?

  7. #7
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Oui il arrive bien dans le controleur du plugin admindash

    plugins/sfadmindashplugin/modules/sfadmindash/lib/BasesfAdminDashActions.class.php

    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
    <?php
    /**
     * sfAdminDash base actions.
     *
     * @package    plugins
     * @subpackage sfAdminDash
     * @author     Ivan Tanev aka Crafty_Shadow @ webworld.bg <vankata.t@gmail.com>
     * @version    SVN: $Id: BasesfAdminDashActions.class.php 25203 2009-12-10 16:50:26Z Crafty_Shadow $
     */ 
    class BasesfAdminDashActions extends sfActions
    {
     
     /**
      * Executes the index action, which shows a list of all available modules
      *
      */
      public function executeDashboard()
      {
          die('executeDashboard<br />');
     
        $this->items = sfAdminDash::getItems();
     
        $this->categories = sfAdminDash::getCategories();    
      } 
     
    }
    D'autre part les actions de guard fonctionnent: http://abo.travail.lemensuel.com/guard/login et http://abo.travail.lemensuel.com/guard/logout

  8. #8
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Il faut reculer le die() jusqu'à ce qu'il plante avant le die, pour trouver le code où le bout de code qui fait planter.

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Bon trouvé

    c'est la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    isset($item['credentials']) ? $user->hasCredential($item['credentials']) : true;
    installée dans la fonction hasPermission($item, $user)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static function hasPermission($item, $user)
      {
        if (!$user->isAuthenticated())
        {
          return false;
        }
     
        return isset($item['credentials']) ? $user->hasCredential($item['credentials']) : true;
      }
    utilisée dans la construction du menu _dash_list.php

    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
    <div class="cpanel">
      <?php foreach ($items as $key => $item): ?>
     
        <?php if (sfAdminDash::hasPermission($item, $sf_user)):?>
          <div style="float: left">
            <div class="icon">
     
              <a href="<?php echo url_for($item['url']) ?>" title="<?php echo __($item['name']); ?>">    
                <?php echo image_tag($item['image'], array('alt' => __($item['name']))); ?>
                <span><?php echo __($item['name']); ?></span>
              </a>
            </div>        
          </div>
        <?php endif; ?>
      <?php endforeach; ?>
     
      <div class="clear"></div>
    </div>
    appelé au début de la vue associée dashboardsuccess.php

    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
    <?php
      use_helper('I18N');
      /** @var Array of menu items */ $items = $sf_data->getRaw('items');
      /** @var Array of categories, each containing an array of menu items and settings */ $categories = $sf_data->getRaw('categories');
    ?>
     
    <div id="sf_admin_container">
      <h1><?php echo __('Dashboard', null, 'sf_admin_dash'); ?></h1>
     
      <?php if (count($items)): ?>
        <?php include_partial('dash_list', array('items' => $items)); ?>
      <?php endif; ?>
      <?php if (count($categories)): ?>
        <?php foreach ($categories as $name => $category): ?>
          <?php if (sfAdminDash::hasPermission($category, $sf_user)): ?>
            <h2><?php echo __(isset($category['name']) ? $category['name'] : $name, null, 'sf_admin_dash'); ?></h2>
            <?php include_partial('dash_list', array('items' => $category['items'])); ?>
          <?php endif; ?>
        <?php endforeach; ?>
      <?php elseif (!count($items)): ?>
        <?php echo __('sfAdminDashPlugin is not configured.  Please see the %documentation_link%.', array('%documentation_link%'=>link_to(__('documentation', null, 'sf_admin_dash'), 'http://www.symfony-project.org/plugins/sfAdminDashPlugin?tab=plugin_readme', array('title' => __('documentation', null, 'sf_admin_dash')))), 'sf_admin_dash'); ?>
      <?php endif; ?>
    </div>
    Je regardes cette histoire de hasCredential

  10. #10
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    J'ai une array dans $item['credentials'] de 1 élément, qui est $item['credentials'][0] -> admin et ça plante sur $user->hasCredential($item['credentials'])

  11. #11
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Comment gères-tu les droits ?

    Quel est la définition de ta classe myUser (dans apps/<application>/lib/mytser.class.php)

  12. #12
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    J'ai simplement cela dans myUser.class.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
     
    class myUser extends sfGuardSecurityUser
    {
    }
     
    ?>
    Au niveau des droits, j'ai déclaré le credentiel admin dans le plugin admindash

    app.yml
    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
    all:
      sf_admin_dash:
        web_dir:                      /sfAdminDashPlugin
        image_dir:                    /sfAdminDashPlugin/images/icons/
        default_image:                config.png
        resize_mode:                  thumbnail
        site:                         Plateforme d'abonnement
        include_path:                 true
        include_jquery_no_conflict:   false
        logout:                       true
        login_route:                  @sf_guard_signin
        logout_route:                 @sf_guard_signout
        items:
          Abonne:
            url:    abonne
            image:        addusers.png
            credentials:  [admin]
          Magazine:
            url:    magazine
            image:        generic.png
            credentials:  [admin]
          Type d'abonnement:
            url:    abonnementType
            image:        module.png
            credentials:  [admin]
          Paiement par carte:
            url:    atos
            image:        module.png
            credentials:  [admin]
          Utilisateurs:
            url:    guard/users
            image:        users.png
            credentials:  [admin]

  13. #13
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    C'est quand même bizarre qu'avec une url clean /admin ça bug, et que avec le controleur de dev, backend_dev.php ça fonctionne ?

  14. #14
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Le myUser semble correcte.

    C'est bizare, même si j'ai déjà eu. C'était à chaque fois des petites erreurs de syntaxe. La dernière, un nom de champ qui était passé de Xxxx_id à xxxx_id et était resté dans un form à Xxxx_id. Plantage en prod uniquement. 3 heures de recherche.

    Essaie soit de débuger avec xDebug, soit a coup de die().

  15. #15
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Ouep, moi ce qui m'intrigue c'est que ça plante sur

    $user->hasCredential($item['credentials'])

    or $item['credentials'] contient bien un élément de valeur 'admin' et même en balançant direct cela dans le code

    $user->hasCredential('admin') ça plante aussi

    La fonction hasCredential est-elle buggée? tome-t-on dans un cas non prévu? ou c'est la variable $user qui merde?

  16. #16
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 11
    Par défaut
    Bon, après avoir fait un gros nettoyage sur le serveur, vider le cache symfony, reuploader ma version local qui marchait, ben là ça tourne

    En fait j'ai un bug de Symfony, je sais pas si c'est récurrent, mais le fichier de cache d'accès au base de donnée me met tout le temps un mot de passe null dans le fichier en cache, je suis obligé d'aller l'éditer sur le serveur.

    Et du coup dès fois je préfères pas vider brutalement le répertoire cache en ligne, histoire de pas avoir à refaire ça à chaque upload.

  17. #17
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Diable...

    Voilà bien un problème que je n'ai jamais rencontré.

    Il n'y a pas à ma connaissance de fichier cache pour accéder à la base de donnée avec doctrine 1.2 ? Sauf si tu parles du fichier config.database.yml.

    Et si tu as un problème là, c'est certainement dû au parse du fichier database.yml. Possible que ton mot de passe comporte des caractères non alphanumérique qui génère une erreur à ce niveau...

Discussions similaires

  1. Redirection nom de domaine vers backend.php?
    Par ricardvince dans le forum Apache
    Réponses: 2
    Dernier message: 20/05/2008, 14h42
  2. [FLASH MX2004] Variable php vers flash
    Par Rhadamanthe59 dans le forum Flash
    Réponses: 8
    Dernier message: 01/03/2006, 22h14
  3. Réponses: 2
    Dernier message: 08/01/2006, 20h50
  4. Réponses: 7
    Dernier message: 01/12/2005, 15h30
  5. [FLASH 8] php vers flash
    Par molesqualeux dans le forum Flash
    Réponses: 2
    Dernier message: 18/11/2005, 16h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo