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)
Пример #2
0
    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)
Пример #4
0
async def server_error(request, exc):
    template = "500.html"
    context = {"request": request}
    return templates.TemplateResponse(template, context, status_code=500)
Пример #5
0
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)
Пример #7
0
    async def get(self, request):
        template = "auth/password_change.html"

        form = PasswordChangeForm()
        context = {"request": request, "form": form}
        return templates.TemplateResponse(template, context)