devise_phone 0.0.1667 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.rdoc +9 -3
- data/app/controllers/devise/phone_verifications_controller.rb +32 -17
- data/lib/devise_phone.rb +1 -1
- data/lib/devise_phone/routes.rb +6 -6
- data/lib/devise_phone/version.rb +1 -1
- data/lib/models/phone.rb +32 -31
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61c65710b5aad79d543060e435f11260bd150c8f
|
4
|
+
data.tar.gz: c98c335e7d5eb587f60afb86555ad5394081b993
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca18ab1f037adda6f1d5c38bce90bc0bdd423a8006256c8b826553c26e3b19c3b7d963d52a0f787edea818bc07f15c3e6b667930adf4777f1bfce909d837d6ef
|
7
|
+
data.tar.gz: b60f0b555fdc1cbdfb9bd5fb6646495ae1cb6dee3ceecabbd236d0b57bb77d1371ab75ea42bc8daedd01df509c08cb0fe0e3c715bf552b4333d026cb47eb3e7b
|
data/README.rdoc
CHANGED
@@ -27,15 +27,21 @@ When you are done, you are ready to add DevisePhone to any of your Devise models
|
|
27
27
|
|
28
28
|
Replace MODEL by the class name you want to add DevisePhone, like User, Admin, etc. This will add the :phone flag to your model's Devise modules. The generator will also create a migration file (if your ORM support them). Continue reading this file to understand exactly what the generator produces and how to use it.
|
29
29
|
|
30
|
-
In your config/environments, please specify your twilio_sid, twilio_token, and twilio_phone_number
|
30
|
+
In your config/environments, please specify your twilio_sid, twilio_token, and twilio_phone_number:
|
31
31
|
|
32
|
-
|
32
|
+
config.twilio = {
|
33
33
|
sid: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
34
34
|
token: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
|
35
35
|
phone_number: '123455678',
|
36
|
-
message_body: "Hi! This is from company u asked for. Your verification code is #{verification_code}"
|
37
36
|
}
|
38
37
|
|
38
|
+
To specify the message body, in devise.en.yml add:
|
39
|
+
|
40
|
+
en:
|
41
|
+
devise:
|
42
|
+
phone:
|
43
|
+
message_body: "Hi! This is Company Name. Your verification code is %{verification_code}."
|
44
|
+
|
39
45
|
== Configuring views
|
40
46
|
|
41
47
|
All the views are packaged inside the gem. If you'd like to customize the views, invoke the following generator and it will copy all the views to your application:
|
@@ -1,5 +1,7 @@
|
|
1
1
|
class Devise::PhoneVerificationsController < DeviseController
|
2
2
|
|
3
|
+
before_action :authenticate_user!
|
4
|
+
|
3
5
|
# GET /resource/phone_verification/new
|
4
6
|
# def new
|
5
7
|
# build_resource({})
|
@@ -12,27 +14,30 @@ class Devise::PhoneVerificationsController < DeviseController
|
|
12
14
|
|
13
15
|
# GET /resource/phone_verification/send_code
|
14
16
|
def send_code
|
15
|
-
current_user.generate_verification_code_and_send_sms
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
17
|
+
current_user.generate_verification_code_and_send_sms(phone_number_params[:phone_number])
|
18
|
+
|
19
|
+
render nothing: true
|
20
|
+
# respond_to do |format|
|
21
|
+
# msg = { :status => "ok", :message => "SMS sent!" }
|
22
|
+
# format.json { render :json => msg } # don't do msg.to_json
|
23
|
+
# format.html { render nothing: true }
|
24
|
+
# end
|
21
25
|
end
|
22
26
|
|
23
27
|
# GET or POST /resource/phone_verification/verify_code
|
24
28
|
def verify_code
|
25
|
-
verify_success = current_user.verify_phone_number_with_code_entered(
|
26
|
-
|
27
|
-
respond_to do |format|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
29
|
+
verify_success = current_user.verify_phone_number_with_code_entered(code_entered_params[:code_entered])
|
30
|
+
render nothing: true
|
31
|
+
# respond_to do |format|
|
32
|
+
# if verify_success
|
33
|
+
# message_response = "verification successful"
|
34
|
+
# else
|
35
|
+
# message_response = "verification fail"
|
36
|
+
# end
|
37
|
+
# msg = { :status => "ok", :message => message_response }
|
38
|
+
# format.json { render :json => msg } # don't do msg.to_json
|
39
|
+
# format.html { render nothing: true }
|
40
|
+
# end
|
36
41
|
end
|
37
42
|
|
38
43
|
protected
|
@@ -41,4 +46,14 @@ class Devise::PhoneVerificationsController < DeviseController
|
|
41
46
|
self.resource = resource_class.new
|
42
47
|
end
|
43
48
|
|
49
|
+
|
50
|
+
private
|
51
|
+
def phone_number_params
|
52
|
+
params.permit(:phone_number)
|
53
|
+
end
|
54
|
+
|
55
|
+
def code_entered_params
|
56
|
+
params.permit(:code_entered)
|
57
|
+
end
|
58
|
+
|
44
59
|
end
|
data/lib/devise_phone.rb
CHANGED
data/lib/devise_phone/routes.rb
CHANGED
@@ -2,12 +2,12 @@ module ActionDispatch::Routing
|
|
2
2
|
class Mapper
|
3
3
|
|
4
4
|
protected
|
5
|
-
def devise_phone_verification(mapping, controllers)
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
5
|
+
# def devise_phone_verification(mapping, controllers)
|
6
|
+
# resource :phone_verification, :only => [:new, :create], :path => mapping.path_names[:phone_verification], :controller => controllers[:phone_verifications] do
|
7
|
+
# post :verify_code, :path => mapping.path_names[:verify_code], :as => :verify_code
|
8
|
+
# post :send_code, :path => mapping.path_names[:send_code], :as => :send_code
|
9
|
+
# end
|
10
|
+
# end
|
11
11
|
|
12
12
|
end
|
13
13
|
end
|
data/lib/devise_phone/version.rb
CHANGED
data/lib/models/phone.rb
CHANGED
@@ -5,23 +5,23 @@ module Devise
|
|
5
5
|
module Phone
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
|
-
included do
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
def generate_verification_code_and_send_sms
|
8
|
+
# included do
|
9
|
+
# before_create :set_unverified_phone_attributes, :if => :phone_verification_needed?
|
10
|
+
# # after_create :private_generate_verification_code_and_send_sms, :if => :phone_verification_needed?
|
11
|
+
# # before_save :remember_old_phone_number
|
12
|
+
# after_save :private_generate_verification_code_and_send_sms, :if => :regenerate_phone_verification_needed?
|
13
|
+
# end
|
14
|
+
|
15
|
+
def generate_verification_code_and_send_sms(phone_number)
|
16
16
|
if(phone_verification_needed?)
|
17
|
-
private_generate_verification_code_and_send_sms
|
17
|
+
private_generate_verification_code_and_send_sms(phone_number)
|
18
18
|
end
|
19
|
-
self.save!
|
19
|
+
# self.save!
|
20
20
|
end
|
21
21
|
|
22
22
|
def verify_phone_number_with_code_entered(code_entered)
|
23
23
|
if phone_verification_needed? && (code_entered == self.phone_verification_code)
|
24
|
-
mark_phone_as_verified
|
24
|
+
mark_phone_as_verified
|
25
25
|
true
|
26
26
|
else
|
27
27
|
false
|
@@ -30,28 +30,29 @@ module Devise
|
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
|
-
def private_generate_verification_code_and_send_sms
|
33
|
+
def private_generate_verification_code_and_send_sms(phone_number)
|
34
34
|
self.phone_verification_code = generate_phone_verification_code
|
35
35
|
set_unverified_phone_attributes
|
36
|
-
if phone_number.present?
|
37
|
-
|
38
|
-
end
|
36
|
+
# if phone_number.present?
|
37
|
+
send_sms_verification_code(phone_number)
|
38
|
+
# end
|
39
39
|
end
|
40
40
|
|
41
41
|
|
42
|
-
def mark_phone_as_verified
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
def mark_phone_as_verified
|
43
|
+
self.phone_number_verified = true
|
44
|
+
self.phone_verification_code = nil
|
45
|
+
self.phone_verification_code_sent_at = nil
|
46
|
+
self.phone_verified_at = DateTime.now
|
47
47
|
end
|
48
48
|
|
49
49
|
# check if phone verification is needed and set errors here
|
50
50
|
def phone_verification_needed?
|
51
|
-
if phone_number.blank?
|
52
|
-
|
53
|
-
|
54
|
-
|
51
|
+
# if phone_number.blank?
|
52
|
+
# self.errors.add(:phone_verification_code, :empty_phone_number_field)
|
53
|
+
# false
|
54
|
+
# els
|
55
|
+
if phone_number_verified
|
55
56
|
self.errors.add(:phone_verification_code, :phone_verification_not_needed)
|
56
57
|
false
|
57
58
|
else
|
@@ -79,20 +80,20 @@ module Devise
|
|
79
80
|
self.phone_verification_code_sent_at = DateTime.now
|
80
81
|
self.phone_verified_at = nil
|
81
82
|
# removes all white spaces, hyphens, and parenthesis
|
82
|
-
if self.phone_number
|
83
|
-
|
84
|
-
end
|
83
|
+
# if self.phone_number
|
84
|
+
# self.phone_number.gsub!(/[\s\-\(\)]+/, '')
|
85
|
+
# end
|
85
86
|
end
|
86
87
|
|
87
|
-
# return
|
88
|
+
# return 4 digits random code 0-9
|
88
89
|
def generate_phone_verification_code
|
89
|
-
verification_code = SecureRandom.
|
90
|
+
verification_code = SecureRandom.random_number(10 ** 4).to_s.rjust(4,'0')
|
90
91
|
verification_code
|
91
92
|
end
|
92
93
|
|
93
94
|
# sends a message to number indicated in the secrets.yml
|
94
|
-
def send_sms_verification_code
|
95
|
-
number_to_send_to =
|
95
|
+
def send_sms_verification_code(phone_number)
|
96
|
+
number_to_send_to = phone_number.gsub!(/[\s\-\(\)]+/, '')
|
96
97
|
verification_code = self.phone_verification_code
|
97
98
|
|
98
99
|
twilio_sid = Rails.application.config.twilio[:sid]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_phone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hubert Theodore
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|