Source code for luna_backport3.app.handlers.accounts_handler

from sanic.response import HTTPResponse

from app.handlers.base_handler import BaseHandler
from app.handlers.handlers_mixin import HandlersMixin
from app.handlers.schemas import CREATE_ACCOUNT_SCHEMA


[docs]class AccountHandler(BaseHandler): """ Handler to get account information, only authorization is required. """
[docs] async def get(self) -> HTTPResponse: """ Account info handler. See `spec_get_account`_. .. _spec_get_account: _static/api.html#operation/getAccount Returns: json with email, organization name and account status """ account = await self.dbContext.getAccountByAccountId(accountId=self.accountId) return self.success( 200, outputJson={ "email": account.email, "organization_name": account.organization_name, "suspended": (not account.active), }, )
[docs]class AccountsHandler(HandlersMixin, BaseHandler): """ Accounts handler """
[docs] async def post(self) -> HTTPResponse: """ Accounts registration. See `spec_create_account`_. .. _spec_create_account: _static/api.html#operation/createAccount Returns: json with token """ reqJson = self.request.json self.validateJson(reqJson, CREATE_ACCOUNT_SCHEMA, useJsonSchema=False) organizationName = reqJson["organization_name"] password = reqJson["password"] email = reqJson["email"].lower() account = await self.dbContext.createAccount(organizationName=organizationName, email=email, password=password) token = account["token"] accountId = account["accountId"] await self.createHandlers(accountId) return self.success(201, outputJson={"token": str(token)})