Login mit speziellen rechten pro anmeldename



  • Hi leutz..

    also ich hab ein Login (per Select), und möchte, das wenn ein ganz spezieller benutzer (zb Name: Administrator Passwort: admin) sich einloggt, das er einen Button active hat, während ein anderer Benutzer den nicht active hat...

    wie geht das?

    Code:

    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Form3->Query1->Close();
    Form3->Query1->SQL->Clear();
    Form3->Query1->SQL->Add("select * from Login where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';");
    Form3->Query1->Open();
    
    if (!Form3->Query1->Eof)
    {
    Form4->Show();
    Form1->DestroyWnd();
    }
    else
    ShowMessage ("falsches Login");
    }
    

    das ist das Login...und da soll eben diese NAmenseinteilung rein, das bei einem Name ein

    Form4->Button8->active=true;
    

    rein kommt!

    danke schon mal im vorraus...

    WM



  • Wavemaster schrieb:

    und da soll eben diese NAmenseinteilung rein, das bei einem Name ein

    Form4->Button8->active=true;
    

    rein kommt!

    was ist daran schwer? frag doch einfach die beiden Strings ab und wenn sie stimmen machst du den Button sichtbar

    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Form3->Query1->Close();
    Form3->Query1->SQL->Clear();
    Form3->Query1->SQL->Add("select * from Login where LName like '" +Edit1->Text+ "' 
       AND Passwort = '"+Edit2->Text+ "';");
    Form3->Query1->Open();
    
    if (!Form3->Query1->Eof)
    {
    Form4->Show();
    Form1->DestroyWnd();
    if ((Edit1->Text == "Admin") && (Edit2->Text == "admin")) Form4->Button8->active=true;
    else Form4->Button8->active=false;
    }
    else
    ShowMessage ("falsches Login");
    }
    


  • Ich würd mal sagen das für jedes "Recht" das dem benutzer gewährt wird ein Feld in der Datenbank angelegt wird mit Format Number, Bool währe besser falls das die Datenbank unterstützt.
    Und dann schreibste eben ne select Anweisung die die Rechte ausliest und eben die Buttons u.ä. entsprechend setzt.

    z.B. so(nicht getestet, sollte aber funktíonieren)

    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Form3->Query1->Close();
    Form3->Query1->SQL->Clear();
    Form3->Query1->SQL->Add("select * from Login where LName like '" +Edit1->Text+ "' AND Passwort = '"+Edit2->Text+ "';");
    Form3->Query1->Open();
    
    if (!Form3->Query1->Eof)
    {
    Form4->Show();
    //Button8Aktiv durch einen passenderen Feldnamen ersetzen
    //Wenn Datenbank bool unterstützt
    if (Form3->Query1->FieldByName("Button8Aktiv")->AsBoolean)
    	{
    	 Form4->Button8->active=true;
    	}
    //Wenn Datenbank bool nicht unterstützt(könnte aber sein das AsBoolean 
    //die Werte richtig konvertiert, einfach mal testen)
    if (Form3->Query1->FieldByName("Button8Aktiv")->AsInteger==1)
    	{
    	 Form4->Button8->active=true;
    	}
    Form1->DestroyWnd();
    }
    else
    ShowMessage ("falsches Login");
    }
    


  • Also @ Linnea, das hab ich mir auch schon überlegt, gefällt mir aber nicht wirklich!

    Das mit der Datenbank hört sich meineserachtens nach besser an..

    aber kannst du das noch etwas genauer erklären bitte...ich benutze Access 2k3, weil das reicht für die anwendung!

    Danke schonmal!!



  • Mit Access kenn ich mich nicht so gut aus, das letzte mal hab ichs benutzt als ich zur BFI(Berufsfachschule Informatik) ging 😃

    Ich habe grade Access 2002 zur verfügung , sollte also auch so gehen wie hier beschrieben.

    Du erstellst in der Benutzertabelle ein Feld mit einem entsprechenden Namen(der dazu passt was man mit dem Recht machen kann) und gibts als Felddatentyp Ja/Nein und Format Wahr/Falsch an.

    Und dann fragste im Code wie unten beschrieben ab ob das Feld auf Wahr gesetzt wurde bei dem Benutzer.Den Teil mit dem AsInteger kannste weglassen.

    Falls das so nicht funktioniert(sollte aber eigentlich :D) nimmste als Felddatentyp Zahl, und setzt den Wert auf 1 falls dem Benutzer das Recht gewährt wird und auf 0 falls nicht.
    Und dann nimmste eben den Codeteil mit dem AsInteger.

    Hoffe das war verständlich 🙂



  • Öffne die mdb mal in Access, öffne die Tabelle Login. Wenn Du das kannst, kann das auch jeder andere... 10 Sek. Arbeit um alle Benutzer/Kennwörter zu bekommen!



  • HI leute, sorry war im urlaub!

    Also ich werd das mit access mal machen, wenns nich geht meld ich mich wieder!
    Eine frage aber noch: musss ich nur ein feld für rechte mit ja od nein? und die rechte selbst dann im prog zuordnen?!

    @Joe: nein mdb is richtig geschützt! PW, tabellen verstecket usw...!


Anmelden zum Antworten