j'ai besoin pour mon prog de gérer une liste d'utilisateurs avec pour chacun d'entre d'eux un mot de passe et des droits différents.
pour çà je créé un fichier .ini dans ce genre :
[USER]
user1;pass1;admin
user2;pass2;user
etc...
Mais le contenu de ce fichier étant sensible, le mieux est de le CRYPTER.
Ben justement. Comment ?
Il y a bien la commande Base64encoder().
Très bien mais comment je le décode car ya pas de Base64decoder()
On peut aussi pourquoi pas utiliser les commandes Packer() mais bon
compresser n'égal pas crypter.
bref probablement j'ai pas tout compris à la cipher lib, si quelqu'un aurait une idée à ce sujet ?
Gestion utilisateur et sécurité
ben ça depend, si l'utilisateur DOIT rentrer le mot de passe (enfin l'utilisateur... j'en sais rien lol) mais si c'est seulement pour une verification de mot de passe, tu rentre le mot de passe crypter en md5 par exemple et il te suffit juste de faire un test if else endif entre le mot de passe du fichier et celui que "l'utiliateur" rentrer (biensur il faut le crypter pour faire le test)
puisque j'ai tout compris peut etre je peux vous faire partager mon fichier include que je viens d'écrire. il permet de gérer une liste d'utilisateurs et de proposer une requête de Login. A savoir que le fichier utilisateur généré est crypté sur le disque dur ('users').
si vous voulez tester :
sauvegarder ses 3 sources dans un meme dossier,
puis lancer le 2/ puis le 3/
Il y a 3 sources:
1/ fichier include
2/ generation d'un fichier utilisateur
3/ requete de Login
si vous voulez tester :
sauvegarder ses 3 sources dans un meme dossier,
puis lancer le 2/ puis le 3/
Il y a 3 sources:
1/ fichier include
2/ generation d'un fichier utilisateur
3/ requete de Login
Code : Tout sélectionner
;---------------------------------------------
;- FICHIER INCLUDE - GESTION DES UTILISATEURS
;---------------------------------------------
#USER_KEY = "kg"
#USER_SEP = ","
#USER_CSV = ";"
Enumeration ; Type d'utilisateur
#USER_TYPE_GUEST
#USER_TYPE_ADMIN
#USER_TYPE_USER
EndEnumeration
Enumeration ; Gadgets pour la requête
#USER_GAD_INFO
#USER_GAD_NOM
#USER_GAD_MDP
#USER_GAD_OK
EndEnumeration
Structure USER
type.b ; Invité, Utilisateur, Administrateur
nom.s ; Nom de l'utilisateur
mdp.s ; Mot de passe
EndStructure
NewList UserList.USER()
Procedure USER_ExisteDeja(nom.s)
ForEach UserList()
If UserList()\nom=nom
ProcedureReturn #True
EndIf
Next
ProcedureReturn #False
EndProcedure
Procedure USER_Ajouter(type.b,nom.s,mdp.s)
If nom<>"" And mdp<>""
If type>#USER_TYPE_GUEST
If USER_ExisteDeja(nom)=#False
AddElement(UserList())
UserList()\type=type
UserList()\nom=nom
UserList()\mdp=DESFingerprint(mdp,#USER_KEY)
ProcedureReturn #True
EndIf
EndIf
EndIf
ProcedureReturn #False
EndProcedure
Procedure USER_Identifier(nom.s,mdp.s)
ForEach UserList()
If UserList()\nom=nom
If UserList()\mdp=DESFingerprint(mdp,#USER_KEY)
ProcedureReturn UserList()\type
EndIf
EndIf
Next
ProcedureReturn #USER_TYPE_GUEST
EndProcedure
Procedure USER_Enregistrer(fichier.s)
If CreatePack(fichier)
ligne.s=""
ForEach UserList()
ligne+Str(UserList()\type)+#USER_SEP
ligne+UserList()\nom+#USER_SEP
ligne+UserList()\mdp+#USER_CSV
Next
AddPackMemory(@ligne,Len(ligne),9)
ClosePack()
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure USER_Charger(fichier.s)
hFichier.l=OpenPack(fichier)
If hFichier=#Null
ProcedureReturn #False
EndIf
UserData$=PeekS(NextPackFile())
ClearList(UserList())
i=1
Repeat
ligne$=StringField(UserData$,i,#USER_CSV)
If ligne$="" : Break : EndIf
If AddElement(UserList())
UserList()\type=Val(StringField(ligne$,1,#USER_SEP))
UserList()\nom=StringField(ligne$,2,#USER_SEP)
UserList()\mdp=StringField(ligne$,3,#USER_SEP)
EndIf
i+1
ForEver
ClosePack()
ProcedureReturn #True
EndProcedure
Procedure USER_RemplirGadget(Gadget.l)
ForEach UserList()
AddGadgetItem(Gadget,-1,UserList()\nom)
Next
EndProcedure
Procedure USER_Login(Titre.s)
fenetre=OpenWindow(#PB_Any,0,0,255,75,#PB_Window_ScreenCentered,Titre)
If fenetre=#Null
ProcedureReturn #False
EndIf
ShowCloseButton(WindowID(),#True)
MakeToolWindow(WindowID(),#True)
MakeStayOnTop(WindowID(),#True)
CreateGadgetList(WindowID())
TextGadget(#USER_GAD_INFO,5,5,245,18,"Veuillez choisir votre nom dans la liste",#PB_Text_Center)
ComboBoxGadget(#USER_GAD_NOM,5,25,120,100)
StringGadget(#USER_GAD_MDP,130,25,120,21,"",#PB_String_Password)
ButtonGadget(#USER_GAD_OK,98,52,60,21,"OK")
police=LoadFont(#PB_Any,"Arial",8,#PB_Font_Bold)
If police<>#Null
SetGadgetFont(#USER_GAD_INFO,FontID())
SetGadgetFont(#USER_GAD_OK,FontID())
EndIf
DisableGadget(#USER_GAD_OK,#True)
USER_RemplirGadget(#USER_GAD_NOM)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow : Break
Case #PB_Event_Gadget
Select EventGadgetID()
Case #USER_GAD_OK : Break
Case #USER_GAD_NOM
If EventType()=1
DisableGadget(#USER_GAD_OK,#True)
SetGadgetText(#USER_GAD_MDP,"")
SetGadgetText(#USER_GAD_INFO,"Veuillez saisir votre mot de passe")
EndIf
EndSelect
Case 258
Select USER_Identifier(GetGadgetText(#USER_GAD_NOM),GetGadgetText(#USER_GAD_MDP))
Case #USER_TYPE_GUEST : SetGadgetText(#USER_GAD_INFO,"Utilisateur non identifié") : DisableGadget(#USER_GAD_OK,#True)
Case #USER_TYPE_USER : SetGadgetText(#USER_GAD_INFO,"Utilisateur identifié") : DisableGadget(#USER_GAD_OK,#False)
Case #USER_TYPE_ADMIN : SetGadgetText(#USER_GAD_INFO,"Administrateur identifié") : DisableGadget(#USER_GAD_OK,#False)
EndSelect
EndSelect
ForEver
CloseFont(police)
CloseWindow(fenetre)
EndProcedure
Code : Tout sélectionner
;---------------------------------------
; GENERE LE FICHIER UTILISATEUR
;---------------------------------------
IncludeFile "UserLib.pb"
USER_Ajouter(#USER_TYPE_ADMIN,"Flype","toto")
USER_Ajouter(#USER_TYPE_ADMIN,"Fred","pb")
USER_Ajouter(#USER_TYPE_USER,"Denis","riri")
USER_Ajouter(#USER_TYPE_USER,"Regis","fifi")
USER_Ajouter(#USER_TYPE_USER,"Cederavic","loulou")
USER_Enregistrer("users")
Code : Tout sélectionner
;--------------------------------
; LOGIN
;--------------------------------
IncludeFile "UserLib.pb"
USER_Charger("users")
USER_Login("Login")