示例#1
0
    def __init__(self,
                 username=None,
                 email=None,
                 passhash=None,
                 owner=None,
                 location=None,
                 url=None,
                 profilepic=None,
                 name=None,
                 isOrg=False,
                 active=True,
                 id=None,
                 onlogin=False,
                 about=None,
                 tid=None,
                 ip=None):

        logger = logging.getLogger('Avispa')
        self.lggr = AvispaLoggerAdapter(logger, {'tid': tid, 'ip': ip})

        self.lggr.debug('__init__()')

        self.username = username
        self.email = email
        self.location = location
        self.passhash = passhash
        self.about = about
        self.url = url
        self.profilepic = profilepic
        self.name = name
        self.isOrg = isOrg
        self.active = active
        self.isAdmin = False
        self.id = None
        self.onlogin = onlogin

        if owner:
            self.owner = owner
        else:
            self.owner = username

        if isinstance(self.location, basestring):
            self.location = self.location.lower()

        if isinstance(self.email, basestring):
            self.email = self.email.lower()

        if isinstance(self.username, basestring):
            self.usernme = self.username.lower()

        self.ATM = AuthModel()
 def __init__(self, app):
     self.app = app
     self.state = None
     self.view = AuthForm()
     self.view.setOnClose(self.onClose)
     self.view.onLoginButtonClick(self.tryAuth)
     self.model = AuthModel()
     self.model.message.addCallback(self.messageFromModel)
     self.view.show()
class AuthController(object):

    def __init__(self, app):
        self.app = app
        self.state = None
        self.view = AuthForm()
        self.view.setOnClose(self.onClose)
        self.view.onLoginButtonClick(self.tryAuth)
        self.model = AuthModel()
        self.model.message.addCallback(self.messageFromModel)
        self.view.show()

    def onClose(self):
        self.app.quit()
        print 'quit'
        self.view.destroy()

    def messageFromModel(self, message):
        result = None
        if not (message is None):
            self.view.showMessage(message, self.state)
            self.model.message.set(None)
            self.model.state = None
            result = True
        return result

    def tryAuth(self):
        self.state = "Error"
        login = self.view.getLogin()
        password = self.view.getPassword()
        user = self.model.login(login, password)
        if not (user is None):
            is_admin = user.is_admin
            self.state = "Success"
            self.d = dc.DataController(self.logout)
            self.d.openConnection(is_admin)
            self.view.hide()
        # self.view.setPassword("")
        # self.state = None
    def logout(self):
        AuthController(self.app)
