Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sécurité
Sécurité Le forum qui s'occupe de votre préoccupation de sécuriser l'accès à votre application Access, ainsi qu'à la sécurité des données.
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/01/2011, 17h00   #1
Invité régulier
 
Inscription : décembre 2007
Messages : 34
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : décembre 2007
Messages : 34
Points : 6
Points : 6
Par défaut désactiver le menu de navigation des différents objets (à gauche nommé "All Access Objects")

Bonjour à tous et BONNE ANNEE !!
j'ai besoin d'aide pour finir la sécurisation de ma base de donnée.
J'ai créé un formulaire pour que les utilisateurs puisse se logger et je leur ai attribué un niveau d'accès aux différentes fonctionalités de la base. j'ai aussi désactiver le ruban d'access si l'utilisateur n'est pas l'administrateur. Il ne me reste qu'une seule chose à faire : bloquer l'accès au menu de gauche, qui permet l'accès aux tables, aux requètes ... et malheureusement, je n'arrive pas à trouver comment il s'appelle pour le désactiver si ce n'est pas l'administrateur qui se logue.
Je voudrais ajouter une ligne de code "on load" du formulaire que me sert de menu pour les différentes fonctions mais comme je n'arrive pas à trouver son nom je ne sais pas comment le faire.
Voici le code que j'ai utilisé pour bloquer le ruban access si ce n'est pas l'utilisateur qui se connecte:

Code :
1
2
3
4
5
6
If Forms![F_User_Login]![Text_user_right] = "Admin" Then
 
    'on active le ruban access :
    DoCmd.ShowToolbar "ribbon", acToolbarYes
  Else
         DoCmd.ShowToolbar "Ribbon", acToolbarNo
Merci pour votre aide.

Séverine
SG2607 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 19h57   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Il n'y a pas de commande spécifique.

On fait comme pour la fenêtre de base de données des version antérieures.
Comment afficher ou masquer la fenêtre de base de données ?

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 11h40   #3
Invité régulier
 
Inscription : décembre 2007
Messages : 34
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : décembre 2007
Messages : 34
Points : 6
Points : 6
Par défaut merci

Merci LedZeppII ! ça marche très bien comme ça.
Il faut que je regarde encore parce que j'ai mis cette fonction sur le "on load" du formulaire qui sert de menu, donc quand on ouvre la table pour arriver sur le formulaire qui sert à se logger, les tables sont encore visibles, je vais donc l'ajouter sur le "on load" de mon formulaire d'identification pour que ça les cache dès le départ !
Bonne journée
SG2607 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 16h11   #4
Invité régulier
 
Inscription : décembre 2007
Messages : 34
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : décembre 2007
Messages : 34
Points : 6
Points : 6
Par défaut Run time error '2450':

