Seite 1 von 1

Benutzerverwaltung mit Topdown-Lib

Verfasst: Mi, 03. Okt 2007 11:17
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...

Re: Benutzerverwaltung mit Topdown-Lib

Verfasst: Mi, 03. Okt 2007 14:25
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

Verfasst: Mi, 03. Okt 2007 14:38
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

Verfasst: Mi, 03. Okt 2007 14:42
von Martin Altmann

Verfasst: Mi, 03. Okt 2007 15:16
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

Verfasst: Mi, 03. Okt 2007 15:24
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

Verfasst: Mi, 03. Okt 2007 15:26
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

Verfasst: Mi, 03. Okt 2007 15:36
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

Verfasst: Mi, 03. Okt 2007 15:45
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

Verfasst: Mi, 03. Okt 2007 16:13
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

Verfasst: Sa, 13. Okt 2007 13:41
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

Verfasst: Sa, 13. Okt 2007 16:59
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

Verfasst: So, 14. Okt 2007 1:06
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