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()
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()
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)
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
def generate_hash_and_salt(self, password): return generate_hash_and_salt(password)
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()