forked from wownero/YellWOWPages
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
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)
|
|
|
|
|