dev@locazia: closer to finish autorization

This commit is contained in:
user 2024-02-24 12:28:25 +03:00
parent 0d83eaeb91
commit a0489a7383
7 changed files with 34 additions and 3 deletions

View File

@ -11,13 +11,17 @@ app.register_middleware(attach_user_to_request, "request")
app.register_middleware(close_db_session, "response")
from app.api.routes._index import s_index
from app.api.routes._system import s_api_system_version
from app.api.routes.auth import s_api_v1_auth_twa
from app.api.routes.tonconnect import s_api_tonconnect_manifest
from app.api.routes.node_storage import s_api_v1_storage_post, s_api_v1_storage_get
from app.api.routes.account import s_api_v1_account_get
from app.api.routes.custodial import s_api_v1_custodial_upload_content
app.add_route(s_index, "/")
app.add_route(s_api_system_version, "/api/system.version", methods=["GET", "OPTIONS"])
app.add_route(s_api_tonconnect_manifest, "/api/tonconnect-manifest.json")
app.add_route(s_api_v1_auth_twa, "/api/v1/auth.twa", methods=["POST", "OPTIONS"])
@ -25,6 +29,8 @@ app.add_route(s_api_v1_auth_twa, "/api/v1/auth.twa", methods=["POST", "OPTIONS"]
app.add_route(s_api_v1_storage_post, "/api/v1/storage", methods=["POST", "OPTIONS"])
app.add_route(s_api_v1_storage_get, "/api/v1/storage/<file_hash>", methods=["GET", "OPTIONS"])
app.add_route(s_api_v1_account_get, "/api/v1/account", methods=["GET", "OPTIONS"])
app.add_route(s_api_v1_custodial_upload_content, "/api/v1/custodial.uploadContent", methods=["POST", "OPTIONS"])

View File

@ -55,6 +55,8 @@ async def try_authorization(request):
async def attach_user_to_request(request):
request.ctx.user = None
request.ctx.user_key = None
request.ctx.db_session = Session()
await try_authorization(request)

View File

@ -4,4 +4,3 @@ from sanic import response
async def s_index(request):
return response.text("OK")

16
app/api/routes/_system.py Normal file
View File

@ -0,0 +1,16 @@
from sanic import response
import subprocess
def get_git_info():
branch_name = subprocess.check_output(["git", "branch", "--show-current"]).decode('utf-8').strip()
commit_hash = subprocess.check_output(["git", "rev-parse", "HEAD"]).decode('utf-8').strip()
return branch_name, commit_hash
async def s_api_system_version(request):
branch_name, commit_hash = get_git_info()
return response.json({
"codebase_hash": commit_hash,
"codebase_branch": branch_name,
})

View File

@ -0,0 +1,8 @@
from sanic import response
async def s_api_v1_account_get(request):
if not request.ctx.user:
return response.json({"error": "User not found"}, status=400)
return response.json(request.ctx.user.json_format())

View File

@ -1,7 +1,6 @@
from sanic import response
from app.core._config import TELEGRAM_API_KEY
from app.core.models.user import User
from app.core.logger import make_log
from aiogram.utils.web_app import safe_parse_webapp_init_data
from datetime import datetime
@ -37,7 +36,6 @@ async def s_api_v1_auth_twa(request):
known_user = request.ctx.db_session.query(User).filter(User.telegram_id == twa_data.user.id).first()
assert known_user, "User not created"
new_user_key = await known_user.create_api_token_v1(request.ctx.db_session, "USER_API_V1")
return response.json({
'user': known_user.json_format(),

View File

@ -2,6 +2,7 @@ from app.core.models.keys import KnownKey
from datetime import datetime
from base58 import b58encode, b58decode
from hashlib import sha256
from app.core.logger import make_log
import os
@ -57,6 +58,7 @@ class AuthenticationMixin:
db_session.commit()
new_key = db_session.query(KnownKey).filter(KnownKey.seed_hash == new_key.seed_hash).first()
assert new_key, "Key not created"
make_log(f"[Auth] User {user_id} created new {token_type} key {new_key.id}")
return {
"key": new_key,
"auth_v1_token": new_key.seed