from fastapi.staticfiles import StaticFiles
from qrcode import QRCode
-from auth import create_access_token, validate_token
+from auth import create_access_token, get_auth, validate_token
from config import AuthType, config
from error_responses import (
invalid_title_response,
return HTMLResponse(content=html)
-@app.post("/api/notes", response_model=NoteModel)
-def post_note(data: NoteModel, _: str = Depends(validate_token)):
+@app.post(
+ "/api/notes",
+ dependencies=[Depends(get_auth(for_edit=True))],
+ response_model=NoteModel,
+)
+def post_note(data: NoteModel):
"""Create a new note."""
try:
note = Note(flatnotes, data.title, new=True)
return title_exists_response
-@app.get("/api/notes/{title}", response_model=NoteModel)
+@app.get(
+ "/api/notes/{title}",
+ dependencies=[Depends(get_auth(for_edit=False))],
+ response_model=NoteModel,
+)
def get_note(
title: str,
include_content: bool = True,
- _: str = Depends(validate_token),
):
"""Get a specific note."""
try:
return note_not_found_response
-@app.patch("/api/notes/{title}", response_model=NoteModel)
-def patch_note(
- title: str, new_data: NotePatchModel, _: str = Depends(validate_token)
-):
+@app.patch(
+ "/api/notes/{title}",
+ dependencies=[Depends(get_auth(for_edit=True))],
+ response_model=NoteModel,
+)
+def patch_note(title: str, new_data: NotePatchModel):
try:
note = Note(flatnotes, title)
if new_data.new_title is not None:
return note_not_found_response
-@app.delete("/api/notes/{title}")
-def delete_note(title: str, _: str = Depends(validate_token)):
+@app.delete(
+ "/api/notes/{title}", dependencies=[Depends(get_auth(for_edit=True))]
+)
+def delete_note(title: str):
try:
note = Note(flatnotes, title)
note.delete()
return note_not_found_response
-@app.get("/api/tags")
-def get_tags(_: str = Depends(validate_token)):
+@app.get(
+ "/api/tags",
+ dependencies=[Depends(get_auth(for_edit=False))],
+)
+def get_tags():
"""Get a list of all indexed tags."""
return flatnotes.get_tags()
-@app.get("/api/search", response_model=List[SearchResultModel])
+@app.get(
+ "/api/search",
+ dependencies=[Depends(get_auth(for_edit=False))],
+ response_model=List[SearchResultModel],
+)
def search(
term: str,
sort: Literal["score", "title", "lastModified"] = "score",
order: Literal["asc", "desc"] = "desc",
limit: int = None,
- _: str = Depends(validate_token),
):
"""Perform a full text search on all notes."""
if sort == "lastModified":