Skip to content

Commit

Permalink
make better validation of role in moderation_log
Browse files Browse the repository at this point in the history
  • Loading branch information
rosset-nocpes committed Jul 8, 2024
1 parent a6eccc9 commit a134b76
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 28 deletions.
3 changes: 3 additions & 0 deletions app/errors.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,9 @@ class ErrorResponse(CustomModel):
"system": {
"bad-backup-token": ["Bad backup token", 401],
},
"moderation-log": {
"no-access": ["You do not have permission to access", 400]
},
}


Expand Down
12 changes: 12 additions & 0 deletions app/moderation/dependencies.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
from sqlalchemy.ext.asyncio import AsyncSession
from app.database import get_session
from app.dependencies import auth_required
from app.errors import Abort
from fastapi import Depends

from app.models.user.user import User

from .schemas import ModerationSearchArgs

from app.service import (
Expand All @@ -19,3 +22,12 @@ async def validate_moderation_search_args(
raise Abort("edit", "author-not-found")

return args


async def validate_moderation_role(
author: User = Depends(auth_required(optional=False)),
):
if author.role not in ["admin", "moderator"]:
raise Abort("moderation-log", "no-access")

return author
33 changes: 5 additions & 28 deletions app/moderation/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@
ModerationSearchArgs,
)

from .dependencies import validate_moderation_search_args
from .dependencies import (
validate_moderation_search_args,
validate_moderation_role,
)

from app.utils import (
pagination_dict,
Expand All @@ -37,10 +40,7 @@
async def moderation_log(
args: ModerationSearchArgs = Depends(validate_moderation_search_args),
session: AsyncSession = Depends(get_session),
# TODO: replace with role check
user: User = Depends(
auth_required(permissions=[constants.PERMISSION_EDIT_AUTO])
),
user: User = Depends(validate_moderation_role),
page: int = Depends(get_page),
size: int = Depends(get_size),
):
Expand All @@ -52,26 +52,3 @@ async def moderation_log(
"pagination": pagination_dict(total, page, limit),
"list": moderation.all(),
}


@router.get(
"/{username}/log",
response_model=ModerationPaginationResponse,
summary="User moderation log",
)
async def moderation_user_log(
session: AsyncSession = Depends(get_session),
user: User = Depends(get_user),
page: int = Depends(get_page),
size: int = Depends(get_size),
):
limit, offset = pagination(page, size)
total = await service.get_user_moderation_count(session, user.id)
moderation = await service.get_user_moderation(
session, user.id, limit, offset
)

return {
"pagination": pagination_dict(total, page, limit),
"list": moderation.all(),
}

0 comments on commit a134b76

Please sign in to comment.