bot challenge for signup

This commit is contained in:
2023-01-20 09:35:45 +02:00
parent 58696d2168
commit 82358d8642
9 changed files with 44 additions and 24 deletions

View File

@ -6,9 +6,15 @@ class RegistrationsController < Devise::RegistrationsController
prepend_before_action :authenticate_scope!, only: [:edit_email] prepend_before_action :authenticate_scope!, only: [:edit_email]
def new
build_resource
super
end
# POST /resource # POST /resource
def create def create
puts "CREATE" if message = math_check
flash.now.alert = message
end
super super
end end
@ -28,16 +34,24 @@ class RegistrationsController < Devise::RegistrationsController
super super
end end
def resource_name
"member"
end
# DELETE /resource # DELETE /resource
# def destroy # def destroy
# super # super
# end # end
# protected protected
def math_check
return "no cheatin" unless bot = params[:bot]
return "No food" unless fudder = bot[:fudder]
key = fudder.to_i / 2
answer = bot[:challenge]
return "Plase enter the bot challenge" if answer.blank?
if( (2*key + 1).to_s != answer )
return "Check the maths, tip, it wasn't #{answer}"
end
nil
end
# 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_up_params # def configure_sign_up_params

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center Resend Confirmation Instructions %h1.font-hairline.mb-6.text-center Resend Confirmation Instructions
= form_for(resource, as: resource_name, = form_for(resource, as: resource_name,
url: confirmation_path(resource_name), url: confirmation_path(resource_name),

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h2.font-hairline.mb-6.text-center Change Your Password %h2.font-hairline.mb-6.text-center Change Your Password
= form_for(resource, = form_for(resource,
as: resource_name, as: resource_name,

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center Forgot your password? %h1.font-hairline.mb-6.text-center Forgot your password?
= form_for(resource, as: resource_name, = form_for(resource, as: resource_name,
html: { method: :post, html: { method: :post,

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center.text-2xl %h1.font-hairline.mb-6.text-center.text-2xl
Change password Change password
= form_for(resource, as: resource_name, = form_for(resource, as: resource_name,

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center.text-2xl %h1.font-hairline.mb-6.text-center.text-2xl
Change your email Change your email
.text-center.text-lg .text-center.text-lg

View File

@ -1,6 +1,6 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center Sign Up %h1.font-hairline.mb-6.text-center.text-2xl Sign Up
= form_for(resource, as: resource_name, = form_for(resource, as: resource_name,
html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" } , html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" } ,
url: registration_path(resource_name) ) do |f| url: registration_path(resource_name) ) do |f|
@ -17,16 +17,22 @@
%small %small
%em.text-gray-600 %em.text-gray-600
(#{@minimum_password_length} characters minimum) (#{@minimum_password_length} characters minimum)
= f.password_field :password, | = f.password_field :password,
autocomplete: "new-password", | autocomplete: "new-password",
class: "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline" | class: "shadow appearance-none border rounded w-full py-2 px-3 text-gray-700 mb-3 leading-tight focus:outline-none focus:shadow-outline"
.mb-4 .mb-4
= f.label :password_confirmation, class: "block font-bold mb-2 text-gray-700 text-sm" = f.label :password_confirmation, class: "block font-bold mb-2 text-gray-700 text-sm"
= f.password_field :password_confirmation, | = f.password_field :password_confirmation,
autocomplete: "new-password", | autocomplete: "new-password",
class: "appearance-none border leading-tight focus:outline-none px-3 py-2 rounded shadow focus:shadow-outline text-gray-700 w-full" | class: "appearance-none border leading-tight focus:outline-none px-3 py-2 rounded shadow focus:shadow-outline text-gray-700 w-full"
.mb-4 .mt-4
= f.submit "Sign Up", | - challenge = rand(8)
class: "button bg-cyan-700 hover:bg-cyan-700 font-bold text-white focus:outline-none py-2 px-4 rounded focus:shadow-outline w-full" | = simple_fields_for :bot do |n|
= n.input :fudder , as: :hidden , input_html: { value: "#{challenge*2}" }
= n.input :challenge, placeholder: "Anti bot question: #{challenge} + #{challenge + 1} == " ,
class: " border leading-tight focus:outline-none px-3 py-2 rounded shadow focus:shadow-outline text-gray-700 w-full"
.my-4
= f.submit "Sign Up",
class: "button bg-cyan-700 hover:bg-cyan-700 font-bold text-white focus:outline-none py-2 px-4 rounded focus:shadow-outline w-full"
= render "devise/shared/links" = render "devise/shared/links"
= render "devise/shared/form_footer" = render "devise/shared/form_footer"

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center Log In %h1.font-hairline.mb-6.text-center Log In
= form_for(resource, url: session_path(resource_name), = form_for(resource, url: session_path(resource_name),
html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" }, html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" },

View File

@ -1,5 +1,5 @@
.flex.justify-center .flex.justify-center
.w-full.max-w-xs .w-full.max-w-xs.md:max-w-md
%h1.font-hairline.mb-6.text-center Resend Unlock Info %h1.font-hairline.mb-6.text-center Resend Unlock Info
= form_for(resource, as: resource_name, = form_for(resource, as: resource_name,
html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" , html: { class: "bg-white mb-4 px-8 pt-6 pb-8 rounded shadow-md" ,