示例#4
0
class User(UserMixin):
    def __init__(self,
                 username=None,
                 email=None,
                 passhash=None,
                 owner=None,
                 location=None,
                 url=None,
                 profilepic=None,
                 name=None,
                 isOrg=False,
                 active=True,
                 id=None,
                 onlogin=False,
                 about=None,
                 tid=None,
                 ip=None):

        logger = logging.getLogger('Avispa')
        self.lggr = AvispaLoggerAdapter(logger, {'tid': tid, 'ip': ip})

        self.lggr.debug('__init__()')

        self.username = username
        self.email = email
        self.location = location
        self.passhash = passhash
        self.about = about
        self.url = url
        self.profilepic = profilepic
        self.name = name
        self.isOrg = isOrg
        self.active = active
        self.isAdmin = False
        self.id = None
        self.onlogin = onlogin

        if owner:
            self.owner = owner
        else:
            self.owner = username

        if isinstance(self.location, basestring):
            self.location = self.location.lower()

        if isinstance(self.email, basestring):
            self.email = self.email.lower()

        if isinstance(self.username, basestring):
            self.usernme = self.username.lower()

        self.ATM = AuthModel()

    def set_user(self):

        user = {}
        # Defaults coming via self

        user['username'] = self.username
        user['email'] = self.email
        user['location'] = self.location
        user['owner'] = self.owner
        user['location'] = self.location
        user['url'] = self.url
        user['profilepic'] = self.profilepic
        user['name'] = self.name
        user['passhash'] = self.passhash
        user['onlogin'] = self.onlogin
        user['about'] = self.about

        self.lggr.info(user)

        if not self.isOrg:
            self.lggr.info('is an Org')
            #You are registering a regular User
            if self.ATM.saas_create_user(user):
                self.lggr.info("new user id = %s " % user['username'])
                return user['username']
            else:
                return False
        else:
            self.lggr.info('is NOT an Org')
            #You are registering an Organization
            if self.ATM.saas_create_orguser(user):
                self.lggr.info("new organization id = %s " % user['username'])
                return user['username']
            else:
                return False

    def set_password_key(self, key):

        self.lggr.info('set_password_key:')
        self.lggr.info(self.id)

        return self.ATM.saas_create_password_key(self.id, key)

    def set_password(self, passhash):

        self.lggr.info('set_password:'******'value']['email']
                self.location = dbUser['value']['location']
                self.active = dbUser['value']['is_active']
                self.password = dbUser['value']['passhash']
                self.id = dbUser['value']['_id']
                return self
            else:
                return None
        except:
            self.lggr.error("Notice: UnExpected error :",
                            sys.exc_info()[0],
                            sys.exc_info()[1])
            self.lggr.error("there was an error")
            return None

    def get_user(self):

        #raise Exception ('stop here')

        try:

            if self.email:
                self.lggr.debug('self.email:' + self.email)
                dbUser = self.ATM.userdb_get_user_by_email(self.email)
            elif self.username:
                self.lggr.info('START AUTHENTICATION:' + self.username)
                dbUser = self.ATM.userdb_get_user_by_handle(self.username)
            else:
                return None

            if dbUser:

                self.lggr.info("END AUTHENTICATION:%s" %
                               dbUser['value']['name'])

                self.name = dbUser['value']['name']
                self.email = dbUser['value']['email']
                self.url = dbUser['value']['url']
                self.profilepic = dbUser['value']['profilepic']
                self.location = dbUser['value']['location']
                self.about = dbUser['value']['about']
                self.onlogin = dbUser['value']['onlogin']
                self.active = dbUser['value']['is_active']
                self.password = dbUser['value']['passhash']
                self.id = dbUser['value']['_id']
                return self
            else:
                self.lggr.error('User: not found')
                return None
        except (KeyError):
            self.lggr.error("Notice: UnExpected error :",
                            sys.exc_info()[0],
                            sys.exc_info()[1])
            self.lggr.error(
                "there was an error, we need to repair the user_document")

            preconditions = [
                'name', 'email', 'url', 'profilepic', 'location', 'about',
                'onlogin'
            ]
            repaired = False
            for element_to_add in preconditions:
                MAM = MainModel()
                if MAM.repair_user_doc(element_to_add, dbUser['value']['_id']):
                    repaired = True
                    self.lggr.info('Repaired ' + element_to_add + '. ')
                    #flash('Repaired '+element_to_add+'. ')

            #Let's try again
            if repaired:

                if self.email:
                    dbUser = self.ATM.userdb_get_user_by_email(self.email)
                elif self.username:
                    dbUser = self.ATM.userdb_get_user_by_handle(self.username)

                if dbUser:

                    self.name = dbUser['value']['name']
                    self.email = dbUser['value']['email']
                    self.url = dbUser['value']['url']
                    self.profilepic = dbUser['value']['profilepic']
                    self.location = dbUser['value']['location']
                    self.about = dbUser['value']['about']
                    self.active = dbUser['value']['is_active']
                    self.password = dbUser['value']['passhash']
                    self.id = dbUser['value']['_id']
                    return self
                else:
                    return False

            else:
                return False

    def update_user_profile(self, request):

        dbUser = self.ATM.userdb_get_user_by_handle(self.username)
        changes = {}

        if dbUser:
            if request.form.get('profilepic') != dbUser['value']['profilepic']:
                self.lggr.info('profilepic changed!')
                changes['profilepic'] = request.form.get('profilepic')

            if request.form.get('name') != dbUser['value']['name']:
                self.lggr.info('name changed!')
                changes['name'] = request.form.get('name')
                mp_change = True

            if request.form.get('url') != dbUser['value']['url']:
                self.lggr.info('url changed!')
                changes['url'] = request.form.get('url')

            if request.form.get('location') != dbUser['value']['location']:
                self.lggr.info('location changed!')
                changes['location'] = request.form.get('location')

            if request.form.get('about') != dbUser['value']['about']:
                self.lggr.info('about changed!')
                changes['about'] = request.form.get('about')

            if request.form.get('onlogin') != dbUser['value']['onlogin']:
                self.lggr.info('onlogin changed!')
                changes['onlogin'] = request.form.get('onlogin')

        return self.ATM.saas_update_user_profile(self.username, changes)

    def is_valid_password_key(self, email, key):

        try:
            #self.lggr.info('flag1')
            dbUser = self.ATM.userdb_get_user_by_email(email)
            #self.lggr.info('flag2')
            #self.lggr.info(dbUser)
            if dbUser['value']['new_password_key'] == key:
                return True
            else:
                return False
        except:
            self.lggr.error("Notice: UnExpected error :",
                            sys.exc_info()[0],
                            sys.exc_info()[1])
            self.lggr.error("There was an error validating the Key")
            return False

    def is_active(self):
        return self.active

    def is_authenticated(self):
        return True

    def is_anonymous(self):
        return False