mirror of
https://github.com/fromchat-messenger/web.git
synced 2026-09-22 19:15:08 +03:00
Fix everything
This commit is contained in:
@@ -2,6 +2,7 @@ from datetime import datetime
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from routes.messaging import convert_message
|
||||
from dependencies import get_current_user, get_db
|
||||
from models import LoginRequest, RegisterRequest, User
|
||||
from utils import create_token, get_password_hash, verify_password
|
||||
@@ -9,11 +10,20 @@ from validation import is_valid_password, is_valid_username
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
def convert_user(user: User) -> dict:
|
||||
return {
|
||||
"id": user.id,
|
||||
"created_at": user.created_at.isoformat(),
|
||||
"last_seen": user.last_seen.isoformat(),
|
||||
"online": user.online,
|
||||
"username": user.username
|
||||
}
|
||||
|
||||
@router.get("/check_auth")
|
||||
def check_auth(current_user: dict = Depends(get_current_user)):
|
||||
def check_auth(current_user: User = Depends(get_current_user)):
|
||||
return {
|
||||
"authenticated": True,
|
||||
"username": current_user["username"]
|
||||
"username": current_user.username
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +47,7 @@ def login(request: LoginRequest, db: Session = Depends(get_db)):
|
||||
"status": "success",
|
||||
"message": "Login successful",
|
||||
"token": token,
|
||||
"username": user.username
|
||||
"user": convert_user(user)
|
||||
}
|
||||
|
||||
|
||||
@@ -92,14 +102,12 @@ def register(request: RegisterRequest, db: Session = Depends(get_db)):
|
||||
|
||||
@router.get("/logout")
|
||||
def logout(
|
||||
current_user: dict = Depends(get_current_user),
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
user = db.query(User).filter(User.id == current_user["user_id"]).first()
|
||||
if user:
|
||||
user.online = False
|
||||
user.last_seen = datetime.now()
|
||||
db.commit()
|
||||
current_user.online = False
|
||||
current_user.last_seen = datetime.now()
|
||||
db.commit()
|
||||
|
||||
return {
|
||||
"status": "success",
|
||||
|
||||
+11
-12
@@ -4,34 +4,33 @@ from fastapi import APIRouter, Depends, HTTPException, WebSocket, WebSocketDisco
|
||||
from fastapi.security import HTTPAuthorizationCredentials
|
||||
from sqlalchemy.orm import Session
|
||||
from dependencies import get_current_user, get_db
|
||||
from models import Message, SendMessageRequest
|
||||
from models import Message, SendMessageRequest, User
|
||||
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
def convert_message(msg: Message, current_user: dict) -> dict:
|
||||
def convert_message(msg: Message) -> dict:
|
||||
return {
|
||||
"id": msg.id,
|
||||
"content": msg.content,
|
||||
"timestamp": msg.timestamp.isoformat(),
|
||||
"is_author": msg.user_id == current_user["user_id"],
|
||||
"is_read": msg.is_read,
|
||||
"username": msg.author.username
|
||||
}
|
||||
|
||||
async def get_messages_inner(current_user: dict, db: Session):
|
||||
async def get_messages_inner(db: Session):
|
||||
messages = db.query(Message).order_by(Message.timestamp.asc()).all()
|
||||
|
||||
messages_data = []
|
||||
for msg in messages:
|
||||
messages_data.append(convert_message(msg, current_user))
|
||||
messages_data.append(convert_message(msg))
|
||||
|
||||
return {
|
||||
"status": "success",
|
||||
"messages": messages_data
|
||||
}
|
||||
|
||||
async def send_message_inner(request: SendMessageRequest, current_user: dict, db: Session):
|
||||
async def send_message_inner(request: SendMessageRequest, current_user: User, db: Session):
|
||||
if not request.content.strip():
|
||||
raise HTTPException(
|
||||
status_code=400,
|
||||
@@ -40,7 +39,7 @@ async def send_message_inner(request: SendMessageRequest, current_user: dict, db
|
||||
|
||||
new_message = Message(
|
||||
content=request.content.strip(),
|
||||
user_id=current_user["user_id"],
|
||||
user_id=current_user.id,
|
||||
timestamp=datetime.now()
|
||||
)
|
||||
|
||||
@@ -48,12 +47,12 @@ async def send_message_inner(request: SendMessageRequest, current_user: dict, db
|
||||
db.commit()
|
||||
db.refresh(new_message)
|
||||
|
||||
return {"status": "success", "message": convert_message(new_message, current_user)}
|
||||
return {"status": "success", "message": convert_message(new_message)}
|
||||
|
||||
@router.post("/send_message")
|
||||
async def send_message(
|
||||
request: SendMessageRequest,
|
||||
current_user: dict = Depends(get_current_user),
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
return await send_message_inner(request, current_user, db)
|
||||
@@ -61,10 +60,10 @@ async def send_message(
|
||||
|
||||
@router.get("/get_messages")
|
||||
async def get_messages(
|
||||
current_user: dict = Depends(get_current_user),
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
return await get_messages_inner(current_user, db)
|
||||
return await get_messages_inner(db)
|
||||
|
||||
|
||||
class MessaggingSocketManager:
|
||||
@@ -79,7 +78,7 @@ class MessaggingSocketManager:
|
||||
data = await websocket.receive_json()
|
||||
type = data["type"]
|
||||
|
||||
def get_current_user_inner() -> dict | None:
|
||||
def get_current_user_inner() -> User | None:
|
||||
if data["credentials"]:
|
||||
return get_current_user(
|
||||
HTTPAuthorizationCredentials(
|
||||
|
||||
Reference in New Issue
Block a user