Autor Thema: Rolle von User auslesen  (Gelesen 6528 mal)

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Rolle von User auslesen
« am: 04.04.08 - 09:33:35 »
Hallo zusammen,

ich habe folgendes Problem:

Ein User kann mehrere Rollen haben (z.B. [LESER] und [OE_1])
Es gibt aber auch User, die nur die Rolle [LESER].
In der DB gibt es einige Rollen, die mit "OE_" beginnen, die dann lauten: [OE_1], [OE_2], [OE_*].

Hat ein User eine Rolle, die mit "OE_" beginnt, soll diese eine Rolle in ein Feld geschrieben werden.

Wie kann ich nun überprüfen, ob der User eine Rolle hat, die mit "OE_" beginnt?

Grüße
Andi
« Letzte Änderung: 07.04.08 - 08:00:01 von awagner »
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Rolle von User auslesen
« Antwort #1 am: 04.04.08 - 09:39:13 »
In welcher Sprache soll das gelöst werden Script oder Formel-Sprache?

In Script würde ich die mich durch die Werte iterieren und Funktion Left zum Vergleich nutzen.

In der Formel-Sprache würde ich mit der @For-Schleife und die @Left Funktion nutzen.

Bestimmt geht es auch ohne @For, da müßte man etwas spielen oder einer unserer Cracks schießt das aus der Hüfte.

Rainer
Rainer Zaske

MCSD - C#

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Rolle von User auslesen
« Antwort #2 am: 04.04.08 - 09:41:17 »
@UserRoles und @IsMember hätte ich gesagt. Das müsste sogar ohne For-Schleife gehen.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #3 am: 04.04.08 - 09:48:35 »
am liebsten wärs mir in der formelsprache.

@m3: aber mit @IsMember müsste ich doch den User auf alle Rollen überprüfen

z.B.: @If(@IsMember("[OE_1]";@UserRoles); "[OE_1]"; nächste prüfung auf [OE_2]...) das wird ja ewig viel...

das 1 und 2 bei den Rollen steht nur als beispiel, ich kanns also ned hochzählen...
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Rolle von User auslesen
« Antwort #4 am: 04.04.08 - 09:52:11 »
Andi, Designer-Hilfe genau lesen ;) Du kannst Ihm auch für die Rollen eine Liste übergeben.
... @IsMember("[OE_1]":"[OE_3]":"[OE_3]";@UserRoles) ...
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #5 am: 04.04.08 - 09:53:51 »
 ::)

mh... ok,,, da haste wohl recht...

aber dann weiß ich, dass er mitglied einer dieser rollen ist,,,
und wie kann ich dann genau diese eine rolle in ein feld schreiben?

ich steh momentan ziemlich aufm schlauch
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Rolle von User auslesen
« Antwort #6 am: 04.04.08 - 09:58:25 »
Bei der Übergabe einer Liste als Suchkriterium müssen alle Elemente der 1. Liste in der zu druchsuchende Liste vorhanden sein, so dass dies hier nich klappen würde.

Hier ein Zitat aus der Designer-Hilfe:

Zitat
Wenn es sich bei beiden Parametern um Listen handelt, gibt diese Funktion den Wert 1 zurück, sofern alle Elemente von Textliste1 in Textliste2 enthalten sind.


Ich denke wenn man ohne @for arbeiten will, dann sollte die Form ungefähr so aussehen:

