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

Langage Delphi Discussion :

Comment définir les droits d'accès d'un utilisateur ?


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut Comment définir les droits d'accès d'un utilisateur ?
    Salut,

    j'ai developpé une application client/serveur en Delphi 7.
    Il s'agit d'une application de gestion de projet. Il consiste à enrégistrer des projets puis de les attribuer à des conseillers projets pour étude de faisabilité.

    Pour mon application j'ai pluisieurs groupes d'utilisateurs à savoir
    "les Receptionnistes" chargés d'enrégitrer les visiteurs et leur projet, "le responsable des conseillers" projet chargé d'attribuer les projets "aux conseillers projet",ces derniers à leur tour verront dans leur portefeuille les projets qui leurs sont attribués et enfin "un administrateur" du système qui lui est chargé de créér les groupes d'utilisateur, les utilisateurs et de définir leurs droits d'utilisation du système( Par exemple un receptionniste ne doit accéder qu'aux formulaires d'enrégistrement de projet...).

    Je voudrais savoir comment gérer les droits d'accès? J'ai besoin qu'on me donne des idées ...

    Merci pour votre compréhension.....

  2. #2
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut
    Dans mon cas il ne s'agit pas de droit d'accès à un repertoire ou fichier.
    Il s'agit de fenêtre(formulaire) pour effectuer certaines opérations .
    Ce que je veux c'est que quand un utilisateur de mon logiciel se connecte qu'il est son propre menu qui sera different du menu d'un autre type d'utilisateur.

    Merci.....

  4. #4
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 967
    Points
    6 967
    Par défaut
    Gère les droits dans une base de données, alors ...
    J'ai déjà fait çà de nombreuses fois, pour donner l'accès à différents modules d'une application, et générer des menus dynamiquement.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 730
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 730
    Points : 15 132
    Points
    15 132
    Par défaut
    Salut !
    Citation Envoyé par Klemsy78 Voir le message
    Dans mon cas il ne s'agit pas de droit d'accès à un repertoire ou fichier.
    Le titre du topic est trompeur... (tu peux le modifier en éditant ton premier message).

    (...) quand un utilisateur de mon logiciel se connecte, qu'il ait son propre menu qui sera différent du menu d'un autre type d'utilisateur.
    HKCU\Software\TonAppli\Params\, c'est pas fait pour ça ?

    Encore que, en relisant, il y a un truc ambigu :
    d'un autre type d'utilisateur
    ou
    d'un autre utilisateur
    ?, puisque
    quand un utilisateur
    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    salut ,

    une des solution consiste a creer 4 tables:

    t_user(idu,nom,prenom,login,password,groupe,suspend)
    t_groupe(idG,group_name)
    t_module(idM,iINTITULE)
    t_Autorisation(IdG,IdM,add,edit,del)

    il faut creer des groupes (t_groupe) et definir leurs droits(t_Autorisation) sur les modules(t_module) puis l'attribuer des utilisateurs(t_user.groupe)

    dans le chargement de l'application selon le login et le mot de passe le groupe sera determiné et les autorisation seront charger de la table t_Autorisation ainsi le tmainmenu sera creer dynamiquement selon les droits.

    bonne chance!!

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut
    D'abord je tiens à vous remercier pour votre réponse car elle est assez clair pour moi. Mais je veux savoir en fait que contient la table Module.
    Et quel est le type du champ suspend de la table User et à quoi cela sert.
    Merci........

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    rebonjour,

    Pour la table MODULE ,il contient les modules de votre projet par exemple: gestion des visiteurs, gestion des projets,gestion des utilisateurs...etc selon votre conception, puis tu doit definir les droits pour chaque module(dans la table t_Autorisation) par exemple :attribuer,editer,supprimer ..etc qui sont de type boolean T ou 1 : a le droit
    F OU 0: n'a pas le droit

    donc vous aurez une matrice : module groupe attribuer editer delete
    modul_1 group_1 1 1 1
    modul_2 group_1 0 0 1
    modul_3 group_1 0 1 0

    pour le champ SUSPEND est un champ de type boolean T: User est active
    F: User suspendu

    c'est pour permettre a l'administrateur de suspendre un utilisateur par exemple pour une periode determinée.bien sur selon votre conception tu peut ajouter d'autre champs comme date_derniere_modif,niveau =1 admin , ..tc
    =2 autres

    n'hesiter pas a poser d'autres questions
    merci

  9. #9
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    Autrement dit, c'est créer une relation N-N entre
    les modules et les groupes.

    Je me demande si le compo UIL security ne ferait pas tout çà

    ??

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    mais le composant UIL security est payant!!

  11. #11
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    Ben oui, je n'ai pas dit qu'il était free..
    mais c'est vrai avec une telle matrice on peut s'en sortir en servant d'une fonction.

    il faut penser aussi à créer une interface afin de pouvoir gérer des modifications de droit.

    la limite est néanmoins atteinte si bien sûr on a besoin de créer un autre groupe avec des nouveaux droits.

    Dans ce cas il faut retoucher le code..

    Ah si un autre truc, je choisirai plutot les datasets(les tables) plutôt que les modules
    car il est tout à fait possible d'avoir plusieurs tables dans une même forme avec des conditions d'accès diffférentes.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 60
    Points : 75
    Points
    75
    Par défaut
    Pourquoi ne pas creer une table utilisateurs en y stockant les droits ?
    C´est simple et efficace. Exemple :

    Utilisateur (varChar) Rubrique1 (boolean) Action1 (boolean) Action2 (boolean)....

    Lors de la connection de l´utilisateur verifier les droits en rendre Visible ou actif les rubriques ou actions ...

  13. #13
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    @swierzbicki :
    C'est quand même mieux de créer des groupes de droit
    et de mettre ensuite les utilisateurs dans ces derniers qui héritent ainsi
    des propriétés du conteneur.

    l'information est de ce fait stockée qu'une seule fois.

    Et de la même manière, si on modifie les droits d'un groupe, ce sont tous les utilisateurs de ce groupe qui héritent de la modification.

    non ?

  14. #14
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 118
    Points : 89
    Points
    89
    Par défaut
    re bonjour,

    En réalité cette solution j utilisé pour le web( en PHP) mais je pense qu'il est valable pour le DELPHI .

    il faut penser aussi à créer une interface afin de pouvoir gérer des modifications de droit.
    bien sure celle ci rentre dans la phase de codage avec l'utilisation par exemple des TCheckBox...

    la limite est néanmoins atteinte si bien sûr on a besoin de créer un autre groupe avec des nouveaux droits.
    J pas compris vraiment votre remarque ,en effet on peut ajouter le maximum de groupe a la table t_group avec differents droits.

    Pour les modules il y a differents facon de le définir ,soit par action soit par rebrique ... ou de creer nouveau table t_action lier au table module qui contient les rebrique ...etc

    merci

  15. #15
    Membre confirmé Avatar de cantador
    Homme Profil pro
    Chef de projet
    Inscrit en
    Mars 2006
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chef de projet
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2006
    Messages : 569
    Points : 484
    Points
    484
    Par défaut
    J pas compris vraiment votre remarque ,en effet on peut ajouter le maximum de groupe a la table t_group avec differents droits.

    Pour les modules il y a differents facon de le définir ,soit par action soit par rebrique ... ou de creer nouveau table t_action lier au table module qui contient les rebrique ...etc
    Oui, bien sûr on peut ajouter des nouveaux groupes avec des nouveaux droits
    MAIS, la suite ne peut pas être automatiser..
    il faudra nécessairement modifier le code..
    c'était le sens de ma remarque..

    Si vous avez dans un module, comme cela m'est arrivé, 5 datasets dedans
    pour gérer les droits sur chaque table ??
    On voit bien ici que les droits d'accès à un module ne sont pas suffisants..

    Pour ma part, je maintiens que le DataSet est beaucoup plus précis et plus efficace que le module.

    En plus, pour l'interface, c'est également plus facile à définir et à traiter.

    cantador

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 32
    Points
    32
    Par défaut Salut J'ai le Même problème mais je ne sais pas comment géré .
    Salut J'ai le Même problème mais je ne sais pas comment géré
    Je doit crée quel combien Table et dit moi les Table qui sont en relation car je n'arrive à savoir s'il y a des relations père fils

  17. #17
    Membre émérite
    Homme Profil pro
    Directeur technique
    Inscrit en
    Mai 2008
    Messages
    2 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 401
    Points : 2 304
    Points
    2 304
    Par défaut
    Salut !

    dans la base de données, on peut très bien songer à créer des roles (groupe), et des utilisateurs puis dans l'application, par simple code sql on peut avoir la liste des utilisateurs avec leur roles. Les roles sont fait pour donner des droits sur les tables donc les modules. Je crois que cette façon de faire permet de ne pas ajouter d'autres tables inutilement.

    dans l'application, tout ce qui reste à faire, c'est de définir au lancement ce qui doit être affiché ou pas, activé ou pas, etc et cela suite à la paire (user, pw) choisis.

    cette ligne de code permet d'afficher ou non un dbnavigateur selon le role (groupe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cxDBNavigator_SR.Visible := (PasswordDlg.PROFIL <> 'CONSULTATION');
    dans le Oncreate de la fenêtre principale on peut aussi choisir ce qui peut être afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Activation du menu Administration selon l'utilisateur connecté
      AdministrationBDD_GEXP.Visible := (DM.IBCConnection1.Username = 'ADMIN');
      Menu_Profil := (DM.IBCConnection1.Username = 'ADMIN')
        or (PasswordDlg.PROFIL = 'MAJ_BD');
      Importer_XLS.Enabled := Menu_Profil;
      Exporter_XLS.Enabled := Menu_Profil;
      Paramtrage.Enabled := Menu_Profil;
      Unite.Enabled := Menu_Profil;
      Centre.Enabled := Menu_Profil;
      commune.Enabled := Menu_Profil;
      Station_epuration.Enabled := Menu_Profil;
      Station_relevage.Enabled := Menu_Profil;
    espérant que cela peut vous servir.
    Bon courage ou Bonne Chance (selon le contexte)
    Mon blog sur WordPress

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2014
    Messages : 30
    Points : 32
    Points
    32
    Par défaut Oui je comprend
    Citation Envoyé par Just-Soft Voir le message
    Salut !

    dans la base de données, on peut très bien songer à créer des roles (groupe), et des utilisateurs puis dans l'application, par simple code sql on peut avoir la liste des utilisateurs avec leur roles. Les roles sont fait pour donner des droits sur les tables donc les modules. Je crois que cette façon de faire permet de ne pas ajouter d'autres tables inutilement.

    dans l'application, tout ce qui reste à faire, c'est de définir au lancement ce qui doit être affiché ou pas, activé ou pas, etc et cela suite à la paire (user, pw) choisis.

    cette ligne de code permet d'afficher ou non un dbnavigateur selon le role (groupe) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cxDBNavigator_SR.Visible := (PasswordDlg.PROFIL <> 'CONSULTATION');
    dans le Oncreate de la fenêtre principale on peut aussi choisir ce qui peut être afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // Activation du menu Administration selon l'utilisateur connecté
      AdministrationBDD_GEXP.Visible := (DM.IBCConnection1.Username = 'ADMIN');
      Menu_Profil := (DM.IBCConnection1.Username = 'ADMIN')
        or (PasswordDlg.PROFIL = 'MAJ_BD');
      Importer_XLS.Enabled := Menu_Profil;
      Exporter_XLS.Enabled := Menu_Profil;
      Paramtrage.Enabled := Menu_Profil;
      Unite.Enabled := Menu_Profil;
      Centre.Enabled := Menu_Profil;
      commune.Enabled := Menu_Profil;
      Station_epuration.Enabled := Menu_Profil;
      Station_relevage.Enabled := Menu_Profil;
    espérant que cela peut vous servir.
    Je suis d'accord avec ta methode mais le problème je ne sais pas comment je vais m y prendre avec FireBird et Delphi

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

Discussions similaires

  1. Récupérer les droits d'accès de chaque utilisateur
    Par fernandao dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 17/01/2013, 19h51
  2. Comment retrouver les droits d'acces d'une BD
    Par puledad1 dans le forum Sécurité
    Réponses: 0
    Dernier message: 26/08/2011, 10h31
  3. Réponses: 6
    Dernier message: 01/11/2010, 12h38
  4. Réponses: 6
    Dernier message: 10/05/2007, 16h24
  5. Réponses: 6
    Dernier message: 18/05/2006, 14h11

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