diff --git a/HISTORY.md b/HISTORY.md index c2380d83..a2ad139d 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -22,7 +22,7 @@ Developers are not forced to upgrade if they don't really need it. Upgrade whene No API Changes. -- Implement [Google reCAPTCHA](middleware/recaptcha) middleware +- Implement [Google reCAPTCHA](middleware/recaptcha) middleware, example [here](_examples/miscellaneous/recaptcha/main.go) - Fix [kataras/golog](https://github.com/kataras/golog) prints with colors on windows server 2012 while it shouldn't because its command line tool does not support 256bit colors - Improve the updater by a custom self-updated back-end version checker, can be disabled by: diff --git a/_examples/README.md b/_examples/README.md index f588a328..57da9014 100644 --- a/_examples/README.md +++ b/_examples/README.md @@ -168,6 +168,7 @@ You can serve [quicktemplate](https://github.com/valyala/quicktemplate) files to - [Recovery](miscellaneous/recover/main.go) - [Profiling (pprof)](miscellaneous/pprof/main.go) - [Internal Application File Logger](miscellaneous/file-logger/main.go) +- [Google reCAPTCHA](miscellaneous/recaptcha/main.go) #### More diff --git a/_examples/miscellaneous/recaptcha/main.go b/_examples/miscellaneous/recaptcha/main.go new file mode 100644 index 00000000..440b52cd --- /dev/null +++ b/_examples/miscellaneous/recaptcha/main.go @@ -0,0 +1,45 @@ +package main + +import ( + "fmt" + + "github.com/kataras/iris" + "github.com/kataras/iris/context" + + "github.com/kataras/iris/middleware/recaptcha" +) + +// publicDataSiteKey and secretKey and should be obtained by https://www.google.com/recaptcha. +const ( + publicDataSiteKey = "" + secretKey = "" +) + +func main() { + app := iris.New() + + r := recaptcha.New(secretKey) + + app.Get("/comment", showRecaptchaForm) + + // pass the middleware before the main handler or use the `recaptcha.SiteVerify`. + app.Post("/comment", r, postComment) + + app.Run(iris.Addr(":8080")) +} + +var htmlForm = `
+ +
+ +
` + +func showRecaptchaForm(ctx context.Context) { + contents := fmt.Sprintf(htmlForm, publicDataSiteKey) + ctx.HTML(contents) +} + +func postComment(ctx context.Context) { + // [...] + ctx.JSON(context.Map{"success": true}) +} diff --git a/middleware/README.md b/middleware/README.md index b67884e9..1dab4cc6 100644 --- a/middleware/README.md +++ b/middleware/README.md @@ -4,6 +4,7 @@ Built'n Handlers | Middleware | Example | | -----------|-------------| | [basic authentication](basicauth) | [iris/_examples/authentication/basicauth](https://github.com/kataras/iris/tree/master/_examples/authentication/basicauth) | +| [Google reCAPTCHA](recaptcha) | [iris/_examples/miscellaneous/recaptcha](https://github.com/kataras/iris/tree/master/_examples/miscellaneous/recaptcha) | | [localization and internationalization](i18n) | [iris/_examples/miscellaneous/i81n](https://github.com/kataras/iris/tree/master/_examples/miscellaneous/i18n) | | [request logger](logger) | [iris/_examples/http_request/request-logger](https://github.com/kataras/iris/tree/master/_examples/http_request/request-logger) | | [profiling (pprof)](pprof) | [iris/_examples/miscellaneous/pprof](https://github.com/kataras/iris/tree/master/_examples/miscellaneous/pprof) |