From bcc63761bdc4c1604c9275a3c5cdf8a483ad5611 Mon Sep 17 00:00:00 2001
From: zhaoqingang <zhaoqg0118@163.com>
Date: 星期四, 06 二月 2025 16:37:09 +0800
Subject: [PATCH] TOKEN同步功能
---
app/service/auth.py | 45 ++++++++++++++++++++++++++++++++++-----------
1 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/app/service/auth.py b/app/service/auth.py
index 8c41fe9..8354200 100644
--- a/app/service/auth.py
+++ b/app/service/auth.py
@@ -1,5 +1,7 @@
+锘縤mport os.path
import re
import uuid
+import base64
from datetime import datetime, timedelta
from typing import Type
from uuid import uuid4
@@ -11,12 +13,16 @@
from Log import logger
from app.config.config import settings
-from app.config.const import RAGFLOW, BISHENG, DIFY
+from app.config.const import RAGFLOW, BISHENG, DIFY, USER_STATSU_DELETE, APP_SERVICE_PATH
from app.models import RoleModel, GroupModel, TokenModel
from app.models.user_model import UserModel, UserAppModel
# from app.service.ragflow import RagflowService
# from app.service.service_token import get_new_token
from app.service.v2.app_register import AppRegisterDao
+
+from cryptography.hazmat.backends import default_backend
+from cryptography.hazmat.primitives import serialization
+from cryptography.hazmat.primitives.asymmetric import padding
SECRET_KEY = settings.secret_key
ALGORITHM = "HS256"
@@ -34,7 +40,7 @@
def authenticate_user(db, username: str, password: str):
- user = db.query(UserModel).filter(UserModel.username == username).first()
+ user = db.query(UserModel).filter(UserModel.username == username, UserModel.status != USER_STATSU_DELETE).first()
if not user:
return False
if not verify_password(password, user.hashed_password):
@@ -62,7 +68,7 @@
def is_valid_password(password: str) -> bool:
- if len(password) <= 8:
+ if len(password) < 8:
return False
has_digit = re.search(r'[0-9]', password)
has_letter = re.search(r'[A-Za-z]', password)
@@ -77,23 +83,21 @@
try:
hashed_password = pwd_context.hash(password)
db_user = UserModel(username=username, hashed_password=hashed_password, email=email, sync_flag=sync_flag)
- pwd = db_user.encrypted_password(app_password)
- db_user.password = pwd
+ # pwd = db_user.encrypted_password(app_password)
+ # db_user.password = pwd
db_user.roles = [db.query(RoleModel).filter(RoleModel.role_type == 2).first()]
db_user.groups = [db.query(GroupModel).filter(GroupModel.group_type == 2).first()]
db.add(db_user)
db.commit()
db.refresh(db_user)
+ '''
user_id = db_user.id
for k, v in register_dict.items():
await UserAppDao(db).update_and_insert_data(v.get("name"), pwd, v.get("email"), user_id, str(v.get("id")), k)
-
+ '''
except Exception as e:
logger.error(e)
- # db.roolback()
- if user_id:
- db.query(UserModel).filter(UserModel.id == user_id).delete()
- db.commit
+ db.rollback()
return False
return sync_flag
@@ -196,6 +200,25 @@
return self.db.query(UserAppModel).filter_by(user_id=user_id).all()
-
+async def password_rsa(password):
+ with open(os.path.join(APP_SERVICE_PATH, "pom/private_key.pem"), "rb") as key_file:
+ private_key = serialization.load_pem_private_key(
+ key_file.read(),
+ password=None, # 濡傛灉绉侀挜鍔犲瘑锛岃鎻愪緵瀵嗙爜
+ backend=default_backend()
+ )
+ # Base64 瑙g爜
+ try:
+ # 瑙e瘑娑堟伅
+ ciphertext = base64.b64decode(password)
+ # 浣跨敤 PKCS#1 v1.5 濉厖瑙e瘑
+ plaintext = private_key.decrypt(
+ ciphertext,
+ padding.PKCS1v15() # 鏀逛负 PKCS#1 v1.5 濉厖
+ )
+ return plaintext.decode()
+ except Exception as e:
+ print(e)
+ return ""
--
Gitblit v1.8.0