Change drone.yml
This commit is contained in:
@@ -445,9 +445,11 @@ async def delete_user(username: str, user: dict = Depends(get_current_user)):
|
||||
if username not in users:
|
||||
raise HTTPException(404, "Пользователь не найден")
|
||||
|
||||
# Нельзя удалить другого владельца
|
||||
# Проверяем, что не удаляем последнего владельца
|
||||
if users[username]["role"] == "owner":
|
||||
raise HTTPException(400, "Нельзя удалить владельца")
|
||||
owners_count = sum(1 for u in users.values() if u.get("role") == "owner")
|
||||
if owners_count <= 1:
|
||||
raise HTTPException(400, "Нельзя удалить последнего владельца")
|
||||
|
||||
del users[username]
|
||||
save_users(users)
|
||||
@@ -1672,11 +1674,8 @@ async def change_user_role(username: str, role_data: RoleChange, current_user: d
|
||||
if role_data.role not in valid_roles:
|
||||
raise HTTPException(status_code=400, detail=f"Неверная роль")
|
||||
|
||||
# Если назначается новый owner, текущий owner становится admin
|
||||
if role_data.role == "owner":
|
||||
for user in users.values():
|
||||
if user.get("role") == "owner":
|
||||
user["role"] = "admin"
|
||||
# Разрешаем несколько владельцев (убрано ограничение на одного)
|
||||
# Теперь можно назначить несколько пользователей с ролью owner
|
||||
|
||||
old_role = users[username].get("role", "user")
|
||||
users[username]["role"] = role_data.role
|
||||
@@ -1733,8 +1732,11 @@ async def ban_user(username: str, ban_data: BanRequest, current_user: dict = Dep
|
||||
if username == current_user.get("username"):
|
||||
raise HTTPException(status_code=400, detail="Нельзя заблокировать самого себя")
|
||||
|
||||
# Проверяем, что не блокируем последнего владельца
|
||||
if users[username].get("role") == "owner":
|
||||
raise HTTPException(status_code=400, detail="Нельзя заблокировать владельца")
|
||||
owners_count = sum(1 for u in users.values() if u.get("role") == "owner")
|
||||
if owners_count <= 1:
|
||||
raise HTTPException(status_code=400, detail="Нельзя заблокировать последнего владельца. Должен остаться хотя бы один владелец.")
|
||||
|
||||
users[username]["role"] = "banned"
|
||||
users[username]["permissions"] = {
|
||||
@@ -1786,8 +1788,11 @@ async def delete_user(username: str, current_user: dict = Depends(get_current_us
|
||||
if username == current_user.get("username"):
|
||||
raise HTTPException(status_code=400, detail="Нельзя удалить самого себя")
|
||||
|
||||
# Проверяем, что не удаляем последнего владельца
|
||||
if users[username].get("role") == "owner":
|
||||
raise HTTPException(status_code=400, detail="Нельзя удалить владельца")
|
||||
owners_count = sum(1 for u in users.values() if u.get("role") == "owner")
|
||||
if owners_count <= 1:
|
||||
raise HTTPException(status_code=400, detail="Нельзя удалить последнего владельца. Должен остаться хотя бы один владелец.")
|
||||
|
||||
del users[username]
|
||||
save_users_dict(users)
|
||||
|
||||
@@ -1,74 +1 @@
|
||||
{
|
||||
"Root": {
|
||||
"username": "Root",
|
||||
"password": "$2b$12$PAaomoUWn3Ip5ov.S/uYPeTIRiDMq7DbA57ahyYQnw3QHT2zuYMlG",
|
||||
"role": "owner",
|
||||
"servers": [],
|
||||
"permissions": {
|
||||
"manage_users": true,
|
||||
"manage_roles": true,
|
||||
"manage_servers": true,
|
||||
"manage_tickets": true,
|
||||
"manage_files": true,
|
||||
"delete_users": true,
|
||||
"view_all_resources": true
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
}
|
||||
},
|
||||
"MihailPrud": {
|
||||
"username": "MihailPrud",
|
||||
"password": "$2b$12$GfbQN4scE.b.mtUHofWWE.Dn1tQpT1zwLAxeICv90sHP4zGv0dc2G",
|
||||
"role": "user",
|
||||
"servers": [
|
||||
"test",
|
||||
"nya"
|
||||
],
|
||||
"permissions": {
|
||||
"manage_users": false,
|
||||
"manage_roles": false,
|
||||
"manage_servers": true,
|
||||
"manage_tickets": true,
|
||||
"manage_files": true,
|
||||
"delete_users": false,
|
||||
"view_all_resources": false
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [
|
||||
"test",
|
||||
"nya"
|
||||
],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
}
|
||||
},
|
||||
"arkonsad": {
|
||||
"username": "arkonsad",
|
||||
"password": "$2b$12$z.AYkfa/MlTYFd9rLNfBmu9JHOFKUe8YdddnqCmRqAxc7vGQeo392",
|
||||
"role": "user",
|
||||
"servers": [
|
||||
"123",
|
||||
"sdfsdf"
|
||||
],
|
||||
"permissions": {
|
||||
"manage_users": false,
|
||||
"manage_roles": false,
|
||||
"manage_servers": true,
|
||||
"manage_tickets": true,
|
||||
"manage_files": true,
|
||||
"delete_users": false,
|
||||
"view_all_resources": false
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [
|
||||
"123",
|
||||
"sdfsdf"
|
||||
],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
}
|
||||
}
|
||||
}
|
||||
{}
|
||||
75
backend/users.json1
Normal file
75
backend/users.json1
Normal file
@@ -0,0 +1,75 @@
|
||||
{
|
||||
"Root": {
|
||||
"username": "Root",
|
||||
"password": "$2b$12$PAaomoUWn3Ip5ov.S/uYPeTIRiDMq7DbA57ahyYQnw3QHT2zuYMlG",
|
||||
"role": "owner",
|
||||
"servers": [],
|
||||
"permissions": {
|
||||
"manage_users": true,
|
||||
"manage_roles": true,
|
||||
"manage_servers": true,
|
||||
"manage_tickets": true,
|
||||
"manage_files": true,
|
||||
"delete_users": true,
|
||||
"view_all_resources": true
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
}
|
||||
},
|
||||
"MihailPrud": {
|
||||
"username": "MihailPrud",
|
||||
"password": "$2b$12$GfbQN4scE.b.mtUHofWWE.Dn1tQpT1zwLAxeICv90sHP4zGv0dc2G",
|
||||
"role": "owner",
|
||||
"servers": [
|
||||
"test",
|
||||
"nya"
|
||||
],
|
||||
"permissions": {
|
||||
"manage_users": true,
|
||||
"manage_roles": true,
|
||||
"manage_servers": true,
|
||||
"manage_tickets": true,
|
||||
"manage_files": true,
|
||||
"delete_users": true,
|
||||
"view_all_resources": true
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [
|
||||
"test",
|
||||
"nya"
|
||||
],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
}
|
||||
},
|
||||
"arkonsad": {
|
||||
"username": "arkonsad",
|
||||
"password": "$2b$12$z.AYkfa/MlTYFd9rLNfBmu9JHOFKUe8YdddnqCmRqAxc7vGQeo392",
|
||||
"role": "banned",
|
||||
"servers": [
|
||||
"123",
|
||||
"sdfsdf"
|
||||
],
|
||||
"permissions": {
|
||||
"manage_users": false,
|
||||
"manage_roles": false,
|
||||
"manage_servers": false,
|
||||
"manage_tickets": false,
|
||||
"manage_files": false,
|
||||
"delete_users": false,
|
||||
"view_all_resources": false
|
||||
},
|
||||
"resource_access": {
|
||||
"servers": [
|
||||
"123",
|
||||
"sdfsdf"
|
||||
],
|
||||
"tickets": [],
|
||||
"files": []
|
||||
},
|
||||
"ban_reason": "Заблокирован администратором"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user