예제 #1
0
 def reset_access_credentials(self) -> (str, str):
     access_key = generate_random_string()[:64]
     secret_key = generate_random_string()[:64]
     secret_hash, secret_salt = generate_hash_and_salt(secret_key)
     self.access_key_id = access_key.decode()
     self.access_key_secret = secret_hash.decode()
     self.access_key_secret_salt = secret_salt.decode()
     self.save()
     return access_key.decode(), secret_key.decode()
예제 #2
0
 def reset_access_credentials(self):
     access_key = generate_random_string()[:64]
     secret_key = generate_random_string()[:64]
     secret_hash, secret_salt = generate_hash_and_salt(secret_key)
     self.access_key_id = access_key
     self.access_key_secret = secret_hash
     self.access_key_secret_salt = secret_salt
     self.save()
     return access_key, secret_key
def add_admin_user_if_not_exists(apps, schema_editor):
    Researcher = apps.get_model('database', 'Researcher')

    if Researcher.objects.count() == 0:
        access_key = generate_random_string()[:64]
        secret_key = generate_random_string()[:64]
        secret_hash, secret_salt = generate_hash_and_salt(secret_key)
        access_key_id = access_key
        access_key_secret = secret_hash
        access_key_secret_salt = secret_salt
        password, salt = generate_hash_and_salt("abc123")

        r = Researcher(username="******",
                       password=password,
                       salt=salt,
                       admin=True,
                       access_key_id=access_key_id,
                       access_key_secret=access_key_secret,
                       access_key_secret_salt=access_key_secret_salt)
        r.save()
예제 #4
0
 def create(cls, username, password):
     """ Creates a new Admin with provided password and user name."""
     password, salt = generate_hash_and_salt(password)
     new_admin = {
         ID_KEY: username,
         'password': password,
         'salt': salt,
         "system_admin": False,
         "access_key_id": None,
         "access_key_secret": None
     }
     return super(Admin, cls).create(new_admin)
예제 #5
0
    def generate(cls, researcher: Researcher, **kwargs) -> "ApiKey":
        """
        Create ApiKey with newly generated credentials credentials.
        """
        access_key = generate_random_string()[:64]
        secret_key = generate_random_string()[:64]
        secret_hash, secret_salt = generate_hash_and_salt(secret_key)

        api_key = cls.objects.create(
            access_key_id=access_key.decode(),
            access_key_secret=secret_hash.decode(),
            access_key_secret_salt=secret_salt.decode(),
            researcher=researcher,
            **kwargs,
        )
        api_key._access_key_secret_plaintext = secret_key.decode()
        return api_key
예제 #6
0
 def generate_hash_and_salt(self, password):
     return generate_hash_and_salt(password)
예제 #7
0
 def set_password(self, new_password):
     """Sets the instances password hash to match the provided password."""
     password, salt = generate_hash_and_salt(new_password)
     self['password'] = password
     self['salt'] = salt
     self.save()