async def post(self, request): template = "/auth/login.html" data = await request.form() form = LoginForm(data) if not form.validate(): context = {"request": request, "form": form} return templates.TemplateResponse(template, context) try: qs = sa.select(User).where(User.email == form.email.data.lower()) result = await User.execute(qs) user = result.scalars().one() if user.check_password(form.password.data): request.session["user"] = str(user.id) user.last_login = datetime.utcnow() await user.save() return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND) except NoResultFound: pass request.session.clear() form.password.errors.append("Invalid email or password.") context = {"request": request, "form": form} return templates.TemplateResponse(template, context)
async def post(self, request): template = "auth/password_change.html" data = await request.form() form = PasswordChangeForm(data) if not form.validate(): context = {"request": request, "form": form} return templates.TemplateResponse(template, context) if not request.user.check_password(form.current_password.data): form.current_password.errors.append("Enter your current password.") context = {"request": request, "form": form} return templates.TemplateResponse(template, context) else: request.user.set_password(form.new_password.data) await request.user.save() return RedirectResponse(url="/", status_code=status.HTTP_302_FOUND)
async def get(self, request): template = "/auth/login.html" form = LoginForm() context = {"request": request, "form": form} return templates.TemplateResponse(template, context)
async def server_error(request, exc): template = "500.html" context = {"request": request} return templates.TemplateResponse(template, context, status_code=500)
async def not_found(request, exc): template = "404.html" context = {"request": request} return templates.TemplateResponse(template, context, status_code=404)
async def get(self, request): template = "home.html" context = {"request": request} return templates.TemplateResponse(template, context)
async def get(self, request): template = "auth/password_change.html" form = PasswordChangeForm() context = {"request": request, "form": form} return templates.TemplateResponse(template, context)