mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-06-29 15:31:05 +08:00
Fix: admin client (#13699)
### What problem does this PR solve? Define a crypt function in admin directory, remove import from api.utils. And move requests-toolbelt to dependency. ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
@@ -11,13 +11,13 @@ dependencies = [
|
|||||||
"beartype>=0.20.0,<1.0.0",
|
"beartype>=0.20.0,<1.0.0",
|
||||||
"pycryptodomex>=3.10.0",
|
"pycryptodomex>=3.10.0",
|
||||||
"lark>=1.1.0",
|
"lark>=1.1.0",
|
||||||
|
"requests-toolbelt>=1.0.0",
|
||||||
]
|
]
|
||||||
|
|
||||||
[dependency-groups]
|
[dependency-groups]
|
||||||
test = [
|
test = [
|
||||||
"pytest>=8.3.5",
|
"pytest>=8.3.5",
|
||||||
"requests>=2.32.3",
|
"requests>=2.32.3",
|
||||||
"requests-toolbelt>=1.0.0",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[tool.setuptools]
|
[tool.setuptools]
|
||||||
|
|||||||
@@ -26,7 +26,19 @@ class AuthException(Exception):
|
|||||||
|
|
||||||
def encrypt_password(password_plain: str) -> str:
|
def encrypt_password(password_plain: str) -> str:
|
||||||
try:
|
try:
|
||||||
from api.utils.crypt import crypt
|
import base64
|
||||||
|
from Cryptodome.PublicKey import RSA
|
||||||
|
from Cryptodome.Cipher import PKCS1_v1_5 as Cipher_pkcs1_v1_5
|
||||||
|
def crypt(line):
|
||||||
|
"""
|
||||||
|
decrypt(crypt(input_string)) == base64(input_string), which frontend and ragflow_cli use.
|
||||||
|
"""
|
||||||
|
pub = "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArq9XTUSeYr2+N1h3Afl/z8Dse/2yD0ZGrKwx+EEEcdsBLca9Ynmx3nIB5obmLlSfmskLpBo0UACBmB5rEjBp2Q2f3AG3Hjd4B+gNCG6BDaawuDlgANIhGnaTLrIqWrrcm4EMzJOnAOI1fgzJRsOOUEfaS318Eq9OVO3apEyCCt0lOQK6PuksduOjVxtltDav+guVAA068NrPYmRNabVKRNLJpL8w4D44sfth5RvZ3q9t+6RTArpEtc5sh5ChzvqPOzKGMXW83C95TxmXqpbK6olN4RevSfVjEAgCydH6HN6OhtOQEcnrU97r9H0iZOWwbw3pVrZiUkuRD1R56Wzs2wIDAQAB\n-----END PUBLIC KEY-----"
|
||||||
|
rsa_key = RSA.importKey(pub)
|
||||||
|
cipher = Cipher_pkcs1_v1_5.new(rsa_key)
|
||||||
|
password_base64 = base64.b64encode(line.encode('utf-8')).decode("utf-8")
|
||||||
|
encrypted_password = cipher.encrypt(password_base64.encode())
|
||||||
|
return base64.b64encode(encrypted_password).decode('utf-8')
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
raise AuthException(
|
raise AuthException(
|
||||||
"Password encryption unavailable; install pycryptodomex (uv sync --python 3.12 --group test)."
|
"Password encryption unavailable; install pycryptodomex (uv sync --python 3.12 --group test)."
|
||||||
|
|||||||
Reference in New Issue
Block a user