Skip to content

Commit b8d72a2

Browse files
committed
Forbid deleting admin user via api
1 parent 1e5e999 commit b8d72a2

File tree

3 files changed

+15
-43
lines changed

3 files changed

+15
-43
lines changed

src/dstack/_internal/server/migrations/versions/cc3912316bfd_add_usermodel_original_name_and_.py renamed to src/dstack/_internal/server/migrations/versions/06e977bc61c7_add_usermodel_deleted_and_original_name.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,39 @@
1-
"""Add UserModel.original_name and ProjectModel.original_name
1+
"""Add UserModel.deleted and original_name
22
3-
Revision ID: cc3912316bfd
4-
Revises: 965760bacf93
5-
Create Date: 2025-11-26 11:04:18.383458
3+
Revision ID: 06e977bc61c7
4+
Revises: 7d1ec2b920ac
5+
Create Date: 2025-11-26 11:43:34.825686
66
77
"""
88

99
import sqlalchemy as sa
1010
from alembic import op
1111

1212
# revision identifiers, used by Alembic.
13-
revision = "cc3912316bfd"
14-
down_revision = "965760bacf93"
13+
revision = "06e977bc61c7"
14+
down_revision = "7d1ec2b920ac"
1515
branch_labels = None
1616
depends_on = None
1717

1818

1919
def upgrade() -> None:
2020
# ### commands auto generated by Alembic - please adjust! ###
21-
with op.batch_alter_table("projects", schema=None) as batch_op:
22-
batch_op.add_column(sa.Column("original_name", sa.String(length=50), nullable=True))
23-
2421
with op.batch_alter_table("users", schema=None) as batch_op:
22+
batch_op.add_column(
23+
sa.Column("deleted", sa.Boolean(), server_default=sa.text("0"), nullable=False)
24+
)
2525
batch_op.add_column(sa.Column("original_name", sa.String(length=50), nullable=True))
2626

27+
with op.batch_alter_table("projects", schema=None) as batch_op:
28+
batch_op.add_column(sa.Column("original_name", sa.String(length=50), nullable=True))
2729
# ### end Alembic commands ###
2830

2931

3032
def downgrade() -> None:
3133
# ### commands auto generated by Alembic - please adjust! ###
3234
with op.batch_alter_table("users", schema=None) as batch_op:
3335
batch_op.drop_column("original_name")
36+
batch_op.drop_column("deleted")
3437

3538
with op.batch_alter_table("projects", schema=None) as batch_op:
3639
batch_op.drop_column("original_name")

src/dstack/_internal/server/migrations/versions/965760bacf93_add_usermodel_deleted.py

Lines changed: 0 additions & 34 deletions
This file was deleted.

src/dstack/_internal/server/services/users.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,9 @@ async def delete_users(
188188
user: UserModel,
189189
usernames: List[str],
190190
):
191+
if _ADMIN_USERNAME in usernames:
192+
raise ServerClientError("User 'admin' cannot be deleted")
193+
191194
res = await session.execute(
192195
select(UserModel)
193196
.where(

0 commit comments

Comments
 (0)