Add reCAPTCHA
This commit is contained in:
parent
1557415c6c
commit
7abcaec210
3
Gemfile
3
Gemfile
|
@ -110,6 +110,9 @@ gem 'telegram-bot', '~> 0.14'
|
||||||
# Virtus types for Telegram Bot API.
|
# Virtus types for Telegram Bot API.
|
||||||
gem 'telegram-bot-types', '~> 0.6'
|
gem 'telegram-bot-types', '~> 0.6'
|
||||||
|
|
||||||
|
# Helpers for the reCAPTCHA API.
|
||||||
|
gem 'recaptcha', '~> 4.13'
|
||||||
|
|
||||||
group :development, :test do
|
group :development, :test do
|
||||||
# factory_bot provides a framework and DSL for defining and using factories.
|
# factory_bot provides a framework and DSL for defining and using factories.
|
||||||
gem 'factory_bot_rails', '~> 4.10'
|
gem 'factory_bot_rails', '~> 4.10'
|
||||||
|
|
|
@ -296,6 +296,8 @@ GEM
|
||||||
rb-fsevent (0.10.3)
|
rb-fsevent (0.10.3)
|
||||||
rb-inotify (0.9.10)
|
rb-inotify (0.9.10)
|
||||||
ffi (>= 0.5.0, < 2)
|
ffi (>= 0.5.0, < 2)
|
||||||
|
recaptcha (4.13.1)
|
||||||
|
json
|
||||||
redis (4.0.3)
|
redis (4.0.3)
|
||||||
regexp_parser (1.3.0)
|
regexp_parser (1.3.0)
|
||||||
responders (2.4.0)
|
responders (2.4.0)
|
||||||
|
@ -466,6 +468,7 @@ DEPENDENCIES
|
||||||
rails (~> 5.2.1)
|
rails (~> 5.2.1)
|
||||||
rails-erd (~> 1.5)
|
rails-erd (~> 1.5)
|
||||||
rails-i18n (~> 5.1)
|
rails-i18n (~> 5.1)
|
||||||
|
recaptcha (~> 4.13)
|
||||||
redis (~> 4.0)
|
redis (~> 4.0)
|
||||||
rest-client (~> 2.0)
|
rest-client (~> 2.0)
|
||||||
rolify (~> 5.2)
|
rolify (~> 5.2)
|
||||||
|
|
|
@ -4,6 +4,8 @@ class Users::SessionsController < Devise::SessionsController
|
||||||
skip_after_action :verify_authorized
|
skip_after_action :verify_authorized
|
||||||
skip_after_action :verify_policy_scoped
|
skip_after_action :verify_policy_scoped
|
||||||
|
|
||||||
|
prepend_before_action :check_captcha, only: :create
|
||||||
|
|
||||||
# before_action :configure_sign_in_params, only: [:create]
|
# before_action :configure_sign_in_params, only: [:create]
|
||||||
|
|
||||||
# GET /resource/sign_in
|
# GET /resource/sign_in
|
||||||
|
@ -12,19 +14,26 @@ class Users::SessionsController < Devise::SessionsController
|
||||||
# end
|
# end
|
||||||
|
|
||||||
# POST /resource/sign_in
|
# POST /resource/sign_in
|
||||||
# def create
|
def create
|
||||||
# super
|
super
|
||||||
# end
|
end
|
||||||
|
|
||||||
# DELETE /resource/sign_out
|
# DELETE /resource/sign_out
|
||||||
# def destroy
|
def destroy
|
||||||
# super
|
super
|
||||||
# end
|
end
|
||||||
|
|
||||||
# protected
|
protected
|
||||||
|
|
||||||
# If you have extra params to permit, append them to the sanitizer.
|
# If you have extra params to permit, append them to the sanitizer.
|
||||||
# def configure_sign_in_params
|
# def configure_sign_in_params
|
||||||
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
|
# devise_parameter_sanitizer.permit(:sign_in, keys: [:attribute])
|
||||||
# end
|
# end
|
||||||
|
|
||||||
|
def check_captcha
|
||||||
|
return if verify_recaptcha
|
||||||
|
|
||||||
|
self.resource = resource_class.new sign_in_params
|
||||||
|
render :new
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,7 +5,7 @@ module ApplicationHelper
|
||||||
case flash_type
|
case flash_type
|
||||||
when 'success'
|
when 'success'
|
||||||
'alert-success'
|
'alert-success'
|
||||||
when 'error'
|
when 'error', 'recaptcha_error'
|
||||||
'alert-danger'
|
'alert-danger'
|
||||||
when 'alert'
|
when 'alert'
|
||||||
'alert-warning'
|
'alert-warning'
|
||||||
|
|
|
@ -13,6 +13,10 @@
|
||||||
input_html: { autocomplete: 'current-password' } %>
|
input_html: { autocomplete: 'current-password' } %>
|
||||||
|
|
||||||
<%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
|
<%= f.input :remember_me, as: :boolean if devise_mapping.rememberable? %>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<%= recaptcha_tags %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-actions">
|
<div class="form-actions">
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
XpjR8j+qN8qPyleTAB7MJb+CYhXulqQwWpNW9O6XEqgveOqMui3gG3kjcYF1SGag3Lyb37JE4vKWgsAQbPh6YYRvVKhr/UEAnpOlll56DLyOl62lu0U038lbQ/LgSHmzX0TDzCw6HlXzugytzLLJWFZzarh3giA03JpjwJi9p0uGWCAzyt9oZaUxxgrxcJI0N3S88OiDeCJ+ndlmc8GXeBFArs86O3jHui2P/drTHhSDIRjiPKu2XOTK+iqC9qZVL+FclZj+Rwi6Bw/Ob1TsXGwuSr8s3v6AxdZoHZhbJcr+3eMtwRecxuNI+f/LrZdd1oRpfUgXlVGJVeXMyZohbSCxDo6XWMlvaJF8NZxtyLmACCrxW3OwghZijyJK1YvZOOu2hnGDNiqaauy/ayopF8z4pYnnHr2Uty8XNtCyWCbj4/BE59FHDkO97O+0Gk6ivjGoTylyqvXeaeoFixGYyZhRwXm7aBdZQVf1tQdKJ5f2aRzLxym76MCUdk0DZeBbu1xWW0ORcnPFZihgYwq4EVo1c0UZg+wdiPM2VsqauvSuSWVpEA37yarlSxPUiwHsep/RXQcypAhQGgJpS+Y83354h4d39mnNKVVY7Dp6MPmolAmMmuOuSg8IPgbm1t0WIUvZzDuOwDcaOw+vskjVuG1UXmYDowiLgiw7q13RrNPKNzBmxqmTzYNgX0R0NbRnbyCYPUeL4bHT0X6gykYGRTSU96osr3jHdU6OWpZKUoz4qci7XxzxpWRLeeyNt2m9FF72oNdBmy8XBtI/2+N7xGfbQ7HIBb1qJcR0vALp6y7Oe+VMaokLrbmUOmgSOKcBDO75zCPV1cT2V6TOWyeT15ZDA9xJVeyn3v27a+tAb8VH0dmEdhP9qKGUPwPynwe8bt97FHnF0cWLgPQ6iPRKynC3jDKa9Q/UGISlUMnM9w6rJYgS/RfP6+CJuHGEUUtOgDaGWoeLfb3Zf16xrX6YElMR62V48vC9+N36cjxRT2HAi07Fm+dSpmXME8TX0fHDkbOqjHUnL1UUNDtS/zQ3zB0JnhHH3kCBVqEPqGcrlwZ41SItjlKOmf5QueooMIDkt+nrlqq8MH8H7X1PwiffoKGOKxGSe5av4Wht7oTfLXwaJul/Klv+rzqoxXlE1MJad32uIqxHM+OEsmkIZV7Mp8+2P0FA1WG8oNKFGR9+pDJIB5HNNt4lZiBbpRBrogtOr1+cNsPUIIqurca1rHY3OV2+RWb5TOuTbb8lX1mAfRBpoFV8ubkwqZrgAcY2--NOzfEQFtoa3MHjU8--B7qrAiWb5qaFoUtH3M90Fg==
|
C5sE9RF/MHXPhzxvn6bbbEnMZcjzjliu7nlWM4qpI02K9z4WVQc2tU5i9arLmv5RyowQLtnjTouX4qzXTJDMmdiE5A0iv2RcD7ZTPeQ+fc5pvGOjTRTrqi2UdNZjuEtlaklanUDd0g95I5ZV16bwm1Sua2Gb5rlrjWjVCrB3DuTw9qyu4rrnIDbkyJrpOEf8MvcVCl1KJsAE9eYg3xeaaGMDb4bIURAP3hG8rsqnk1yNjW4zmPvnUzoxlENUEv3LhT3/HeHI4kUg7M53PcfPo2Pee0czOq24nndJ/eYzgpwvqHCIFd37rFgtUlE8RKkDIMRuJK6in//TjepO+J8pV/tWiQEBWfPH1dUKQvswN94PZx9rDwf3rK3ZTysTALhf23HY+peQDdE+wV1ZFKaklbFR1hW/T+bxrXu2u3x8yUpf8l39vi/tcl5ntsAYi4es6lnIcht2LUw0YIfCPwSQ8Ozc6AxuA5z1+LLGNTlEaIls7Pl55xJd5OqErcZiR+nUxGQU8JdSxv+5QDswWGHaWlCppz3nNiT3t372q1IpY/Mr5I5BZq+3omYNfdqRhUWCxJeh4v9XfbnuxN37Br8lheMi+u9fT6S2zqCt+ucESqqTjNVHXMyFoZy+bvO9UuUvpz+72DOihlTo6lG1oJDFXhvCDMTlg4e5UbxjAGDQjNGhnqlvGlX+1jkw3aFxh7l9yXxmzlSdEmZHj3m43wqFwOalK3IvlJPtL8VT+B2+qcGjGrvJl4tYPqqnUCqalXLRig3erLxyBouF7UiGsptsEFrxqwrjUbz7+11+8dp7wzBKjNauHb572yXf4BdG7rAa4ivppf2XAiJiRMf4+Ks0/hlUIe8Lisxy0nPoGKTyvp9Y2rrN/XDl09DMFcAlZR16bBZrX0L1UGDH1B/rR9JWrVetM3XR1g1G4lkAz5OmrhkpFLBp9X8OCRObHLnhcnw8k7jGCWiHEBnH1Ez9g51mS+CJ0nKwpKHO5zq1nxPrb6J8AC6DzZWNf9oKZOPXZXq05fjxIL+judVvNAW39bC924N7nD1b+w+BXjduoZUFITmYjDVenNpmToUgsqlso7/SIIHicniI2jM8oeQXRMbgRJEf787x/kgUvC7BAZWk2ChqhuyKQfYSUV3019bGmlSSIKpFQLSaBDxJyKoS/RGaZcAqQx5z5t/nos7uOHuRAiNKH/cJfVrfN5WFAMMAsG9l7WtiVNjqJs3Ha/5OMgCzNoDFxVPiKVUTm3NHvFNZbXsobDxLF5HbUUhh2m3lK/lKatHSwfbAU/ca00HZ48RibOqFmruK+20X+8py6L7R1jOgTVaveSAsbJHlSrSKZRR3k24JGNqK3+wD3A1r--IE3qv5uCCzLe4X1g--cuMLzKt35nIvWXL8LzRrLQ==
|
|
@ -0,0 +1,11 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
# Be sure to restart your server when you modify this file.
|
||||||
|
|
||||||
|
Rails.application.settings(:recaptcha).presence.try do |settings|
|
||||||
|
Recaptcha.configure do |config|
|
||||||
|
config.site_key = settings[:site_key]
|
||||||
|
config.secret_key = settings[:secret_key]
|
||||||
|
config.skip_verify_env = %w[development test cucumber]
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,9 @@
|
||||||
|
default: &default
|
||||||
|
site_key: 6LdgbIEUAAAAANMCKgv_eVOViQt4oQHlBpVxqguZ
|
||||||
|
secret_key: <%= Rails.application.credentials.recaptcha_secret_key %>
|
||||||
|
|
||||||
|
development:
|
||||||
|
<<: *default
|
||||||
|
|
||||||
|
production:
|
||||||
|
<<: *default
|
Reference in New Issue