@if(@left(@userroles; 4) = "OE_"; ....

Das währe mein Ansatz den ich ausbauen würde.

Rainer
Rainer Zaske

MCSD - C#

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #7 am: 04.04.08 - 10:01:45 »
das mit dem @if(@left(@userroles; 4) = "OE_"; .... ist ein ganz guter ansatz
Danke schon mal,,,

aber was mach ich, wenn bei den User-Rollen eben jetzt zwei Rollen drinstehen

z.B. Leser und OE_1

dann kann ich ja nicht mehr mit @left arbeiten, weils ja dann immer falsch ist

 ??? ??? ???
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Rolle von User auslesen
« Antwort #8 am: 04.04.08 - 10:05:11 »
Bei Listen werden alle Elemente der Liste verarbeitet. Sprich bei einem Element einmal, bei 2 Elmenent zweimal ....

Ich weis nur nicht ob du alle Rollen in das neue Feld übertragen willst oder nur eine.

Rainer
Rainer Zaske

MCSD - C#

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #9 am: 04.04.08 - 10:06:10 »
in dieses Feld möchte ich nur die eine Rolle, die mit "[OE_" beginnt übertragen
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline ZaLudtske

  • Senior Mitglied
  • ****
  • Beiträge: 319
  • Geschlecht: Männlich
  • carpe diem
Re: Rolle von User auslesen
« Antwort #10 am: 04.04.08 - 10:08:52 »
Dann würde ich mit der @For-Schleife arbeiten und nur gezielt die Einträge in das andere Feld schreiben die mit "[OE_" beginnen.

Rainer
Rainer Zaske

MCSD - C#

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #11 am: 04.04.08 - 10:23:32 »
so ich hab jetzt endlich ne lösung gefunden ;)

hab ein berechnetes feld genommen und als vorgabewert folgendes reingeschrieben:

_role := @Middle(@Implode(@UserRoles);"[OE_"; "]");
_role := "[OE_" + _role + "]";
_role;

danke für eure Hilfe!!!
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #12 am: 04.04.08 - 23:37:07 »
Mit dieser Lösung ist natürlich für alle (periodischen) Agenten, die im Server- Userkontext laufen - dazu zählen auch die Agenten, die vom Benutzer angestoßen werden, aber ONBEHALF mit einem anderen Benutze, z.B. dem Server laufen - der Befehl COMPUTEWITHFORM ab sofort strengstens verboten.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #13 am: 05.04.08 - 00:18:42 »
Gehört die Methode ComputeWithForm der NotesDocument class nicht sowieso streng verboten, Norbert? Mit all den bekannten Nebenwirkungen? Aber Du hast natürlich ohne jegliche Frage vollkommen Recht - wenn das eingesetzt wird, zeigt ComputeWithForm, dass es unter diesen Umständen wirklich funktioniert  ;)

Zum eigentlichen Thema: Kommt für Andi auch LotusScript in Frage? Damit liesse sich das doch sicherer und vor allem transparenter abdecken.

Bernhard

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #14 am: 05.04.08 - 13:22:29 »
Ich habe mich höchst indirekt ausgedrückt und mit meinem Posting einen - durchaus bedenkenswerten - Seiteneffekt in den Vordergrund gehoben. Jetzt möchte ich einmal deutlicher werden. Dafür komme ich auf den Ursprungstext des ersten Postings zurück:

Zitat
Hat ein User eine Rolle, die mit "OE_" beginnt, soll diese eine Rolle in ein Feld geschrieben werden.

Wie kann ich nun überprüfen, ob der User eine Rolle hat, die mit "OE_" beginnt?

Die Philosophie lehrt uns: was ich nicht sagen kann, das kann ich auch nicht denken. Deshalb ist sprachliche Klarheit so wichtig. Weil sie uns hilft, den richtigen Lösungsansatz zu suchen. Alle Antworten stürzen sich allein auf den zweiten Punkt, die technische Umsetzung einer technischen Anfrage.

Lautet dort die Anforderung nicht vielmehr: In jedem Dokument vom Typ X soll für jede Rolle [OE_x] vermerkt werden, wenn mindestens ein Benutzer mit einer solchen Rolle [OE_x] dieses Dokument gelesen/bearbeitet/freigegeben/abgelehnt hat.

Das klingt nach Workflow. Soll/muß das wirklich unbemerkt geschehen oder ist es nicht vielleicht viel erstrebenswerter, den zu protokolierenden Vorgang auch bewußt durch Drücken einer Schaltfläche herbeizuführen und mit Namen und Datum zu protokollieren ? Muß ein Benutzer etwas tun oder soll eine Maschine etwas tun ?

Erst eine klare Vorstellung davon, was ich will, führt mich zu einer Lösung, die der Anforderung entspricht.

