Benutzerverwaltung mit Topdown-Lib

Moderator: Moderatoren

Antworten
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Benutzerverwaltung mit Topdown-Lib

Beitrag von Christof »

Hi Leute,

bestimmt gibt's jemanden, der sich schon mal mit dem Thema "Benutzerverwaltung" auseinandergesetzt hat.

Ich nutze die Topdown-Lib von Clayton Jones und möchte, wenn möglich/nötig auch die Funktionen daraus nutzen.

Aufgrund einer Anmeldung (evtl. Benutzername, auf jeden Fall Kennwort) sollen für den Anwender nur bestimmte Menüpunkte sichtbar sein. Das Menüsystem habe ich schon stehen (ist in einer dbf abgelegt). Vielleicht gibt's ja schon was (fast) Fertiges.

Freue mich über jede Antwort.

Gruß

Christof

--------------------------------------------------------
Hallo Rolf Ramacher: Ja, das sind wir nicht weit voneinander entfernt. Vielleicht sind wir uns ja schon mal über den Weg gelaufen, ohne es zu wissen...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Benutzerverwaltung mit Topdown-Lib

Beitrag von AUGE_OHR »

hi,
Christof hat geschrieben: Ich nutze die Topdown-Lib von Clayton Jones und möchte, wenn möglich/nötig auch die Funktionen daraus nutzen.

Aufgrund einer Anmeldung (evtl. Benutzername, auf jeden Fall Kennwort) sollen für den Anwender nur bestimmte Menüpunkte sichtbar sein. Das Menüsystem habe ich schon stehen (ist in einer dbf abgelegt). Vielleicht gibt's ja schon was (fast) Fertiges.
Ich kenne zwar die "lates" Topdown nicht mehr, aber ich denke nicht
das Clayton API Funktionen benutzt die nicht original Xbase++ sind
(Roger macht das mit express++). Wenn du also den Windows (?)
Benutzernamen und Kennwort haben willst kommst du mit Topdown
da nicht ran.

Was das Menu angeht gibt es 2 Möglichkeiten : Nur das anzeigen was
der User darf oder die Menupunkte "disablen" wobei ein "disable" beim
XbpMenu() so nicht vorhanden ist sondern man über Ownerdraw gehen
müsste. Dem User nur das anzuzeigen was er darf wäre also der
einfachere Weg wo du dir nur überlegen muss wie du es machen willst
wenn zwischendruch der User wechselt denn wie man Menues dynamisch
wechselt hab ich auch noch nicht raus.

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jimmy,
Menüs dynamisch wechseln geht recht einfach: Einträge löschen, neue hinzufügen, refreshen - zumindest unter XClass++
Zu Deinen anderen Einwürfen:
Natürlich kann man Menüs disablen - jedoch nur "echte" Menüeinträge - also nicht den "Namen" eines Untermenüs und auch nicht den Eintrag in der Menüleiste selber - aber vielleicht reicht Christof das ja schon?
Und zum Thema Username - das geht auch ohne API! Einfach die Umgebungsvariable USERNAME abfragen - das ist der Name des unter Windows angemeldeten Users, und er muss sich ja auch mit seinem Passwort authentifiziert haben (sofern er eines hat), sonst wäre er ja nicht angemeldet :wink:
Ansonsten hatten wir zu dem Thema (Paßwortabgleich gegen Windows) doch erst vor wenigen Tagen ein entsprechendes Posting, oder?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: Menüs dynamisch wechseln geht recht einfach: Einträge löschen, neue hinzufügen, refreshen - zumindest unter XClass++
hm ... mit ADDItem kann ich zwar in XbpMenu() ein Element zufügen
aber wie lösche ich es den da es doch kein DELItem gibt oder soll ich
es :destroy() ?
Martin Altmann hat geschrieben: Zu Deinen anderen Einwürfen:
Natürlich kann man Menüs disablen - jedoch nur "echte" Menüeinträge - also nicht den "Namen" eines Untermenüs und auch nicht den Eintrag in der Menüleiste selber - aber vielleicht reicht Christof das ja schon?
auch da die Frage wie es unter XbpMenu() geht den ein DISABLEItem
hab ich doch beim original nicht ?
Nur die "Namen" ( :GetTitle() ) zu wechseln wird es wohl auch nicht
bringen da man ja gewöhlich noch einen Codeblock dran hat.
Martin Altmann hat geschrieben: Und zum Thema Username - das geht auch ohne API! Einfach die Umgebungsvariable USERNAME abfragen - das ist der Name des unter Windows angemeldeten Users, und er muss sich ja auch mit seinem Passwort authentifiziert haben (sofern er eines hat), sonst wäre er ja nicht angemeldet :wink:
Ansonsten hatten wir zu dem Thema (Paßwortabgleich gegen Windows) doch erst vor wenigen Tagen ein entsprechendes Posting, oder?
ok %USERNAME% könnte man verwenden aber den könnte jeder User
auch in der DOS/CMD Box zur laufzeit ändern ... das könnte zu Problemen
führen.
Eine andere Möglichkeit wäre das volle Menu anzuzeigen und die Prüfung
nach dem Menu zu machen dann müsste man nichts am Menu rummachen
btw. Ein "disable" in einem Menu kann man ganz leicht mit einen Tool
aushebeln (hab es hier irgendwo auf der HD rumliegen) sodas "disable"
keinen "Schutz" darstellt.

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jimmy,
bei XClass++ gibt es DelBarItem, damit wird ein komplettes Menü entfernt.
Und mit InsBarItem kann man ein Menü hinzufügen.
Danach kommt ein :Refresh und das war's.
Schau mal bei plain Xbase++ unter dem Eintrag XbpMenuBar:DelItem()...
Vielleicht hilft Dir das weiter?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Ach - und zu Deinem Einwand mit dem Setzen der Umgebungsvariable: da hast Du latürnich Recht! Und darum auch der Verweis von mir auf den anderen Thread - da hat Andreas nämlich die Lösung gepostet.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Ach - zum Thema disable beim Menü ist kein Schutz:
Richtig, darum habe ich nicht nur ein disable(), sondern auch in dem Falle einen leeren Codeblock!
Beispiel:

