async def login(req: responder.Request, resp: responder.Response) -> None: """Show login page on get and handle login data on post.""" # noqa: DAR101, E800 errors = {} user = User() if req.method == "post": post_data = await req.media() dbsession = Session() user = dbsession.query(User).filter( User.username == post_data["username"], ).first() # Check password if post_data["password"] == user.password: # redirect to login confirm resp.session["username"] = user.username resp.session["identiy_confirmed"] = False api.redirect(resp, location=api.url_for("confirm_login")) return None else: errors["password"] = "******" resp.html = api.template( "login.html.j2", api=api, errors=errors, user=user, )
async def signup(req: responder.Request, resp: responder.Response) -> None: """Show signup page on get and handle signup data on post.""" # noqa: DAR101, E800 errors = {} user = User() if req.method == "post": post_data = await req.media() user.username = post_data["username"] user.password = post_data["password"] user.phone_number = post_data["phone"] # TODO: Check that this phone number actually works dbsession = Session() dbsession.add(user) try: dbsession.commit() except IntegrityError: errors["username"] = "******" if not errors: api.redirect(resp, location=api.url_for("index")) resp.html = api.template( "signup.html.j2", api=api, errors=errors, user=user, )
async def confirm_login(req: responder.Request, resp: responder.Response) -> None: """Confirm the login via text code.""" errors = {} username_from_session = req.session["username"] dbsession = Session() user = dbsession.query(User).filter( User.username == username_from_session, ).first() if req.method == "post": post_data = await req.media() posted_code = post_data["code"] session_code = req.session["code"] if posted_code == session_code: # User is verified resp.session["identiy_confirmed"] = True api.redirect(resp, location=api.url_for("home")) return None else: errors["code"] = "Code not confirmed. Try again." code = send_code_to_number(user.phone_number) resp.session["code"] = code resp.html = api.template( "login_confirm.html.j2", api=api, errors=errors, )
def index(_: responder.Request, resp: responder.Response) -> None: """Render index page.""" # noqa: DAR101, E800 resp.html = api.template("index.html.j2", api=api)
async def hello(req: Request, resp: Response, *, who: str): # templatesディレクトリに配置 resp.html = api.template('hello.html', who=who) # local()[f'HTTP_{number}'] = number の形で定数を作成しているので補完が効かない print(api.status_codes.HTTP_200)
def index(_, response: responder.Response) -> None: response.html = api.template("/index.html", recreator="Tibor")