Seite 1 von 1

User Namen abfragen

Verfasst: Mittwoch 26. Juli 2006, 20:52
von mike
Hallo zusammen,

ich möchte in Zope den Usernamen abfragen, und habe mit Hilfe des Zope Buch`s folgendes probiert:

Code: Alles auswählen

import AuthenticatedUser

def get_User(self):
    user = AuthenticatedUser.getUserName()
    return user
aber es klappt nicht, diese externe Methode einzubinden, weil AuthenticatedUser nicht gefunden wird,
auch andere Module aus dem Anhang der Doku kann ich nicht verwenden,
woran liegt das denn? :roll:

Re: User Namen abfragen

Verfasst: Mittwoch 26. Juli 2006, 22:12
von gerold
mike hat geschrieben:ich möchte in Zope den Usernamen abfragen
Hi mike!

In einem "Python Script" geht das z.B. so:

Code: Alles auswählen

context.REQUEST.AUTHENTICATED_USER
Siehe auch: http://www.python-forum.de/post-39107.html#39107

mfg
Gerold
:-)

Verfasst: Mittwoch 26. Juli 2006, 22:27
von gerold
Um zum Benutzernamen innerhalb einer "Externe Methode" zu kommen...

Code: Alles auswählen

def get_username(self):
    return self.REQUEST.AUTHENTICATED_USER
mfg
Gerold
:-)

Verfasst: Mittwoch 26. Juli 2006, 23:08
von mike
hallo Gerold,

danke für die Hilfe, es hat geklappt den Usernamen auszulesen,
jetzt habe ich aber schon ein neues Problem, und zwar wenn ich den Usernamen an eine Variable übergebe und diese dann an meinen webservice schicke, dann bekomme ich einen Fehler, mit dem ich nicht viel anfangen kann:

Error Type: faultType
Error Value: ('soapenv:Server.userException', "org.xml.sax.SAXException: Deserializing parameter 'v1': could not find deserializer for type {http://www.w3.org/1999/XMLSchema}Implic ... rerWrapper", '')

wenn ich den Usernamen direkt als string in die Abfrage schreibe, dann funktioniert es...

Verfasst: Donnerstag 27. Juli 2006, 08:02
von gerold
mike hat geschrieben:could not find deserializer for type {http://www.w3.org/1999/XMLSchema}Implic ... rerWrapper", '')
Hi mike!

Ich habe keine Erfahrung mit Soap, aber vielleicht hilft es schon, beim Zuweisen des Variablenamens, den Wert explizit noch mit str() oder unicode() umzuwandeln. Es könnte ja sein, dass kein String, sondern stringähnliches Objekt zurück gegeben wird.

Code: Alles auswählen

my_user = str(self.REQUEST.AUTHENTICATED_USER)
mfg
Gerold
:-)

Verfasst: Donnerstag 27. Juli 2006, 10:09
von mike
Hallo Gerold,

vielen Dank, daran hat`s gelegen... :-)

Verfasst: Dienstag 1. August 2006, 16:45
von mike
Hallo nochmal,

gibt es zufällig auch eine Möglichkeit das Passwort abzufragen?

Verfasst: Mittwoch 9. August 2006, 10:55
von nicogrubert
Noch ein kurzer Nachtrag:
Falls dir das REQUEST Objekt - aus welchen Gründen auch immer - nicht zur Verfügung stehen sollte, bekommt man den User wie folgt:

Code: Alles auswählen

# Script (Python)
from AccessControl import getSecurityManager
userobj = getSecurityManager().getUser()
return userobj.getUserName()

Das Passwort ist in einem speziellen Attribut "__" (2 Underscores) gespeichert.
Attribute und Methode, die mit einem "_" beginnen, sind besonders geschützt und darauf kannst du in einem Python Script nicht zugreifen (Restricted Python).
Dazu musst du dann eine Externe Methode verwenden, die in etwa folgendes macht (Ungetestet):

Code: Alles auswählen

# External Method 
from AccessControl import getSecurityManager
userobj = getSecurityManager().getUser()
return userobj.__  # unschön
oder besser:

Code: Alles auswählen

return userobj._getPassword() # schön
Ansonsten einfach mal die API der User Klasse anschauen (<Zope_SoftwareHome>\lib\python\AccessControl\User.py).

Verfasst: Mittwoch 6. September 2006, 10:02
von JR
Hallo!

Um an Mikes Frage zur Ermittlung des Passworts anzuknüpfen:

Vorgeplänkel:
----------------
Für unseren Flugverein verwalte ich den internen Bereich unserer Homepage (Plone-Portal).
Innerhalb dieses Portals läuft eine selbsterstellte Flugplatz-Verwaltungssoftware.

Die Daten (Flüge etc.) werden in einer MySQL-Datenbank verwaltet.

Nun habe ich vor, parallel eine Python-Applikation zu programmieren, um die Flugdatenerfassung
direkt im Flugbetrieb über ein Tool zu ermöglichen, welches schnellere Antwortzeiten als
ein lokal betriebener Server (Kopie des Portals) bietet. Dieses Tool soll über diesselben Zugangsdaten
wie im Portal geschützt werden.

Frage:
-------
Gibt es eine Möglichkeit an die Passwörter von den registrierten Benutzern im Portal zu kommen,
um diese zu allen Mitgliedern in der MySQL-Tabelle zu speichern?

Nachgeplänkel:
-----------------
Beim Registrieren neuer Benutzer speichere ich die Benutzernamen in der MySQL-DB. Hätte ich jetzt
entsprechend eine Passwort-Spalte, könnte ich den Benutzerzugang in der Python-Applikation
leichter realisieren.

Vielen Dank fürs "Zuhören"

JR