1.1 --- a/MoinMessageSupport.py Fri Jan 31 19:00:21 2014 +0100
1.2 +++ b/MoinMessageSupport.py Fri Jan 31 19:56:50 2014 +0100
1.3 @@ -44,10 +44,31 @@
1.4 self.pagename = pagename
1.5 self.request = request
1.6 self.page = Page(request, pagename)
1.7 + self.new_user = None
1.8
1.9 def init_store(self):
1.10 self.store = ItemStore(self.page, "messages", "message-locks")
1.11
1.12 + def do_as_user(self, new_user, fn, args):
1.13 +
1.14 + "As 'new_user', perform 'fn' using the given 'args'."
1.15 +
1.16 + request = self.request
1.17 +
1.18 + # Switch to the relaying user if necessary.
1.19 +
1.20 + if new_user:
1.21 + user = request.user
1.22 + request.user = get_user(request, new_user) or user
1.23 +
1.24 + # Handle the content.
1.25 +
1.26 + try:
1.27 + fn(*args)
1.28 + finally:
1.29 + if new_user:
1.30 + request.user = user
1.31 +
1.32 def do_action(self):
1.33 request = self.request
1.34 content_length = getHeader(request, "Content-Length", "HTTP")
1.35 @@ -114,21 +135,12 @@
1.36 # NOTE: An action should be able to process stored messages,
1.37 # NOTE: by invoking code that is also used asynchronously.
1.38
1.39 - # Switch to the relaying user if necessary.
1.40 -
1.41 - if new_user:
1.42 - user = request.user
1.43 - request.user = get_user(request, new_user) or user
1.44 - request.user.auth_method = "pgp-overridden"
1.45 + self.new_user = new_user
1.46
1.47 # Handle the parsed message.
1.48
1.49 - try:
1.50 - self.init_store()
1.51 - self.handle_message(message)
1.52 - finally:
1.53 - if new_user:
1.54 - request.user = user
1.55 + self.init_store()
1.56 + self.handle_message(message)
1.57
1.58 def handle_message(self, message):
1.59
1.60 @@ -213,7 +225,7 @@
1.61
1.62 # Accept any message whose sender was authenticated by the PGP method.
1.63
1.64 - if request.user and request.user.valid and request.user.auth_method in ("pgp", "pgp-overridden"):
1.65 + if request.user and request.user.valid and request.user.auth_method == "pgp":
1.66
1.67 # Handle the embedded message.
1.68
2.1 --- a/actions/PostMessage.py Fri Jan 31 19:00:21 2014 +0100
2.2 +++ b/actions/PostMessage.py Fri Jan 31 19:56:50 2014 +0100
2.3 @@ -20,6 +20,9 @@
2.4 "A posted message handler."
2.5
2.6 def handle_message_object(self, message):
2.7 + self.do_as_user(self.new_user, self._handle_message_object, [message])
2.8 +
2.9 + def _handle_message_object(self, message):
2.10
2.11 "Handle the given 'message' object."
2.12