From 7b3dbde8bd89ca2c576a506bb3ef32bac550e8bc Mon Sep 17 00:00:00 2001 From: Midas Date: Thu, 23 Jul 2026 09:21:21 +0200 Subject: [PATCH] orm/users: replace removed stdlib crypt/legacycrypt with passlib --- orm/users.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/orm/users.py b/orm/users.py index 0e5d7ec..684ca12 100644 --- a/orm/users.py +++ b/orm/users.py @@ -16,11 +16,7 @@ from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.orm import column_property, relationship, selectinload, validates -try: - # python 3.13 - import legacycrypt as crypt -except ImportError: - import crypt as crypt +from passlib.hash import sha512_crypt, bcrypt import json import sys @@ -368,13 +364,17 @@ def password(self): def password(self, pw): # On OpenBSD only blowfish is supported if sys.platform.startswith("openbsd"): - _method = crypt.METHOD_BLOWFISH + self._password = bcrypt.hash(pw) else: - _method = crypt.METHOD_SHA512 - self._password = crypt.crypt(pw, crypt.mksalt(_method)) + self._password = sha512_crypt.hash(pw) def chkPw(self, pw): - return crypt.crypt(pw, self.password) == self.password + try: + if self.password.startswith(("$2a$", "$2b$", "$2y$")): + return bcrypt.verify(pw, self.password) + return sha512_crypt.verify(pw, self.password) + except ValueError: + return False @property def propmap_id(self):