You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.2 KiB
Python

from typing import List
from molten import Route, Include, HTTP_201, HTTP_202, HTTPError, HTTP_404
from casbin_api.schema import APIResponse
from casbin_api.error import EntityNotFound
from .model import User, AuthToken
from .manager import UserManager
def create_user(user: User, user_manager: UserManager) -> User:
_user = user_manager.create_user(user)
headers = {"Location": _user.href}
return HTTP_201, _user, headers
def get_user_by_id(user_id: int, user_manager: UserManager) -> User:
try:
_user = user_manager.get_user_by_id(user_id)
except EntityNotFound as err:
raise HTTPError(HTTP_404, APIResponse(status=404, message=err.message))
return _user
# Update user only if you are the user or you are admin
def update_user(user_id: int, user: User, user_manager: UserManager) -> User:
return user_manager.update_todo(user_id, user)
def login_user(user: User, user_manager: UserManager) -> AuthToken:
pass
auth_routes = Include(
"/auth",
[
Route("/login", login_user, method="POST"),
Route("/register", create_user, method="POST"),
Route("/profile/{user_id}", get_user_by_id, method="GET"),
Route("/profile/{user_id}", update_user, method="PUT"),
],
)