mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 01:10:23 +08:00
feat: LDAP 用户隐藏密码修改功能并应用默认配额
- /me API 返回 auth_source 字段 - 前端 Settings 页面对 LDAP 用户隐藏密码修改卡片 - LDAP 用户首次登录创建时使用系统默认配额 Close #98
This commit is contained in:
@@ -11,8 +11,9 @@ export interface Profile {
|
||||
used_usd: number
|
||||
total_usd?: number // 累积消费总额
|
||||
created_at: string
|
||||
updated_at: string
|
||||
updated_at?: string
|
||||
last_login_at?: string
|
||||
auth_source?: 'local' | 'ldap'
|
||||
preferences?: UserPreferences
|
||||
}
|
||||
|
||||
|
||||
@@ -69,8 +69,11 @@
|
||||
</form>
|
||||
</Card>
|
||||
|
||||
<!-- 修改密码 -->
|
||||
<Card class="p-6">
|
||||
<!-- 修改密码 (LDAP 用户不显示) -->
|
||||
<Card
|
||||
v-if="profile?.auth_source !== 'ldap'"
|
||||
class="p-6"
|
||||
>
|
||||
<h3 class="text-lg font-medium text-foreground mb-4">
|
||||
修改密码
|
||||
</h3>
|
||||
|
||||
@@ -536,6 +536,7 @@ class AuthCurrentUserAdapter(AuthenticatedApiAdapter):
|
||||
"allowed_models": user.allowed_models,
|
||||
"created_at": user.created_at.isoformat(),
|
||||
"last_login_at": user.last_login_at.isoformat() if user.last_login_at else None,
|
||||
"auth_source": user.auth_source.value,
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@ from sqlalchemy.orm import Session, joinedload
|
||||
from src.config import config
|
||||
from src.core.logger import logger
|
||||
from src.core.enums import AuthSource
|
||||
from src.services.system.config import SystemConfigService
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from src.models.database import ManagementToken
|
||||
@@ -317,6 +318,9 @@ class AuthService:
|
||||
username = f"{base_username}_ldap_{int(time.time())}{uuid.uuid4().hex[:4]}"
|
||||
logger.info(f"LDAP 用户名冲突,使用新用户名: {ldap_user['username']} -> {username}")
|
||||
|
||||
# 读取系统配置的默认配额
|
||||
default_quota = SystemConfigService.get_config(db, "default_user_quota_usd", default=10.0)
|
||||
|
||||
# 创建新用户
|
||||
user = User(
|
||||
email=email,
|
||||
@@ -328,6 +332,7 @@ class AuthService:
|
||||
role=UserRole.USER,
|
||||
is_active=True,
|
||||
last_login_at=datetime.now(timezone.utc),
|
||||
quota_usd=default_quota,
|
||||
)
|
||||
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user