Skip to content

Package captcha is a middleware that provides captcha service for Flamego

License

Notifications You must be signed in to change notification settings

flamego/captcha

Repository files navigation

captcha

GitHub Workflow Status Codecov GoDoc Sourcegraph

Package captcha is a middleware that provides captcha service for Flamego.

Installation

The minimum requirement of Go is 1.18.

go get github.com/flamego/captcha

Getting started

<!-- templates/home.tmpl -->
<form method="POST">
  {{.CaptchaHTML}} <br>
  <input name="captcha">
  <button>Submit</button>
</form>
package main

import (
	"net/http"

	"github.com/flamego/captcha"
	"github.com/flamego/flamego"
	"github.com/flamego/session"
	"github.com/flamego/template"
)

func main() {
	f := flamego.Classic()
	f.Use(session.Sessioner())
	f.Use(captcha.Captchaer())
	f.Use(template.Templater())

	f.Get("/", func(t template.Template, data template.Data, captcha captcha.Captcha) {
		data["CaptchaHTML"] = captcha.HTML()
		t.HTML(http.StatusOK, "home")
	})
	f.Post("/", func(c flamego.Context, captcha captcha.Captcha) {
		if !captcha.ValidText(c.Request().FormValue("captcha")) {
			c.ResponseWriter().WriteHeader(http.StatusBadRequest)
			_, _ = c.ResponseWriter().Write([]byte(http.StatusText(http.StatusBadRequest)))
		} else {
			c.ResponseWriter().WriteHeader(http.StatusOK)
			_, _ = c.ResponseWriter().Write([]byte(http.StatusText(http.StatusOK)))
		}
	})

	f.Run()
}

Getting help

License

This project is under the MIT License. See the LICENSE file for the full license text.