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

64 lines
3.3 KiB

from fastapi import APIRouter, Request, Cookie, Form
from fastapi.responses import RedirectResponse, HTMLResponse
import requests
from icecream import ic
from classes.constraints import Constraints
from .db import Database
router = APIRouter()
@router.get('/dashboard', response_class=HTMLResponse)
async def get_dashboard(request: Request, auth_code: str = Cookie(None)):
if auth_code is None:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'not logged in',
'url': '/login'})
url = "https://login.wownero.com/auth/realms/master/protocol/openid-connect/userinfo"
response = requests.post(url, headers={"Authorization": f"Bearer {auth_code}"})
user_profile = response.json()
if user_profile.get('preferred_username', None) is None:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'account not found...',
'url': '/login'})
user_name = user_profile.get('preferred_username', None)
return Constraints.templates.TemplateResponse('/dashboard/index.html', {'request': request,
'user_data': Database.Users.get_address(user_name)})
@router.post('/submit_address')
async def post_submit_address(request: Request, auth_code: str = Cookie(None), address: str = Form(None)):
if auth_code is None:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'not logged in',
'url': '/login'})
if address is None:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'invalid address',
'url': '/dashboard'})
if len(address) != 97:
return Constraints.templates.TemplateResponse('/errors/index.html', {'request': request,
'error': 'invalid address length',
'url': '/dashboard'})
url = "https://login.wownero.com/auth/realms/master/protocol/openid-connect/userinfo"
response = requests.post(url, headers={"Authorization": f"Bearer {auth_code}"})
user_name = response.json().get('preferred_username', None)
if not Database.Users.get_address(user_name):
new_user = Database.Users(username=user_name, address=address)
Database.sqla.session.add(new_user)
Database.sqla.session.commit()
return RedirectResponse('/dashboard', status_code=303)
update_address = Database.Users.query.filter_by(username=user_name).first()
update_address.address = address
Database.sqla.session.commit()
return RedirectResponse('/dashboard', status_code=303)