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

Contribuez Discussion :

gestion des droits d'accès aux formulaires


Sujet :

Contribuez

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 53
    Points : 70
    Points
    70
    Par défaut gestion des droits d'accès aux formulaires
    *Bonjour*

    Dans un souci de simplicité et afin de bien verrouiller mon application, je me suis penché sur la manière de pouvoir limiter les accès (et différents droits) aux formulaires et ce par utilisateur (en fait je n'ai rien trouvé au niveau d'Access qui me convienne).
    Pour cela, je dispose d'un formulaire d'authentification à l'entrée du programme, d'où la variable "numero_user" et d'une table d'enregistrement des droits qui ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [ID_FORM] [int] NOT NULL,
    [ID_USER] [int] NOT NULL,
    [ACCES] [bit] NOT NULL CONSTRAINT [DF_AUTORISATION_FORMULAIRE_ACCES]  DEFAULT ('false'),
    [LECTURE] [bit] NOT NULL CONSTRAINT [DF_AUTORISATION_FORMULAIRE_LECTURE]  DEFAULT ('false'),
    [ECRITURE] [bit] NOT NULL CONSTRAINT [DF_AUTORISATION_FORMULAIRE_ECRITURE]  DEFAULT ('false'),
    avec un index unique sur les champs ID_FORM et ID_USER

    Le but était d'identifier de manière certaine et sans se casser la tête le formulaire, je suis donc passé par les tables système d'Access.

    Ce qui suit est à mettre dans un module
    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
    Option Compare Database
    Option Explicit
    Public nom_formulaire As String, id_formulaire As Long, acces, lecture, ecriture As Boolean
     
    Public Function autorisation_form()
    '********************************************************************************************
    'lecture dans la table système
    Dim identification_id_formulaire As DAO.Recordset
    Dim table_systeme As DAO.Database
    Set table_systeme = CurrentDb()
    Set identification_id_formulaire = table_systeme.OpenRecordset("SELECT MSysObjects.Id FROM MSysObjects WHERE (((MSysObjects.Name)='" & nom_formulaire & "'));", dbOpenDynaset, [dbSeeChanges])
    id_formulaire = identification_id_formulaire.Fields("Id").Value
    identification_id_formulaire.Close
    table_systeme.Close
    Set identification_id_formulaire = Nothing
    Set table_systeme = Nothing
    '********************************************************************************************
    'lecture dans la table SQL Server
    Dim interrogation_droit As ADODB.Recordset
    Set interrogation_droit = New ADODB.Recordset
    interrogation_droit.CursorLocation = adUseServer
    interrogation_droit.Open "SELECT FORMULAIRE_AUTORISATION.* FROM FORMULAIRE_AUTORISATION WHERE (ID_USER = " & numero_user & ") AND (ID_FORM = " & id_formulaire & ")", connexion_database, adLockReadOnly
    acces = interrogation_droit.Fields("ACCES").Value
    lecture = interrogation_droit.Fields("LECTURE").Value
    ecriture = interrogation_droit.Fields("ECRITURE").Value
    End Function
    Et le reste à l'ouverture du formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Open(Cancel As Integer)
    nom_formulaire = Me.Name
    Call autorisation_form
    If acces = False Then
    MsgBox "Vous n'avez pas l'autorisation d'accéder à ce formulaire." & vbCrLf & "Veuillez contacter l'administrateur de base de données pour établir les droits d'accès.", vbOKOnly + vbDefaultButton1 + vbCritical, "Accès refusé"
    DoCmd.Close
    GoTo sortie_procedure
    End If
     
    sortie_procedure:
    End Sub
    Je ne dis pas que c'est ce qu'il y a de meilleur, mais ça a le mérite de fonctionner. D'ailleurs, si quelqu'un avait une autre solution je reste preneur.
    *merci d'avance*

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Bonjour

    C'est un bon début mais incomplet quand même. Après l'ouverture de ton formulaire pour ceux qui ont le droit, ya t-il d'autres contrôle pour la lecture et/ou l'écriture?

    Autre chose
    Apparemment tous les utilisateurs verront tous les formulaires mais ne sauront s'ils ont l'autorisation d'y accéder quand essayant de les ouvrir. Tu pouvez faire de sorte que chaque utilisateurs ne voit que les formulaires dont il a droit d'accès.

    Bon courage.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2010
    Messages : 53
    Points : 70
    Points
    70
    Par défaut
    Citation Envoyé par DMboup Voir le message
    Bonjour

    C'est un bon début mais incomplet quand même. Après l'ouverture de ton formulaire pour ceux qui ont le droit, ya t-il d'autres contrôle pour la lecture et/ou l'écriture?

    Autre chose
    Apparemment tous les utilisateurs verront tous les formulaires mais ne sauront s'ils ont l'autorisation d'y accéder quand essayant de les ouvrir. Tu pouvez faire de sorte que chaque utilisateurs ne voit que les formulaires dont il a droit d'accès.

    Bon courage.
    Bonjour,
    Oui bien sûr, il y a d'autres contrôles après. Tu as du remarquer les variables acces lecture ecriture (boolean). Elles servent à récupérer les divers droits sur les formulaires et à les gérer. D'ailleurs, chaque formulaire indique selon l'utilisateur ses droits en lecture et écriture.
    Concernant ta remarque quant à faire un formulaire de menu avec masquage ou non des formulaires permis, j'y avais pensé, mais ça risque de prendre tellement de temps à développer et être d'une telle complexité que j'ai opté pour cette solution.
    Mais peut être devrais-je creuser à nouveau cette idée ?

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par Rémi GAUDINAT Voir le message
    ...
    Concernant ta remarque quant à faire un formulaire de menu avec masquage ou non des formulaires permis, j'y avais pensé, mais ça risque de prendre tellement de temps à développer et être d'une telle complexité que j'ai opté pour cette solution...
    Tout dépend de comment tu t'y prend, mais je ne vois pas de difficulté.

    Une requête du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT FORMULAIRE_AUTORISATION.* FROM FORMULAIRE_AUTORISATION WHERE ((ID_USER = " & numero_user & ") AND (ACCES=false))
    te permet d'avoir les formulaires que l'utilisateur connecté est autorisé à voir.

    Il suffit juste d'afficher des liens avec des actions pour l'ouverture des formulaires.

    ça ne prend pas de temps et c'est pas complexe aussi.

Discussions similaires

  1. [2008R2] reporting service : gestion des droits d'accès aux rapports
    Par Kropernic dans le forum Administration
    Réponses: 0
    Dernier message: 08/09/2014, 14h05
  2. [MediaWiki] Gestion des droits d'accès aux pages
    Par neimad31 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 22/02/2008, 22h53
  3. Gestion des droit d'accès aux document
    Par flyers31 dans le forum SpagoBI
    Réponses: 1
    Dernier message: 18/02/2008, 09h43
  4. gestion des droits d'accès : pg_hda.conf et autres
    Par Pigoulou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 12/02/2005, 07h57
  5. Gestion des droits d'accès
    Par soulryo dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 12/01/2005, 10h50

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