Und meine feste Überzeugung in diesem Fall ist, daß hier eine nicht problemadäquate Lösung gesucht und eingesetzt wurde, und zwar nicht aus Mangel an Codierungsfähigkeit, sondern aus mangelhafter Problemanalyse.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #15 am: 07.04.08 - 00:43:52 »
Volle Zustimmung, Norbert. Es ist ja nach wie vor unklar, *was* wirklich *wann/unter welchen Bedingungen* *genau* erfolgen soll.
Und mit dem gefundenen Konstukt kann sehr viel schief gehen: ComputeWithForm hast Du schon erwähnt, wie schnell ist ein @Command ([ToolsRefreshSelectedDocs]) vom Admin eingesetzt, ein User hat mehr als eine OE_-Rolle usw.
Solange unbekannt ist, was wirklich erreicht werden soll, sind wirklich hilfreiche Antworten (die erstmal ja mehr in Richtung Architektur gehen müssen) nahezu unmöglich. Das "Erledigt"-Symbol vor dem Thread halte ich daher auch für verfrüht - vor allem in Hinsicht darauf, dass hier in Zukunft auch andere auf den Thread stossen werden und denen dann ggf. suggeriert wird: "So macht man das.". Das "Was" ist ja noch immer unklar ...

Bernhard

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #16 am: 07.04.08 - 08:12:52 »
Guten  Morgen zusammen,

Aufgabenstellung ist es, das Leute Dokumente aus einer Datenbank nur dann Lesen bzw. Bearbeiten dürfen, wenn dieses Dokumente jemand aus seiner Abteilung erstellt hat.

Ein User kann höchstens 3 Rollen haben (siehe unten), aber nur eine OE_-Rolle!

Es gibt jetzt folgende Felder, die die Berechtigung steuern.

f_Full   - - - Rolle [FULL]; Autorenfeld; diese Rolle hat auf alle Dokumente Schreibrecht
f_Read - - - Rolle [READ]; Leserfeld; diese Rolle hat auf alle Dokumente Leserechte
f_OE - - - Rolle [OE_*]; Autorenfeld; diese Rolle hat auf die Dokumente aus der eigenen Abteilung Schreibrechte

Die Felder werden alle beim Anlegen berechnet.

In dieser Datenbank wird es (vorerst) keine Agenten geben, oder irgendwelche große Funktionen, wo die ComputeWithForms-Problematik auftauchen könnte.

@Bernhard: LotusScript kommt für mich auch in Frage, ich dachte mir nur, dass es vll. in Formel leichter wäre ;)

@Norbert: Habe das Erledigt-Symbol wieder entfernt.

Gruß Andi

Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #17 am: 07.04.08 - 08:24:52 »
Wenn es immer nur eine Rolle mit f_OE... gibt, dann würde ich es mit script machen:

etwa so:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim acl As NotesACL
Dim entry As NotesACLEntry
Set db = session.CurrentDatabase
Set acl = db.ACL
Set entry = acl.GetEntry( session.UserName )
Forall r In entry.Roles
  if instr(cstr(r),"f_OE") > 0 then
    ' .... schreibe die Rolle in Feld
  end if
End Forall
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline awagner

  • Junior Mitglied
  • **
  • Beiträge: 72
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #18 am: 07.04.08 - 08:46:05 »
Die User sind aber nicht namentlich in der ACL drin, sondern immer als Gruppe, die zu einer Rolle gehört.

und mit dem Befehl acl.GetEntry( session.UserName ) frage ich ja immer nur auf einen eindeutigen Namen ab.

Bei mir kommt es beim Schleifen-Start zu nem Laufzeit-Fehler "Object Variabel Not Set".

von dem her wird das wohl nicht so klappen, oder liege ich da jetzt falsch?
Andi
--------------------------------------------------------------------
http://www.andis-bilder.de
http://www.djk-rattenberg.de
http://www.bavarian-beach-boys.de
--------------------------------------------------------------------
Ziele sind wie Sterne am Himmel,
man kann sie nie wirklich erreichen,
aber sie geben uns eine gute Orientierung

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Rolle von User auslesen
« Antwort #19 am: 07.04.08 - 09:04:40 »
Gucke mal hier.
Evtl kommt du damit weiter
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz