def enforce(self, request): user_email = request.get('email', None) user_name = request.get('name', None) use_logged_in_user = request.get('use_logged_in_user', None) if use_logged_in_user: return MEMBERSHIP_ALLOWED if user_email is None: return MEMBERSHIP_ERROR # handle unsubscription requests/confirmation if self._is_unsubscribe(request): if self._is_confirm(request): if self.unsubscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.unsubscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.unsubscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: pin = generate_pin() self.mail_sender.user_unsubscribe_request(user_email, user_name, pin) self.unsubscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED # handle subscription requests/confirmation if self._is_confirm(request): # if there is an email on the subject, we should use that one # instead of the email address passed in # if the from address is different but they still have the correct # pin number in the subject for the other email address, we should # confirm the subscription user_email = self._get_email_for_pin(request, self.subscribe_pending_list) if self.subscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.subscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.subscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED pin = generate_pin() self.mail_sender.user_subscribe_request(user_email, user_name, pin) self.subscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED
def enforce(self, request): action = request.get('action') user = request.get('email') removals = ['remove_allowed_sender', 'unsubscribe'] if action is None or user is None: return MEMBERSHIP_ERROR email = self._get_email_from(user) if email is None or email == '' or not is_email(email) and action not in removals: return MEMBERSHIP_DENIED if action == 'add_allowed_sender': return MEMBERSHIP_ALLOWED elif action == 'subscribe': pin = generate_pin() self.mail_sender.user_subscribe_request(email, user, pin) self.subscribe_pending_list.add(email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED elif action == 'remove_allowed_sender': return MEMBERSHIP_ALLOWED elif action == 'unsubscribe': if email: # we might be unsubbing a bogus member self.mail_sender.user_unsubscribe_confirm(email, user) return MEMBERSHIP_ALLOWED
def enforce(self, request): action = request.get('action') user = request.get('email') removals = ['remove_allowed_sender', 'unsubscribe'] if action is None or user is None: return MEMBERSHIP_ERROR email = self._get_email_from(user) if email is None or email == '' or not is_email( email) and action not in removals: return MEMBERSHIP_DENIED if action == 'add_allowed_sender': return MEMBERSHIP_ALLOWED elif action == 'subscribe': pin = generate_pin() self.mail_sender.user_subscribe_request(email, user, pin) self.subscribe_pending_list.add(email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED elif action == 'remove_allowed_sender': return MEMBERSHIP_ALLOWED elif action == 'unsubscribe': if email: # we might be unsubbing a bogus member self.mail_sender.user_unsubscribe_confirm(email, user) return MEMBERSHIP_ALLOWED
def enforce(self, request): user_email = request.get('email') user_name = request.get('name') action = request.get('action','').lower() if user_email is None: return MEMBERSHIP_ERROR if action: self.sub_mod_pending_list.remove(user_email) if action == 'approve': self.mem_list.subscribe(user_email) self.mail_sender.user_welcome(user_email, user_name) elif action == 'discard': pass elif action == 'reject': self.mail_sender.user_sub_rejected(user_email, user_name, request.get('reject_reason')) return MODERATION_SUCCESSFUL # handle unsubscription requests/confirmation if self._is_unsubscribe(request): if self._is_confirm(request): if self.unsubscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.unsubscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.unsubscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: pin = generate_pin() self.mail_sender.user_unsubscribe_request(user_email, user_name, pin) self.unsubscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED # handle subscription requests/confirmation if self._is_confirm(request): if self.subscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.subscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.subscribe_pending_list.remove(user_email) if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED else: self.sub_mod_pending_list.add(user_email, user_name=user_name) self.mail_sender.user_sub_mod(user_email, user_name) self.mail_sender.manager_mod(user_email, user_name) return MEMBERSHIP_DEFERRED else: return MEMBERSHIP_DENIED else: if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED pin = generate_pin() self.mail_sender.user_subscribe_request(user_email, user_name, pin) self.subscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED
def enforce(self, request): user_email = request.get('email') user_name = request.get('name') action = request.get('action', '').lower() if user_email is None: return MEMBERSHIP_ERROR if action: self.sub_mod_pending_list.remove(user_email) if action == 'approve': self.mem_list.subscribe(user_email) self.mail_sender.user_welcome(user_email, user_name) elif action == 'discard': pass elif action == 'reject': self.mail_sender.user_sub_rejected( user_email, user_name, request.get('reject_reason')) return MODERATION_SUCCESSFUL # handle unsubscription requests/confirmation if self._is_unsubscribe(request): if self._is_confirm(request): if self.unsubscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.unsubscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.unsubscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: pin = generate_pin() self.mail_sender.user_unsubscribe_request( user_email, user_name, pin) self.unsubscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED # handle subscription requests/confirmation if self._is_confirm(request): if self.subscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.subscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.subscribe_pending_list.remove(user_email) if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED else: self.sub_mod_pending_list.add(user_email, user_name=user_name) self.mail_sender.user_sub_mod(user_email, user_name) self.mail_sender.manager_mod(user_email, user_name) return MEMBERSHIP_DEFERRED else: return MEMBERSHIP_DENIED else: if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED pin = generate_pin() self.mail_sender.user_subscribe_request(user_email, user_name, pin) self.subscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED
def enforce(self, request): user_email = request.get('email', None) user_name = request.get('name', None) use_logged_in_user = request.get('use_logged_in_user', None) if use_logged_in_user: return MEMBERSHIP_ALLOWED if user_email is None: return MEMBERSHIP_ERROR # handle unsubscription requests/confirmation if self._is_unsubscribe(request): if self._is_confirm(request): if self.unsubscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.unsubscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.unsubscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: pin = generate_pin() self.mail_sender.user_unsubscribe_request( user_email, user_name, pin) self.unsubscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED # handle subscription requests/confirmation if self._is_confirm(request): # if there is an email on the subject, we should use that one # instead of the email address passed in # if the from address is different but they still have the correct # pin number in the subject for the other email address, we should # confirm the subscription user_email = self._get_email_for_pin(request, self.subscribe_pending_list) if self.subscribe_pending_list.is_pending(user_email): if not self._check_pin(request, self.subscribe_pending_list): return MEMBERSHIP_PIN_MISMATCH self.subscribe_pending_list.remove(user_email) return MEMBERSHIP_ALLOWED else: return MEMBERSHIP_DENIED else: if self.mem_list.is_allowed_sender(user_email): return MEMBERSHIP_ALLOWED pin = generate_pin() self.mail_sender.user_subscribe_request(user_email, user_name, pin) self.subscribe_pending_list.add(user_email, subscriber=True, pin=pin) return MEMBERSHIP_DEFERRED