Gestion utilisateurs [RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Gestion utilisateurs [RESOLU]

Message par MetalOS »

Salut les amis,

Pour une application de main courante que je programme pour mon travail j’aurais besoin d'un système de login et mot de passe pour que les utilisateurs ai leurs propre session. Je pensais utiliser une base sqlite qui me permet d'ajouter ou enlever des utilisateurs. Seulement je ne sais pas du tout comment gérer ça.

Voici la procédure que j'utilise pour créer ma base.

Code : Tout sélectionner

;Création de la base de données
Procedure DatabaseCreate()
	Protected File.s, Database.i, ReqSQL.s

	UseSQLiteDatabase()

	File="Utilisateurs.db3"
	Database=CreateFile(#Pb_Any, File)
	If database
		CloseFile(Database)
		Database=OpenDatabase(#PB_Any, File,"","",#PB_Database_SQLite)
		ReqSQL="BEGIN TRANSACTION;"
		ReqSQL+"CREATE TABLE 'Login' (IDLogin INTEGER PRIMARY KEY, Nom TEXT, Password TEXT);"
		ReqSQL+"COMMIT;"
		If DatabaseUpdate(Database, ReqSQL)
			CloseDatabase(Database)
		Else
			MessageRequester("Erreur","Erreur durant la création de la base de données")
		EndIf
	EndIf
EndProcedure

Voici un code d'exemple de se que je veut faire en gros...

Code : Tout sélectionner

;/ by MetalOS

;- Global Variables and Constants
Global BubbleTipStyle.l:BubbleTipStyle=0

;- Window Constants
Enumeration 1
  #Window_Form1
  #Window_Form2
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue


;- Gadget Constants
Enumeration 1
  ;Window_Form1
  #Gadget_Form1_Text1
  #Gadget_Form1_StringNom
  #Gadget_Form1_Text2
  #Gadget_Form1_StringPassword
  #Gadget_Form1_ButtonAnnuler
  #Gadget_Form1_ButtonValider


  ;Window_Form2
EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue


Procedure.l Window_Form1()
  If OpenWindow(#Window_Form1,283,145,170,128,"Login",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
      TextGadget(#Gadget_Form1_Text1,10,10,60,15,"Nom")
      StringGadget(#Gadget_Form1_StringNom,10,25,145,20,"")
      TextGadget(#Gadget_Form1_Text2,10,50,120,15,"Mot de passe")
      StringGadget(#Gadget_Form1_StringPassword,10,65,145,20,"")
      ButtonGadget(#Gadget_Form1_ButtonAnnuler,95,100,60,20,"Annuler")
      ButtonGadget(#Gadget_Form1_ButtonValider,30,100,60,20,"Valider")
      HideWindow(#Window_Form1,0)
      ProcedureReturn WindowID(#Window_Form1)
  EndIf
EndProcedure


Procedure.l Window_Form2()
  If OpenWindow(#Window_Form2,324,183,400,300,"Logiciel",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
      HideWindow(#Window_Form2,0)
      ProcedureReturn WindowID(#Window_Form2)
  EndIf
EndProcedure

;Création de la base de données
Procedure DatabaseCreate()
	Protected File.s, Database.i, ReqSQL.s

	UseSQLiteDatabase()

	File="Utilisateurs.db3"
	Database=CreateFile(#PB_Any, File)
	If database
		CloseFile(Database)
		Database=OpenDatabase(#PB_Any, File,"","",#PB_Database_SQLite)
		ReqSQL="BEGIN TRANSACTION;"
		ReqSQL+"CREATE TABLE 'Login' (IDLogin INTEGER PRIMARY KEY, Nom TEXT, Password TEXT);"
		ReqSQL+"COMMIT;"
		If DatabaseUpdate(Database, ReqSQL)
			CloseDatabase(Database)
		Else
			MessageRequester("Erreur","Erreur durant la création de la base de données")
		EndIf
	EndIf
EndProcedure

;- Main Loop
If Window_Form1()

  quitForm1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()

    Select EventID
      Case #PB_Event_CloseWindow
        If WindowID=#Window_Form1
          quitForm1=1
        EndIf


      Case #PB_Event_Gadget
        Select GadgetID
          Case #Gadget_Form1_StringNom
            
          Case #Gadget_Form1_StringPassword
            
          Case #Gadget_Form1_ButtonAnnuler
            
          Case #Gadget_Form1_ButtonValider
        EndSelect

    EndSelect
  Until quitForm1
  CloseWindow(#Window_Form1)
EndIf
End


Je débute complet avec sqlite et je ne sais vraiment pas comment le gérer. Merci pour votre aide.
Dernière modification par MetalOS le mar. 11/oct./2011 13:20, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gestion utilisateurs

Message par falsam »

J’espère que je n'ai rien oublié

j'ai ajouté une fenêtre administrateur qui va te permettre de gérer les utilisateurs.
-Visualisation, Ajout, Modification et suppression.

-La base de données est crée si elle est inexistante.
-La création de l'utilisateur admin est automatique.
user : admin
password : admin

-Chaque utilisateur peut modifier son mot de passe.
-Seul l'admin pourra ouvrir la fenêtre de gestion de la base de données.

-Le programme est minimaliste mais te permet d'obtenir un squelette qui j’espère répondra à ta demande. Sauvegarde le code ci-dessous avant de le lancer.

Code : Tout sélectionner

;/ by MetalOS 
;/ Contributor : falsam


Declare UserProfilUpdate()

Declare AdminUsersList()
Declare AdminUserView(GadgetID.l)
Declare AdminUserUpdate()
Declare AdminUserDelete()

;- Global Variables and Constants
Global BubbleTipStyle.l, BubbleTipStyle=0
Global File.s ;Database à ouvrir
Global ReqSql.s ;Requete à envoyer à la base de données 
Global IdLogin.s, IdRole.s, Nom.s, Password.s
Global Creation.i = 1 ;Indicateur de création d'un enregistrement
Global Modification = 2 ;Indicateur de modification d'un enregistrement

;- Window Constants
Enumeration 1
  #Database
  
  #Window_Form0
  #Window_Form1
  #Window_Form2
EndEnumeration
#WindowIndex=#PB_Compiler_EnumerationValue

;- Gadget Constants
Enumeration 1
  ;Window_Form0
  #Gadget_Form0_Nom
  #Gadget_Form0_Password
  #Gadget_Form0_idrole
  #Gadget_Form0_ListeNom
  #Gadget_Form0_ButtonUpdate
  #Gadget_Form0_ButtonDel
  
  ;Window_Form1
  #Gadget_Form1_Text1
  #Gadget_Form1_StringNom
  #Gadget_Form1_Text2
  #Gadget_Form1_StringPassword
  #Gadget_Form1_ButtonAnnuler
  #Gadget_Form1_ButtonValider

  ;Window_Form2
  #Gadget_Form2_Nom
  #Gadget_Form2_Password
  #Gadget_Form2_Update

EndEnumeration
#GadgetIndex=#PB_Compiler_EnumerationValue

;Crypter une donnée
Procedure.S Encode(Value.s)
  Protected Buffer.s = Space(1024)
  Base64Encoder(@Value, StringByteLength(Value,#PB_UTF8), @Buffer, 1024)
  ProcedureReturn Buffer
EndProcedure

Procedure.s Decode(Value.s)
  Protected Buffer.s = Space(1024)
  Base64Decoder(@Value, StringByteLength(Value), @Buffer, 1024)
  ProcedureReturn Buffer
EndProcedure


;Panneau admin 
Procedure Window_UserPanel()
  OpenWindow(#Window_Form0, 0, 0, 350, 200, "Administration", #PB_Window_WindowCentered)
  ListIconGadget(#Gadget_Form0_ListeNom, 10, 10, 330, 100, "Id Login", 50,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
  AddGadgetColumn(#Gadget_Form0_ListeNom, 1, "Nom", 100)
  AddGadgetColumn(#Gadget_Form0_ListeNom, 2, "Password", 100)
  AddGadgetColumn(#Gadget_Form0_ListeNom, 3, "Role", 50)
  
  StringGadget(#Gadget_Form0_Nom, 10, 120, 100, 20, "")
  StringGadget(#Gadget_Form0_Password, 120, 120, 100, 20, "")
  ComboBoxGadget(#Gadget_Form0_idrole, 230, 120, 120, 20)
  AddGadgetItem(#Gadget_Form0_idrole, -1, "Administrateur")
  AddGadgetItem(#Gadget_Form0_idrole, -1, "Utilisateur")
  SetGadgetState(#Gadget_Form0_idrole, 1)
  
  ButtonGadget(#Gadget_Form0_ButtonUpdate, 100, 170, 80, 20, "Enregistrer")
  ButtonGadget(#Gadget_Form0_ButtonDel, 200, 170, 80, 20, "Supprimer")
  
  ;Defaut :Desactivation des bouton de mise à jour 
  DisableGadget(#Gadget_Form0_ButtonUpdate, #True)
  DisableGadget(#Gadget_Form0_ButtonDel, #True)
  
  ;Defaut :A l'ouverture de la fenetre on considere qu'il s'agit d'une création
  SetGadgetData(#Gadget_Form0_ButtonUpdate, Creation)

  StickyWindow(#Window_Form0, #True)
EndProcedure

Procedure.l Window_Form1()
  If OpenWindow(#Window_Form1,283,145,170,128,"Login",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_Invisible)
    TextGadget(#Gadget_Form1_Text1,10,10,60,15,"Nom")
    StringGadget(#Gadget_Form1_StringNom,10,25,145,20,"")
    TextGadget(#Gadget_Form1_Text2,10,50,120,15,"Mot de passe")
    StringGadget(#Gadget_Form1_StringPassword,10,65,145,20,"", #PB_String_Password)
    ButtonGadget(#Gadget_Form1_ButtonAnnuler,95,100,60,20,"Annuler")
    ButtonGadget(#Gadget_Form1_ButtonValider,30,100,60,20,"Valider")
    HideWindow(#Window_Form1,0)
    ProcedureReturn WindowID(#Window_Form1)
  EndIf
EndProcedure


Procedure.l Window_Form2()
  If OpenWindow(#Window_Form2,324,183,400,300,"Logiciel",#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_WindowCentered|#PB_Window_Invisible)
    TextGadget(#PB_Any, 10, 10, 40, 20, "Nom :")
    TextGadget(#Gadget_Form2_Nom, 50, 10, 100, 20, Nom, #PB_Text_Border)
    SetGadgetColor(#Gadget_Form2_Nom, #PB_Gadget_BackColor, #White)
    
    TextGadget(#PB_Any, 160, 10, 50, 20, "Password :")
    StringGadget(#Gadget_Form2_Password, 220, 10, 100, 20, Password)
    
    ButtonGadget(#Gadget_Form2_Update, 330, 10, 50, 20, "M.a.j")
    
    If IdRole="0"
      Window_UserPanel()
      AdminUsersList()
    EndIf
    
    HideWindow(#Window_Form2,0)
    ProcedureReturn WindowID(#Window_Form2)
  EndIf
EndProcedure


;Création de la base de données
Procedure DatabaseCreate()
  Protected File.s, Database.i, ReqSQL.s, Nom.s, Password.s
  
  File="Utilisateurs.db3"
     
  ;Création d'un fichier vierge
  If CreateFile(#Database, File)
    CloseFile(#Database) 
  Else
    MessageRequester("Erreur", "Impossible de créer un fichier")
   End
  EndIf

  ;Création de la table des utilisateurs
  ;Chaque enregistrement possédera un identifiant automatique
  If OpenDatabase(#Database, File, "", "", #PB_Database_SQLite)
  
    ReqSql = "CREATE TABLE Login (" ;Création des opérations de recettes dépenses
    ReqSql + "idlogin INTEGER PRIMARY KEY," ;Identifiant enregistrement
    ReqSql + "Nom TEXT," ;Nom
    ReqSql + "Password TEXT," ;Password
    ReqSql + "idrole INTEGER" ;Role (0 : Super Admin, 1: Admin utilisateur, 2 : Utilisateur)
    ReqSql + ")" ;Fin de la requete
  
    ;Exécution de la requete
    DatabaseUpdate(#Database, ReqSql)
    
    ;Creation de l'admin par defaut (Nom=admin, password=admin")
    ;Modifiable une fois connecté
    ReqSql = "insert into Login (idrole, Nom, Password) values ("
    ReqSql + Chr(34) + "0" + Chr(34)+Chr(44)
    ReqSql + Chr(34) + "admin" + Chr(34)+Chr(44)
    ReqSql + Chr(34) + Encode("admin") + Chr(34)+")"
    
    If DatabaseUpdate(#Database, ReqSql)=0
      MessageRequester("Erreur", "Impossible d'ajouter l'admin de la base "+ Chr(13) + DatabaseError())
      End
    EndIf   
    
    ;La création de la base de données est terminée
    ;CloseDatabase(#Database)
    MessageRequester("Information","Création de la base terminée")
    
  Else
 
    MessageRequester("Erreur","Erreur lors de la création de la base de données" + Chr(13) +DatabaseError() )
   
  EndIf   
EndProcedure


;Existence de l'utlisateur et concordance avec le mot de passe
Procedure UserExist(Nom.s, Password.s)
  Protected ReqSql.s
  
  ;Préparation de la requete de selection de l'utilisateur
  ;qui tente de se connecter
  ReqSQl="select * from login where Nom=" + Chr(34)+Nom+Chr(34)

  ;La requete envoyée à la base de données va renvoyer un tableau 
  ;Chaque ligne de ce tableau represente un enregistrement
  ;Chaque champs posséde un numéro d'ordre 
  ;Dans ton cas : idlogin (0) + nom (1) + password (2)
  If DatabaseQuery(#Database, ReqSql)
    
    ;Lecture de l'enregistrement retourné
    NextDatabaseRow(#Database) 
    
    ;Vérification du nom
    If Nom = GetDatabaseString(#Database, 1)
      
      ;Le nom correspond : On vérifie le password
      If Encode(Password) = GetDatabaseString(#Database, 2)
        
        ;Mémorisation de l'IdLogin en cas de mise à jour
        IdLogin=Str(GetDatabaseLong(#Database, 0))
        IdRole =Str(GetDatabaseLong(#Database, 3))
        
        ProcedureReturn #True
      Else
        MessageRequester("Information", "Mauvais mot de passe")
      EndIf
      
    Else
      MessageRequester("Information", "Votre nom d'utilisateur n'est pas référencé")
      ProcedureReturn #False
    EndIf
  EndIf
  FinishDatabaseQuery(#Database)
EndProcedure

Procedure UserProfilUpdate()
  ;Preparation de la requete de modification
  
  Password=GetGadgetText(#Gadget_Form2_Password)
  
  ReqSql = "update Login set "
  ReqSql + "password=" + Chr(34) + Encode(Password) + Chr(34)
  ReqSql + "where idlogin = " + Chr(34)+Idlogin+Chr(34)
    
  ;Mise à jour de l'enregistrement 
  If DatabaseUpdate(#Database, ReqSql) <>0
    ;Mise à joru de la fenetre admin si elle est ouverte
    If IsWindow(#Window_Form0)
      AdminUsersList()
    EndIf

    MessageRequester("Information","Modification de votre profil effectuée.")
  Else
    MessageRequester("Erreur", "Erreur durant la mise à jour de votre profil "+Chr(13)+DatabaseError())
  EndIf
  
EndProcedure


;Liste des utilisateurs uniquement accessible par l'admin
Procedure AdminUsersList()
  Protected Enregistrement.s
  ;Préparation de la requete SQL 
  ;Pour l'exercice on ajoute un tri ascendant sur le nom de l'utilisateur
  ReqSql="select * from login order by nom asc"
  
  ClearGadgetItems(#Gadget_Form0_ListeNom)
  
  ;Exécution de la requete
  If DatabaseQuery(#Database, ReqSql)
    While NextDatabaseRow(#Database)
      Enregistrement = Str(GetDatabaseLong(#Database, 0)) + Chr(10) ;IdLogin
      Enregistrement + GetDatabaseString(#Database, 1) + Chr(10) ;Nom
      Enregistrement + Decode(GetDatabaseString(#Database, 2)) + Chr(10) ;Password
      Enregistrement + GetDatabaseString(#Database, 3) ;IdRole
        
      AddGadgetItem(#Gadget_Form0_ListeNom, -1, Enregistrement)
      
    Wend
    FinishDatabaseQuery(#Database)
  EndIf
EndProcedure


;Visualisation d'un utilisateur uniquemenet accessible par l'admin
Procedure AdminUserView(GadgetID.l)
  If GetGadgetState(#Gadget_Form0_ListeNom) <> -1
    Nom=GetGadgetItemText(GadgetID, GetGadgetState(GadgetID), 1)
    Password=GetGadgetItemText(GadgetID, GetGadgetState(GadgetID), 2)
    IdRole=GetGadgetItemText(GadgetID, GetGadgetState(GadgetID), 3)
    
    SetGadgetText(#Gadget_Form0_Nom, Nom)
    SetGadgetText(#Gadget_Form0_Password, Password)
    SetGadgetState(#Gadget_Form0_idrole, Val(IdRole))
            
    ;Activation des boutons de mise à jour
    DisableGadget(#Gadget_Form0_ButtonUpdate, #False)

    If idRole<>"0"
      DisableGadget(#Gadget_Form0_ButtonDel, #False)
      DisableGadget(#Gadget_Form0_idrole, #False)
    Else
      DisableGadget(#Gadget_Form0_ButtonDel, #True)
      DisableGadget(#Gadget_Form0_idrole, #True)
    EndIf
            
    ;C'est une modification : On l'indique au bouton enregistrer
    SetGadgetData(#Gadget_Form0_ButtonUpdate, Modification)  
  EndIf
EndProcedure


;Ajout ou modification d'un utilisateur uniquement accessible par l'admin
;#Gadget_Form0_ButtonUpdate indique s'il s'agit d'un ajout ou d'une modification
Procedure AdminUserUpdate()
  Protected Idoperation.i, DateCrea.s, Operation.s, Recette.s, Depense.s
  
  ;Récupération des données  
  IdRole = Str(GetGadgetState(#Gadget_Form0_idrole))
  Nom = GetGadgetText(#Gadget_Form0_Nom)
  Password = GetGadgetText(#Gadget_Form0_Password)
  
  ;Création ou modification ?
  If GetGadgetData(#Gadget_Form0_ButtonUpdate)=Creation
    
    ;Préparation de la requete de création 
    ReqSql = "insert into Login (idrole, nom, password) values ("
    ReqSql + Chr(34) + idrole + Chr(34)+Chr(44)
    ReqSql + Chr(34) + nom + Chr(34)+Chr(44)
    ReqSql + Chr(34) + Encode(Password) + Chr(34)+")"
   
    ;Ajout de l'enregistrement 
    If DatabaseUpdate(#Database, ReqSql) <>0
      AdminUsersList()
      MessageRequester("Information","Utilisateur ajouté")
    Else
      MessageRequester("Erreur", "Erreur durant l'ajout d'un utilisateur" + Chr(13) + DatabaseError())
    EndIf

  Else
    
    ;Récupération de l'identifiant automatique
    Idlogin=GetGadgetItemText(#Gadget_Form0_ListeNom, GetGadgetState(#Gadget_Form0_ListeNom))

    ;Preparation de la requete de modification
    ReqSql = "update login set "
    ReqSql + "idrole=" + Chr(34) +  idrole + Chr(34)+Chr(44)
    ReqSql + "nom=" + Chr(34) +  nom + Chr(34)+Chr(44)
    ReqSql + "password=" + Chr(34) + Encode(Password) + Chr(34)
    ReqSql + "where idlogin = " + Chr(34)+Idlogin+Chr(34)
    
    ;Mise à jour de l'enregistrement 
    If DatabaseUpdate(#Database, ReqSql) <>0
      SetGadgetText(#Gadget_Form2_Password, Password)
      AdminUsersList()
      MessageRequester("Information","Modification effectuée.")
    Else
      MessageRequester("Erreur", "Erreur durant la modification d'un utilisateur" + Chr(13) + DatabaseError())
    EndIf
  EndIf  
  
  SetGadgetText(#Gadget_Form0_Nom,"")
  SetGadgetText(#Gadget_Form0_Password,"")
  DisableGadget(#Gadget_Form0_ButtonUpdate, #True)
  DisableGadget(#Gadget_Form0_ButtonDel, #True)
  SetGadgetData(#Gadget_Form0_ButtonUpdate, Creation)
EndProcedure

;Supprimer une opération uniquement accessible par l'admin
;On se sert de l'identifiant automatique poru supprimer un enregistrement
Procedure AdminUserDelete()
  ;Préparation de la requete de suppression
  Idlogin=GetGadgetItemText(#Gadget_Form0_ListeNom, GetGadgetState(#Gadget_Form0_ListeNom))
  
  ReqSql="delete from login where idlogin="+IdLogin
  If DatabaseUpdate(#Database,ReqSQL)
    FinishDatabaseQuery(#Database)     
    AdminUsersList()
    SetGadgetText(#Gadget_Form0_Nom,"")
    SetGadgetText(#Gadget_Form0_Password,"")
    DisableGadget(#Gadget_Form0_ButtonUpdate, #True)
    DisableGadget(#Gadget_Form0_ButtonDel, #True)
    SetGadgetData(#Gadget_Form0_ButtonUpdate, Creation)
    MessageRequester("Information","Suppression effectuée.")
    
  Else
      
    MessageRequester("Erreur", "Erreur durant la suppression d'un utilisateur" + Chr(13) + DatabaseError())
    End
  EndIf
EndProcedure

;-Debut
UseSQLiteDatabase()

File="Utilisateurs.db3"

;Test existance de la base
If Not ReadFile(#Database, File)
  DatabaseCreate()
  
Else
  CloseFile(#Database)
  OpenDatabase(#Database, File, "", "", #PB_Database_SQLite)
EndIf

;- Main Loop
If Window_Form1()

  quitForm1=0
  Repeat
    EventID  =WaitWindowEvent()
    MenuID   =EventMenu()
    GadgetID =EventGadget()
    WindowID =EventWindow()

    Select EventID

      Case #PB_Event_CloseWindow
        Select WindowID            
          Case #Window_Form1
            quitForm1=1
        
          Case #Window_Form2
            If IsWindow(#Window_Form0)
              CloseWindow(#Window_Form0)
            EndIf
          
            CloseWindow(#Window_Form2)
        EndSelect      

      Case #PB_Event_Gadget
        Select GadgetID
            
          Case #Gadget_Form0_ListeNom
            AdminUserView(GadgetID)           
            
          Case #Gadget_Form0_Nom, #Gadget_Form0_Password
            If Trim(GetGadgetText(#Gadget_Form0_Nom))="" Or Trim(GetGadgetText(#Gadget_Form0_Password))=""
              DisableGadget(#Gadget_Form0_ButtonUpdate, #True)
              If GetGadgetData(#Gadget_Form0_ButtonUpdate)=Modification
                DisableGadget(#Gadget_Form0_ButtonUpdate, #True)
              EndIf

            Else
              
              DisableGadget(#Gadget_Form0_ButtonUpdate, #False)
              If GetGadgetData(#Gadget_Form0_ButtonUpdate)=Modification
                DisableGadget(#Gadget_Form0_ButtonUpdate, #False)
              EndIf
            EndIf
            
          Case #Gadget_Form0_ButtonUpdate
            AdminUserUpdate() 
            
          Case #Gadget_Form0_ButtonDel
            AdminUserDelete()
            
          Case #Gadget_Form1_StringNom
            
          Case #Gadget_Form1_StringPassword
            
          Case #Gadget_Form1_ButtonAnnuler
            quitForm1=1
            
          Case #Gadget_Form1_ButtonValider
            Nom=GetGadgetText(#Gadget_Form1_StringNom)
            Password=GetGadgetText(#Gadget_Form1_StringPassword)
            If UserExist(Nom, Password)
              Window_Form2()
            EndIf
            
          Case #Gadget_Form2_Update
            UserProfilUpdate()
            
        EndSelect

    EndSelect
  Until quitForm1
  
  CloseDatabase(#Database)
  
  CloseWindow(#Window_Form1)
EndIf
End
Dernière modification par falsam le mar. 11/oct./2011 16:18, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Gestion utilisateurs

Message par Ar-S »

Il faudrait surement "empêcher" la possibilité de supprimer l'admin :)
Et crypter le mot de passe ne serait pas un mal.
En tout cas je n'ai jamais essayé de communiquer avec un serveur et MySql via PB, ça m’intéresse beaucoup.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Gestion utilisateurs

Message par MetalOS »

Falsam,

Tu est un boss :wink: c'est exactement ce que je cherchais. Mille fois merci

Il y à possibilité de crypter la base de données ?
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gestion utilisateurs [RESOLU]

Message par falsam »

Ar-S a écrit :Il faudrait surement "empêcher" la possibilité de supprimer l'admin :)
Et crypter le mot de passe ne serait pas un mal.
En tout cas je n'ai jamais essayé de communiquer avec un serveur et MySql via PB, ça m’intéresse beaucoup.
Sqlite n'a pas besoin de serveur MysQL.

Empêcher de supprimer l'admin est simple en créant une qualification pour chaque utilisateur:
0 Administrateur base de données
2 Utilisateur (Modifie uniquement son profil)
MetalOS a écrit :Il y à possibilité de crypter la base de données ?
Tu peux crypter le password par exemple.

Le code a été modifié en tenant compte aussi des remarques d'Ar-S.

PS : SQlite n'est pas un modèle de sécurité comparé à MySql par exemple. Utilises l'outil SQLite Vision (335 Ko - Français et anglais) et tu verras que les données sont facilement modifiables.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MetalOS
Messages : 1510
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Gestion utilisateurs [RESOLU]

Message par MetalOS »

Ok cool, merci falsam.
Répondre