aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 9c31255b42177e19f79b36ea3f0f46437c80cc75 (plain)
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