Skip to content

Commit

Permalink
Fixes #102: Защитить ручки Lecturer/Photo (#107)
Browse files Browse the repository at this point in the history
* Lecturer Photo Security

* Makefile

* Comment deprication

* Style
  • Loading branch information
dyakovri authored Apr 24, 2024
1 parent 8976081 commit 8fffb14
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 5 deletions.
2 changes: 1 addition & 1 deletion calendar_backend/routes/lecturer/comment.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


settings = get_settings()
router = APIRouter(prefix="/lecturer/{lecturer_id}", tags=["Lecturer: Comment"])
router = APIRouter(prefix="/lecturer/{lecturer_id}", tags=["Lecturer: Comment"], deprecated=True)


@router.post("/comment/", response_model=CommentLecturer)
Expand Down
2 changes: 1 addition & 1 deletion calendar_backend/routes/lecturer/comment_review.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from calendar_backend.routes.models import CommentLecturer


router = APIRouter(prefix="/lecturer/{lecturer_id}/comment", tags=["Lecturer: Comment Review"])
router = APIRouter(prefix="/lecturer/{lecturer_id}/comment", tags=["Lecturer: Comment Review"], deprecated=True)


@router.get("/review/", response_model=list[CommentLecturer])
Expand Down
15 changes: 12 additions & 3 deletions calendar_backend/routes/lecturer/photo.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from fastapi import APIRouter, File, UploadFile
from auth_lib.fastapi import UnionAuth
from fastapi import APIRouter, Depends, File, UploadFile
from fastapi_sqlalchemy import db

from calendar_backend.exceptions import ObjectNotFound
Expand All @@ -14,7 +15,11 @@


@router.post("/photo", response_model=Photo)
async def upload_photo(lecturer_id: int, photo: UploadFile = File(...)) -> Photo:
async def upload_photo(
lecturer_id: int,
photo: UploadFile = File(...),
_=Depends(UnionAuth(scopes=["timetable.lecturer.photo.create"])),
) -> Photo:
"""Загрузить фотографию преподавателя из локального файла
Пример загрузки файла на питоне
Expand Down Expand Up @@ -50,7 +55,11 @@ async def get_lecturer_photos(lecturer_id: int, limit: int = 10, offset: int = 0


@router.delete("/photo/{id}", response_model=None)
async def delete_photo(id: int, lecturer_id: int) -> None:
async def delete_photo(
id: int,
lecturer_id: int,
_=Depends(UnionAuth(scopes=["timetable.lecturer.photo.delete"])),
) -> None:
photo = DbPhoto.get(id, only_approved=False, session=db.session)
if photo.lecturer_id != lecturer_id:
raise ObjectNotFound(DbPhoto, id)
Expand Down

0 comments on commit 8fffb14

Please sign in to comment.