Пример #1
0
    def update_users_table(self):
        """Add the quota col on the users table

        Update the users table for the instance who don't have this column
        """
        default_quota = Utils.humansize_to_bytes(self.settings.get("askomics", "quota"))

        query = '''
        ALTER TABLE users
        ADD quota INTEGER NOT NULL DEFAULT {}
        '''.format(default_quota)
        try:
            self.execute_sql_query(query)
        except Exception:
            pass
Пример #2
0
    def set_quota(self, quota, username):
        """Set a new quota to a user

        Parameters
        ----------
        quota : int
            New quota
        username : string
            The concerned username
        """
        database = Database(self.app, self.session)

        query = '''
        UPDATE users
        SET quota=?
        WHERE username=?
        '''

        database.execute_sql_query(query, (Utils.humansize_to_bytes(quota), username))
Пример #3
0
    def persist_user(self, inputs, ldap_login=False, return_password=False):
        """
        Persist user in the TS

        Parameters
        ----------
        inputs : dict
            User infos
        ldap_login : bool, optional
            If True, user is ldap

        Returns
        -------
        dict
            The user
        """
        database = Database(self.app, self.session)

        # Check if user is the first. if yes, set him admin
        if self.get_number_of_users() == 0:
            admin = True
            blocked = False

        else:
            admin = False
            blocked = self.settings.getboolean('askomics', 'default_locked_account')

        api_key = Utils.get_random_string(20) if "apikey" not in inputs else inputs["apikey"]

        query = '''
        INSERT INTO users VALUES(
            NULL,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            ?,
            NULL
        )
        '''

        salt = None
        sha512_pw = None
        email = None
        fname = None
        lname = None

        if not ldap_login:
            # Create a salt
            salt = Utils.get_random_string(20) if "salt" not in inputs else inputs["salt"]
            # Concat askomics_salt + user_password + salt
            salted_pw = self.settings.get('askomics', 'password_salt') + inputs['password'] + salt
            # hash
            sha512_pw = hashlib.sha512(salted_pw.encode('utf8')).hexdigest()

            email = inputs["email"]
            fname = inputs["fname"]
            lname = inputs["lname"]

        # Store user in db
        user_id = database.execute_sql_query(
            query, (ldap_login, fname, lname, inputs['username'],
                    email, sha512_pw, salt, api_key, admin, blocked, Utils.humansize_to_bytes(self.settings.get("askomics", "quota")), int(time.time())), True)

        user = {
            'id': user_id,
            'ldap': ldap_login,
            'fname': fname,
            'lname': lname,
            'username': inputs['username'],
            'email': email,
            'admin': admin,
            'blocked': blocked,
            'quota': Utils.humansize_to_bytes(self.settings.get("askomics", "quota")),
            'apikey': api_key,
            'galaxy': None
        }

        if return_password and not ldap_login:
            user["password"] = inputs["password"]

        # Return user infos
        return user