Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/04/2011, 17h32   #1
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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 :
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 :
<?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 :
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 :
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
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 17h38   #2
Responsable Qt & Web sémantique

 
Avatar de dourouc05
 
Homme Thibaut Cuvelier
Étudiant
Inscription : août 2008
Messages : 16 286
Détails du profil
Informations personnelles :
Nom : Homme Thibaut Cuvelier
Localisation : Belgique

Informations professionnelles :
Activité : Étudiant
Secteur : Enseignement

Informations forums :
Inscription : août 2008
Messages : 16 286
Points : 49 840
Points : 49 840
Envoyer un message via MSN à dourouc05 Envoyer un message via Yahoo à dourouc05


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.
__________________
Le troisième défi Qt !

Vous souhaitez participer aux rubriques Qt ou PyQt/PySide (tutoriels, FAQ, traductions, sources) ? Contactez-moi par MP.

Qt : La FAQ : 200 QR
symfony : sfDoctrineGuard

Pas de question d'ordre technique par MP !
dourouc05 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/04/2011, 20h51   #3
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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.
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 08h35   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 09h11   #5
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
Je suis sous Mac.

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

Code :
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 :
1
2
3
homepage:
  url:   /admin/
  param: { module: sfAdminDash, action: dashboard }
Je viens de tester en local, le code suivant plante:

Code :
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 ?
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 09h45   #6
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 ?
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 10h53   #7
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
Oui il arrive bien dans le controleur du plugin admindash

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

Code :
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
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 14h24   #8
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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.
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 17h38   #9
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
Bon trouvé

c'est la ligne suivante

Code :
isset($item['credentials']) ? $user->hasCredential($item['credentials']) : true;
installée dans la fonction hasPermission($item, $user)

Code :
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 :
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 :
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
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 17h42   #10
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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'])
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 19h50   #11
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
Comment gères-tu les droits ?

Quel est la définition de ta classe myUser (dans apps/<application>/lib/mytser.class.php)
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 21h23   #12
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
J'ai simplement cela dans myUser.class.php

Code :
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 :
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]
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/04/2011, 23h18   #13
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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 ?
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 09h49   #14
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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().
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/04/2011, 11h04   #15
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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?
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2011, 22h45   #16
Invité de passage
 
Homme
Ingénieur développement logiciels
Inscription : 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
Points : 0
Points : 0
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.
globule22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 10h04   #17
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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...
__________________
Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).
  • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
  • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
  • Une discussion est terminée ? Alors le bouton est votre ami !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h39.


 
 
 
 
Partenaires

Hébergement Web