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

Plugins PHP Discussion :

les credentials, simple... enfin pas vraiment... [sfGuard]


Sujet :

Plugins PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut les credentials, simple... enfin pas vraiment...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Le système des credentials de symfony est simple et puissant. Un credential est une chaîne qui peut représenter tout ce dont vous avez besoin pour décrire le modèle de sécurité des applications (comme des groupes ou des autorisations).
    sauf qu' en utilisant comme exemple le mot admin au niveau du group et des permissions dans les exemples du type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    all:
      is_secure:   true
      credentials: admin
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    index:
      credentials: [A, B]
    on se sait pas si il cause des groups ou des permissions.

    Après 2 jours de prise de tête en pensant que le niveau 1 était le group et que l'on pouvait paufiner avec un niveau 2 en utilisant les permissions j'ai l'impression que c'est le contraire:

    mon schéma du plugin sfGuardUser:
    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
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
     
    sfGuardGroup:
      actAs: [Timestampable]
      columns:
        name:
          type: string(255)
          unique: true
        description: string(1000)
      relations:
        Users:
          class: sfGuardUser
          refClass: sfGuardUserGroup
          local: group_id
          foreign: user_id
          foreignAlias: Groups
        Permissions:
          class: sfGuardPermission
          local: group_id
          foreign: permission_id
          refClass: sfGuardGroupPermission
          foreignAlias: Groups
     
    sfGuardPermission:
      actAs: [Timestampable]
      columns:
        name:
          type: string(255)
          unique: true
        description: string(1000)
     
    sfGuardGroupPermission:
      options:
        symfony:
          form:   false
          filter: false
      actAs: [Timestampable]
      columns:
        group_id:
          type: integer
          primary: true
        permission_id:
          type: integer
          primary: true
      relations:
        Group:
          class: sfGuardGroup
          local: group_id
          onDelete: CASCADE
        Permission:
          class: sfGuardPermission
          local: permission_id
          onDelete: CASCADE
     
    sfGuardUser:
      actAs: [Timestampable]
      columns:
        first_name: string(255)
        last_name: string(255)
        email_address:
          type: string(255)
          notnull: true
          unique: true
        username:
          type: string(128)
          notnull: true
          unique: true
        algorithm:
          type: string(128)
          default: sha1
          notnull: true
        salt: string(128)
        password: string(128)
        is_active:
          type: boolean
          default: 1
        is_super_admin:
          type: boolean
          default: false
        last_login:
          type: timestamp
        matricule:
          type: integer
          unique: true
        site_id: { type: integer } 
      indexes:
        is_active_idx:
          fields: [is_active]
      relations:
        Groups:
          class: sfGuardGroup
          local: user_id
          foreign: group_id
          refClass: sfGuardUserGroup
          foreignAlias: Users
        Permissions:
          class: sfGuardPermission
          local: user_id
          foreign: permission_id
          refClass: sfGuardUserPermission
          foreignAlias: Users
        Site:
          local: site_id
          foreign: id
     
    sfGuardUserPermission:
      options:
        symfony:
          form:   false
          filter: false
      actAs: [Timestampable]
      columns:
        user_id:
          type: integer
          primary: true
        permission_id:
          type: integer
          primary: true
      relations:
        User:
          class: sfGuardUser
          local: user_id
          onDelete: CASCADE
        Permission:
          class: sfGuardPermission
          local: permission_id
          onDelete: CASCADE
     
    sfGuardUserGroup:
      options:
        symfony:
          form:   false
          filter: false
      actAs: [Timestampable]
      columns:
        user_id:
          type: integer
          primary: true
        group_id:
          type: integer
          primary: true
      relations:
        User:
          class: sfGuardUser
          local: user_id
          onDelete: CASCADE
        Group:
          class: sfGuardGroup
          local: group_id
          onDelete: CASCADE
     
    sfGuardRememberKey:
      options:
        symfony:
          form:   false
          filter: false
      actAs: [Timestampable]
      columns:
        user_id: integer
        remember_key: string(32)
        ip_address: string(50)
      relations:
        User:
          class: sfGuardUser
          local: user_id
          foreignAlias: RememberKeys
          foreignType: one
          onDelete: CASCADE
     
    sfGuardForgotPassword:
      options:
        symfony:
          form:   false
          filter: false
      actAs: [Timestampable]
      columns:
        user_id:
          type: integer
          notnull: true
        unique_key: string(255)
        expires_at:
          type: timestamp
          notnull: true
      relations:
        User:
          class: sfGuardUser
          local: user_id
          type: one
          foreignType: one
          foreignAlias: ForgotPassword
          onDelete: CASCADE
    :
    le schéma de mon appli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    article:
      columns:
        name: string(50)
     
    Site:
      connection: doctrine
      tableName: site
      columns:
        name:
          type: string(50)
          unique: true
        description:
          type: string(255)
    mes fixtures:
    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
     
    sfGuardUser:
      User_admin:
        first_name:     John
        last_name:      Doe
        email_address:  john.doe@gmail.com
        username:       admin
        password:       admin
        is_super_admin: true
        Site: S01
        Groups:         [Group_admin]
      User_test:
        first_name:     test
        last_name:      test
        email_address:  test@gmail.com
        username:       test
        password:       test
        is_active:      true
        Site:           S01
        Groups:         [Group_Correspondant]
        Permissions:    [Permission_Correspondant]
      User_test1:
        first_name:     test1
        last_name:      test1
        email_address:  test1@gmail.com
        username:       test1
        password:       test
        is_active:      true
        Site:           S01
        Groups:         [Group_Correspondant]
        Permissions:    [Permission_Correspondant1]
     
    sfGuardGroup:
      Group_admin:
        name:           admin
        description:    Administrator group
        Permissions:    [Permission_admin]
      Group_Correspondant:
        name:           Correspondant
        description:    Correspondant group
        Permissions:    [Permission_admin]
     
    sfGuardPermission:
      Permission_admin:
        name:           admin
        description:    Administrator permission
      Permission_Correspondant:
        name:           Perm_Correspondant
        description:    Correspondant permission
      Permission_Correspondant1:
        name:           Perm_Correspondant1
        description:    Correspondant permission
    j'ai juste créer un module frontend/article dans lequel j'ai mis un fichier config/security.yml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    default:
      is_secure: false
      credentials: [Perm_Correspondant]
    => me demande aucune identification et m'affiche la page index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    default:
      is_secure: true
      credentials: [Correspondant]   # qui est le nom du group
    => me demande une autorisation mais bloque car je n'ai pas les bons acces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    default:
      is_secure: true
      credentials: [Perm_Correspondant]  # qui est le nom de la permission
    me demande une autorisation et valide l'accés si le user a cette permission.

    Ma (mes questions) est:
    - est ce qu'il existe un tuto sur ce sujet un peu plus fouillé que la doc symfony.
    - a quoi serve les groups puisqu'il semblerait que seul les permissions soit utiles ?

    ou bien le principe est d'affecter dans les fichiers security les permissions et de gerer les user par group, group qui cumule des permissions ?

    j'ai l'impression d'avoir répondu a mon probléme la :/

  2. #2
    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
    J'ai déjà expliqué à de nombreuses reprise la gestion des droits, il y a un article "gestion des droits sur sfGuard" ici.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    comment j'ai fait pour rater cette page !!!!
    merci michel.

  4. #4
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 7
    Par défaut
    Disons qu'avec google on ne trouve pas si facilement cette page!

    Quoi qu'il en soit merci j'avais plus ou moins le même problème et votre réponse est parfaite ^^

  5. #5
    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
    Google ne m'aime pas...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Requête SQL pas si simple (enfin pour moi)
    Par danielpyrenees dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/09/2014, 00h14
  2. Utiliser ou pas auto_ptr pour les cas simples?
    Par hibou107 dans le forum Débuter
    Réponses: 21
    Dernier message: 10/06/2011, 17h20
  3. Un batch simple enfin pas pour moi
    Par Louis Griffont dans le forum Linux
    Réponses: 9
    Dernier message: 14/10/2009, 11h49
  4. [CR] Les diagrammes n'apparaissent pas !
    Par pvil dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/08/2002, 07h53
  5. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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