j'ai un nouveau problème qui s'est ajouté à celui là ! ton code marche très bien, je l'ai ajouté sur le "on load" du formulaire d'identification ('F_User_Login' ) qui se lance à l'ouverture de la base.
Les tables restent donc visibles si je me connecte comme administrateur, et elles sont cachées dès l'ouverture si c'est un autre utilisateur (User). Tout marche bien jusque là.
Une fois que l'identification est faite, un formulaire qui sert de menu s'ouvre avec plusieurs boutons qui sont disponibles ou non en fonction du niveau d'identification.
Le formulaire d'identification reste ouvert derrière mon formulaire menu.
Pour sortir de la base de donnée, j'ai mis un bouton sur le formulaire d'identification (avec un code qui permet de remettre le compteur d'erreur de mot de passe à zéro). J'ai aussi mis un bouton sur mon formulaire MENU, mais celui-ci, je l'ai fait avec une simple macro pour quitter la base de données.
Mon problème est sur ce bouton là. Si je suis connectée en tant qu'administrateur, pas de souci, je peux sortir de la base sans problème. Par contre, si je me connecte en tant que User, quand je souhaite quitter la base, j'obtiens le message d'erreur suivant :

Run time error '2450':
Microsoft Office Access can't find the form 'F_User_Login' refferred to in a macro expression or Visual Basic Code.

Je ne comprends pas pourquoi il cherche ce formulaire d'identification juste au moment de sortir de la base de données. Je vois l'onglet de ce formulaire disparaître (donc se fermer) juste avant de quitter l'appli et tout de suite, j'obtiens ce message d'erreur.
L'erreur vient du code qui est sur le "on load" de mon formulaire MENU (celui à partir duquel je tente de fermer la base):

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_Load()
 
 
    If Forms![F_User_Login]![Text_user_right] = "Admin" Then
 
      DoCmd.ShowToolbar "ribbon", acToolbarYes
 
      Else
 
      DoCmd.ShowToolbar "Ribbon", acToolbarNo
 
    End If
 
 
End Sub
ça bloque sur If Forms![F_User_Login]![Text_user_right] = "Admin" Then.
Je ne comprends pas pourquoi il repart sur le "on load" du formulaire alors que je lui demande de quitter la base. Et pourquoi ça ne me le fait pas quand je suis Administrateur. J'ai essayé de remplace la macro du bouton par la ligne de code correspondante mais évidement ça ne change rien.

Voici le code que j'ai entré selon ton exemple sur le "on load" de mon formulaire 'F_User_Login'

Code :
1
2
3
4
5
Private Sub Form_Load()
 
    DoCmd.SelectObject acTable, , True
    DoCmd.RunCommand acCmdWindowHide
End Sub
Je ne comprends pas pourquoi le fait de cacher les tables peut me bloquer ailleurs.

Mon message est un peu long, j'espère qu'il est à peu prêt clair quand même.

Merci pour votre aide.

Séverine
SG2607 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2011, 19h41   #5
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Je n'ai aucune idée de pourquoi l'événement OnLoad se déclenche à nouveau.
Et effectivement il se déclenche à nouveau que si fenêtre de base de données est masquée ou si le volet de navigation est masqué

Solution de contournement :
Code :
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Load()
Const C_FM_LOGIN = "F_User_Login"
 
If CurrentProject.AllForms(C_FM_LOGIN).IsLoaded = True Then
    If Forms(C_FM_LOGIN)![Text_user_right] = "Admin" Then
       DoCmd.ShowToolbar "ribbon", acToolbarYes
    Else
       DoCmd.ShowToolbar "Ribbon", acToolbarNo
    End If
End If
End Sub
Ou bien déconnecter l'événement OnLoad avant de quitter :
Code :
1
2
3
4
' Déconnecter événement OnLoad
Me.OnLoad = ""
' Quitter
DoCmd.Quit acQuitPrompt
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 11h16   #6
Invité régulier
 
Inscription : décembre 2007
Messages : 34
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : décembre 2007
Messages : 34
Points : 6
Points : 6
Par défaut merci!

Merci LedZeppII,
ta première solution marche très bien, je n'ai pas eu besoin de tester la deuxième !! mais je me trouve avec un nouveau problème quand je me logge comme "admin": une fenêtre s'ouvre pour me demander de "décacher" le formulaire MENU GENERAL alors que ça ne le fait pas si je me logge comme "user".

voici le code que j'ai mis grâce à tes conseils :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Form_Load()
 
Const C_FM_LOGIN = "F_User_Login"
 
If CurrentProject.AllForms(C_FM_LOGIN).IsLoaded = True Then
 
       If Forms(C_FM_LOGIN)![Text_user_right] = "Admin" Then
 
      DoCmd.ShowToolbar "ribbon", acToolbarYes
      DoCmd.SelectObject acTable, , True
      DoCmd.RunCommand acCmdWindowUnhide
 
          Else
 
        DoCmd.ShowToolbar "Ribbon", acToolbarNo
        DoCmd.SelectObject acTable, , True
        DoCmd.RunCommand acCmdWindowHide
 
 
    End If
End If
 
End Sub
je t'ai mis en fichier attaché l'image de la fenêtre qui s'ouvre. une fois que j'ai cliqué sur OK pour 'décacher' mon formulaire, tout marche bien mais ça n'est pas très clean. Il doit y avoir un problème que je ne sais pas identifier. Je ne sais pas comment résoudre ça et je ne comprends pas pourquoi ça ne me le fait pas quand je me logge comme user.
je n'ai pas de formation pour le code donc j'essaie d'apprendre grâce à votre site. Je suis désolée ... peut être que la solution est toute simple mais je ne la connaîs pas. J'ai essayé d'utiliser le même type de syntaxe que tu m'avais conseillé pour cacher les tables, en faisant un 'unhide' sur mon formulaire mais ça ne marche pas.

Du coup, je vais tester en même temps la deuxième solution que tu m'avais proposé en attendant de voir si l'un de vous peut m'aider.

Merci encore et bonne journée


Séverine
Images attachées
Type de fichier : gif message d'erreur pour ouvrir le menu général.gif (6,9 Ko, 10 affichages)
SG2607 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 18h55   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,

Dans la FAQ, le code pour rendre la fenêtre de base de données (applicable au volet de navigation) est
Code :
      DoCmd.SelectObject acTable, , True
Toi, tu as
Code :
1
2
      DoCmd.SelectObject acTable, , True
      DoCmd.RunCommand acCmdWindowUnhide

Ce que tu peux faire, pour simplifier ...
A l'ouverture du formulaire F_User_Login, tu masques le volet de navigation et le ruban.
Code :
1
2
3
4
5
6
7
8
Private Sub Form_Load()
    ' On masque le volet de navigation en sélectionnant une table ...
    DoCmd.SelectObject acTable, , True
    ' ... puis en exécutant la commande WindowHide
    DoCmd.RunCommand acCmdWindowHide
    ' On masque le ruban
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
End Sub
L'utilisateur s'identifie et cela ouvre le formulaire F_MENU.
Si ce n'est pas "Admin", il n'y a rien à faire. Le volet de navigation et le ruban sont déjà masqués.
Si c'est "Admin" on rend le volet de navigation et le ruban visibles
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Form_Load()
Const C_FM_LOGIN = "F_User_Login"
 
If CurrentProject.AllForms(C_FM_LOGIN).IsLoaded = True Then
    If Forms(C_FM_LOGIN)![Text_user_right] = "Admin" Then
       ' Afficher le volet de navigation en sélection une table
       DoCmd.SelectObject acTable, , True
       ' Afficher le ruban
       DoCmd.ShowToolbar "ribbon", acToolbarYes
    End If
End If
 
End Sub
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 15h52   #8
Invité régulier
 
Inscription : décembre 2007
Messages : 34
Détails du profil
Informations personnelles :
Âge : 38

Informations forums :
Inscription : décembre 2007
Messages : 34
Points : 6
Points : 6
Par défaut ça marche !

Merci encore une fois LedZeppII !!
ça y est tout marche bien !!
Comme je travaille toujours en mode parano, j'ai toujours une sauvegrade des versions antérieures de mon appli, donc je suis repartie sur une toute propre (à force de faire des modifs de code, je ne savais plus où j'en étais) et j'ai appliqué ce que tu m'as conseillé à la lettre et tout marche super bien !! plus aucun message d'erreur, les fenêtres et le ruban sont cachés quand il faut et visibles si je suis identifiée comme admin !
C'est parfait !!
Plus que quelques petits détails à régler, l'empaquetage à préparer grâce au super tuto que j'ai trouvé sur le site et d'ici quelques jours je pourrais distribuer mon appli grâce à tes conseils !!

Merci vraiment pour ton aide !!


Bonne fin de journée

Séverine
SG2607 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h17.


 
 
 
 
Partenaires

Hébergement Web