Code: Alles auswählen

oApp:Menu:AddItem(100, ID_MNU_BRIEF_1, "~Dachorganisationen", { || IF ( .not. easyspecial, briefe( "E" ), ) }, "Briefe an Dachorganisationen (Ausland)", , IF ( easyspecial, XBPMENUBAR_MIA_DISABLED, ) )
           ...
oApp:Menu:AddItem(300, ID_MNU_HUNDE_8, "unbestätigte ~Titel", { || IF ( eversion >= 5, unbesttitel(), ) }, "Hunde mit unbestätigten Titeln überarbeiten", , IF ( eversion < 5, XBPMENUBAR_MIA_DISABLED, ) )
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Christof
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 265
Registriert: Mo, 01. Okt 2007 17:14
Wohnort: Bedburg
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Beitrag von Christof »

Ok, ok Leute!

Vielen Dank für die Hinweise und die z.T. "heiße" Diskussion.

Auch wenn ich im Bankenbereich unterwegs bin, geht es hier nicht um eine Anwendung mit hypersensiblen und dreifach zu sichernden Daten. Eigentlich wollte ich nur etwas Benutzerfreundlichkeit reinbringen und einige Funktionen im Menü auslassen, wenn der entsprechende Anwender diese nicht braucht. Das geht am Anfang der Anwendung ja ganz einfach, da man dann die Einträge einfach nicht einträgt :wink:

Ihr habt mir aber trotzdem sehr weitergeholfen. Ich werde die Möglichkeit mit der Abfrage des Usernamens weiter verfolgen. Evtl. brauche ich dann gar keine umfassende Benutzerverwaltung.

Werd' mich mal melden, wenn ich's fertig habe, ok? Vielleicht kann's ja jemand brauchen...

Nochmals DANKE und Grüssle (wie die Kollegen aus Stuttgart immer in meiner Firma schreiben)

Christof
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: bei XClass++ gibt es DelBarItem, damit wird ein komplettes Menü entfernt.
Und mit InsBarItem kann man ein Menü hinzufügen.
Danach kommt ein :Refresh und das war's.
Schau mal bei plain Xbase++ unter dem Eintrag XbpMenuBar:DelItem()...
aha ja, es wird also das komplette XbpMenu() aus dem XbpMenuBar()
entfernt, aber eine ebarbeitung eines einzelnen XbpMenu() Item geht
wohl nicht (das war das was ich meinte)
Martin Altmann hat geschrieben: darum habe ich nicht nur ein disable(), sondern auch in dem Falle einen leeren Codeblock!
... darauf bin ich noch nicht gekommen. danke für den Tip.

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jimmy,
AUGE_OHR hat geschrieben:Ein "disable" in einem Menu kann man ganz leicht mit einen Tool aushebeln (hab es hier irgendwo auf der HD rumliegen) sodas "disable" keinen "Schutz" darstellt.
funktioniert das Tool nur bei disableten Menüeinträgen oder auch bei Buttons, Statics, SLEs, .... in einem Fenster?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben:
AUGE_OHR hat geschrieben:Ein "disable" in einem Menu kann man ganz leicht mit einen Tool aushebeln (hab es hier irgendwo auf der HD rumliegen) sodas "disable" keinen "Schutz" darstellt.
funktioniert das Tool nur bei disableten Menüeinträgen oder auch bei Buttons, Statics, SLEs, .... in einem Fenster?
Ich denke es geht bei allem was "disable(d)" wurde.

gruss by OHR
Jimmy
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jimmy,
hmmm - die Ergebnisse sind sehr unterschiedlich:
  • Menü: geht, aber kein Problem, da bei mir ja dann auch der Codeblock leer ist, passiert nichts.
  • PushButton: Ist disabled. Erst nach einigen Malen raufklicken wird er enabled und danach kann man ihn anklicken - da müßte ich nacharbeiten.
  • Checkbox: genau wie Pushbutton.
  • Static: Passiert nichts, bleibt alles disabled.
  • Sle: Passiert nichts, bleibt alles disabled.
Viele Grüße
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten