devise_code_authenticatable 0.0.4 → 0.0.5
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/app/controllers/devise/login_codes_controller.rb +14 -2
- data/app/controllers/devise_code_authenticatable/sessions_controller.rb +1 -2
- data/app/models/login_code.rb +3 -0
- data/app/views/devise/login_codes/show.html.erb +15 -0
- data/app/views/devise/sessions/new.html.erb +8 -0
- data/config/locales/zh-CN.yml +6 -3
- data/lib/devise_code_authenticatable/login_code.rb +6 -2
- data/lib/devise_code_authenticatable/models/code_authenticatable.rb +5 -8
- data/lib/devise_code_authenticatable/routes.rb +1 -0
- data/lib/devise_code_authenticatable/strategies/code_authenticatable.rb +4 -5
- data/lib/devise_code_authenticatable/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 58dd319ab275d8bc675530752f29a3c0ff3f2686811ace551d0dbf62c4b576bf
|
4
|
+
data.tar.gz: 4974ef85404132a51582a8dbe9caf09bdf3e3e1fc35240f9b381bde28813e1d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 107e94a1b717569c65b9b0c827a9b638d2c793b2c69b998fd0170948548ec7965744a032a67972824e6b9e86cb7d697857c7530c82adeb2a19812d7c312baf54
|
7
|
+
data.tar.gz: 3247e9563aaef5ff0df03602d50da5db013850308bcb82f47712acd185808ca5b9a69c11ac1ae744c163b3ee89484c50aa70415bc39180358a08fa9aece8ab39
|
@@ -10,11 +10,20 @@ class Devise::LoginCodesController < DeviseController
|
|
10
10
|
end
|
11
11
|
|
12
12
|
def show
|
13
|
-
|
14
|
-
|
13
|
+
@login_code = LoginCode.find(params[:id])
|
14
|
+
email = @login_code.resource.email
|
15
15
|
self.resource = resource_class.new(email: email)
|
16
16
|
end
|
17
17
|
|
18
|
+
def resend
|
19
|
+
@login_code = LoginCode.find(params[:id])
|
20
|
+
self.resource = @login_code.resource.send_code_login_instructions
|
21
|
+
if successfully_sent?(resource)
|
22
|
+
end
|
23
|
+
|
24
|
+
redirect_to after_sending_login_code_path_for(resource_name, resource)
|
25
|
+
end
|
26
|
+
|
18
27
|
protected
|
19
28
|
def auth_options
|
20
29
|
:code_authenticatable
|
@@ -31,4 +40,7 @@ class Devise::LoginCodesController < DeviseController
|
|
31
40
|
{ methods: methods, only: [:login_code] }
|
32
41
|
end
|
33
42
|
|
43
|
+
def after_sending_login_code_path_for(resource_name, resource)
|
44
|
+
login_code_path(resource_name, resource.login_codes.last) if is_navigational_format?
|
45
|
+
end
|
34
46
|
end
|
@@ -5,7 +5,6 @@ class DeviseCodeAuthenticatable::SessionsController < Devise::SessionsController
|
|
5
5
|
yield resource if block_given?
|
6
6
|
|
7
7
|
if successfully_sent?(resource)
|
8
|
-
cookies[:devise_resource_email] = resource.email
|
9
8
|
end
|
10
9
|
|
11
10
|
respond_with(resource, location: after_sending_login_code_path_for(resource_name, resource))
|
@@ -17,6 +16,6 @@ class DeviseCodeAuthenticatable::SessionsController < Devise::SessionsController
|
|
17
16
|
end
|
18
17
|
|
19
18
|
def after_sending_login_code_path_for(resource_name, resource)
|
20
|
-
login_code_path(resource_name, resource.
|
19
|
+
login_code_path(resource_name, resource.login_codes.last) if is_navigational_format?
|
21
20
|
end
|
22
21
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<h2><%= t(".sign_in") %></h2>
|
2
|
+
<%= simple_form_for resource, url: verify_user_login_code_path(@login_code) do |f| %>
|
3
|
+
<div class="field">
|
4
|
+
<%= f.input :email, placeholder: "email" %>
|
5
|
+
</div>
|
6
|
+
|
7
|
+
<div class="field">
|
8
|
+
<%= f.input :login_code, placeholder: "code" %>
|
9
|
+
</div>
|
10
|
+
|
11
|
+
<div class="actions">
|
12
|
+
<%= f.submit t(".sign_in"), class: "btn btn-brand btn-elevate btn-pill" %>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
<%= link_to t(".resend_code"), resend_user_login_code_path(@login_code) %>
|
data/config/locales/zh-CN.yml
CHANGED
@@ -1,11 +1,14 @@
|
|
1
1
|
zh-CN:
|
2
2
|
devise:
|
3
|
-
sessions:
|
4
|
-
user:
|
5
|
-
send_instructions: 邮件发送成功!
|
6
3
|
login_codes:
|
7
4
|
new:
|
8
5
|
sign_in: 登录
|
6
|
+
show:
|
7
|
+
sign_in: 登录
|
8
|
+
resend_code: 重新发送验证码
|
9
|
+
sessions:
|
10
|
+
new:
|
11
|
+
send_code: 发送验证码
|
9
12
|
user:
|
10
13
|
send_instructions: 邮件发送成功!
|
11
14
|
signed_in: 登录成功!
|
@@ -3,7 +3,8 @@ module DeviseCodeAuthenticatable
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
included do
|
6
|
-
|
6
|
+
extend ClassMethods
|
7
|
+
belongs_to :resource, polymorphic: true
|
7
8
|
|
8
9
|
after_initialize :default_values
|
9
10
|
end
|
@@ -12,7 +13,6 @@ module DeviseCodeAuthenticatable
|
|
12
13
|
self.code ||= rand(10000..99999)
|
13
14
|
self.expired ||= false
|
14
15
|
self.retry_times ||= 0
|
15
|
-
self.deliver_method ||= "email"
|
16
16
|
end
|
17
17
|
|
18
18
|
def verify(code)
|
@@ -35,5 +35,9 @@ module DeviseCodeAuthenticatable
|
|
35
35
|
self.expired = true; save
|
36
36
|
end
|
37
37
|
|
38
|
+
module ClassMethods
|
39
|
+
Devise::Models.config(self, :login_codes)
|
40
|
+
end
|
41
|
+
|
38
42
|
end
|
39
43
|
end
|
@@ -4,25 +4,22 @@ module Devise
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
|
-
has_many :login_codes
|
7
|
+
has_many :login_codes, as: :resource
|
8
8
|
end
|
9
9
|
|
10
10
|
def login_code
|
11
|
-
existing_login_code
|
11
|
+
existing_login_code
|
12
12
|
end
|
13
13
|
|
14
14
|
def send_code_login_instructions
|
15
15
|
login_code = existing_login_code || generate_login_code
|
16
16
|
send_devise_notification(:code_login_instructions, login_code, {})
|
17
|
+
self
|
17
18
|
end
|
18
19
|
|
19
20
|
def existing_login_code
|
20
|
-
|
21
|
-
|
22
|
-
login_codes.last
|
23
|
-
else
|
24
|
-
nil
|
25
|
-
end
|
21
|
+
login_code = login_codes.last
|
22
|
+
login_code && !login_code.expired? ? login_code.code : nil
|
26
23
|
end
|
27
24
|
|
28
25
|
def generate_login_code
|
@@ -9,15 +9,14 @@ module DeviseCodeAuthenticatable
|
|
9
9
|
hashed = false
|
10
10
|
login_code = params[scope].fetch "login_code", ""
|
11
11
|
|
12
|
-
if resource.
|
12
|
+
if resource.login_codes.last.expired?
|
13
|
+
resource.generate_login_code
|
14
|
+
resource.send_code_login_instructions
|
13
15
|
fail(:login_code_expired)
|
14
|
-
resource.send_login_code
|
15
|
-
respond_with(resource, location: after_sending_login_code_path_for(resource))
|
16
16
|
end
|
17
17
|
|
18
|
-
if validate(resource){ hashed = true; resource.
|
18
|
+
if validate(resource){ hashed = true; resource.login_codes.last.verify(login_code) }
|
19
19
|
remember_me(resource)
|
20
|
-
cookies[:devise_resource_email] = resource.email
|
21
20
|
resource.after_code_authentication
|
22
21
|
success!(resource)
|
23
22
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_code_authenticatable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vincentying15
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-02-
|
11
|
+
date: 2020-02-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -42,7 +42,10 @@ files:
|
|
42
42
|
- Rakefile
|
43
43
|
- app/controllers/devise/login_codes_controller.rb
|
44
44
|
- app/controllers/devise_code_authenticatable/sessions_controller.rb
|
45
|
+
- app/models/login_code.rb
|
46
|
+
- app/views/devise/login_codes/show.html.erb
|
45
47
|
- app/views/devise/mailer/login_code.html.erb
|
48
|
+
- app/views/devise/sessions/new.html.erb
|
46
49
|
- config/locales/zh-CN.yml
|
47
50
|
- lib/devise_code_authenticatable.rb
|
48
51
|
- lib/devise_code_authenticatable/controllers/helpers.rb
|