def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) # Hack to ensure that account syncs get restarted if they were stopped # because of e.g. invalid credentials and the user re-auths. # TODO(emfree): remove after status overhaul. if account.sync_state != 'running': account.sync_state = None return account
def create_account(self, email_address, response): # This method assumes that the existence of an account for the # provider and email_address has been checked by the caller; # callers may have different methods of performing the check # (redwood auth versus get_account()) namespace = Namespace() account = GenericAccount(namespace=namespace) # The server endpoints can ONLY be set at account creation and # CANNOT be subsequently changed in order to prevent MITM attacks. account.provider = self.provider_name if self.provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) account.create_emailed_events_calendar() # Shim for back-compatability with legacy auth # The old API does NOT send these but authentication now uses them # so set them (included here, set in update_account()). for username in ['imap_username', 'smtp_username']: if username not in response: response[username] = email_address for password in ['imap_password', 'smtp_password']: if password not in response: response[password] = response['password'] return self.update_account(account, response)
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] if response.get('name'): account.name = response['name'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) # Ensure account has sync enabled after authing. account.enable_sync() return account
def add_generic_imap_account(db_session, email_address='*****@*****.**'): import platform from inbox.models.backends.generic import GenericAccount from inbox.models import Namespace account = GenericAccount(email_address=email_address, sync_host=platform.node(), provider='custom') account.imap_endpoint = ('imap.custom.com', 993) account.smtp_endpoint = ('smtp.custom.com', 587) account.imap_password = '******' account.smtp_password = '******' account.namespace = Namespace() db_session.add(account) db_session.commit() return account
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by( email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response['email'] account.password = response['password'] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == 'custom': account.imap_endpoint = (response['imap_server_host'], response['imap_server_port']) account.smtp_endpoint = (response['smtp_server_host'], response['smtp_server_port']) return account
def create_account(self, db_session, email_address, response): try: account = db_session.query(GenericAccount).filter_by(email_address=email_address).one() except sqlalchemy.orm.exc.NoResultFound: namespace = Namespace() account = GenericAccount(namespace=namespace) account.email_address = response["email"] if response.get("name"): account.name = response["name"] account.password = response["password"] account.date = datetime.datetime.utcnow() provider_name = self.provider_name account.provider = provider_name if provider_name == "custom": account.imap_endpoint = (response["imap_server_host"], response["imap_server_port"]) account.smtp_endpoint = (response["smtp_server_host"], response["smtp_server_port"]) # Ensure account has sync enabled after authing. account.enable_sync() return account