1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# Recaptcha
A simple Elixir package for implementing [ReCaptcha] v2 in [Phoenix] applications.
[ReCaptcha]: http://www.google.com/recaptcha
[Phoenix]: http://www.phoenixframework.org/
## Installation
Set as a dependency in the and ensure it is running with your app:
1) Add as a dependency to the mix.exs file
```elixir
defp deps do
[
# other deps
{:recaptcha, "~> 0.0.1"},
{:ibrowse, github: "cmullaparthi/ibrowse", tag: "v4.1.2"},
# other deps
]
end
```
2) Add to your application list
```elixir
def application do
[
# ...
applications: [:phoenix, :recaptcha]
# ...
]
end
```
Get your project's dependencies:
```bash
$ mix deps.get
```
## Config
In your application's config.exs :
```elixir
config :recaptcha,
api_config: %{ verify_url: "https://www.google.com/recaptcha/api/siteverify",
public_key: "YOUR_PUBLIC_KEY",
private_key: "YOUR_PRIVATE_KEY" }
```
## Usage
### View
In a template
```html
<form name="someform" method="post" action="/somewhere">
...
<%= raw Recaptcha.display %>
...
</form>
```
Display method accepts a keyword list with 2 possible options:
* `noscript` -> Set to true to render noscript code
* `public_key` -> The key put in the `data-sitekey` reCaptcha div attribute, default is the public key set in the config file
Pass these parameters like this:
```elixir
...
<%= raw Recaptcha.display(noscript: true, public_key: "Public key") %>
...
```
### Controller
In a controller
```elixir
def create(conn, params) do
# some code
case Recaptcha.verify(conn.remote_ip, params["g-recaptcha-response"]) do
:ok -> do_something
:error -> handle_error
end
end
```
`verify` method also accepts a keyword list as the third parameter with also 2 possible options:
* `public_key` -> A key to use in the http request to the recaptcha api, default is the private key set in the config file
* `timeout` -> Time period in ms to wait for a response from google api, default is 3000
|