signinable 2.0.14 → 2.0.17

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bc7b621a02378580ca3b73fc2aac5ac2f9c1ced9610b77838123f1dc57e92668
4
- data.tar.gz: '084a96afe76ed55e06c34620bdbdddbb6b73e1aa30f1d6331dba2b46a1ad5bad'
3
+ metadata.gz: 523362dea01356b6cbdaf4b31dfcd466d4a27d45d968e754fa2d553794e1afd2
4
+ data.tar.gz: d129d2e715ee9376fd6aa4de5904ffbb617518c46136d2d4801bb01b034a2fd6
5
5
  SHA512:
6
- metadata.gz: 6435f28e2241b31814a54409b5b1485936002ff921284e86d3bc11702ac2cb1221266dc555f67f17806161119175d57336daff7a68d25f912b8cd499018e26de
7
- data.tar.gz: 26249c4f48c58e08327a430783aaebed81fd9207bcaec3fefbca1ce7ac223d0a7d329ce0205e16c82d25faea2b7a9bae54f4c8babe44d0c78e28becec3819fb2
6
+ metadata.gz: 5d53f8b61728737d073ee40251b0fda57275032df9bfd8a32a9e79c69702551955d781d9fcb16b49a617de244137beb6efa776a357f09c127a67a1da033ccd5c
7
+ data.tar.gz: ea5ded123711f4be9d5587f2177bbe3dd48b8c1a3be4665a6e8fe37aff4c33576b0235dbf1cb64e7b3ab4509c62f63c1402fe003ccfd98f2b16fdd1210511a58
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ migration_kls = Rails::VERSION::MAJOR > 4 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
4
+ class ChangeSigninableIdToString < migration_kls
5
+ def self.up
6
+ change_column :signins, :signinable_id, :string, null: false
7
+ end
8
+
9
+ def self.down
10
+ change_column :signins, :signinable_id, :integer, null: false
11
+ end
12
+ end
@@ -16,7 +16,7 @@ module Signinable
16
16
  cattr_reader :jwt_exp
17
17
 
18
18
  def signinable(options = {})
19
- self.refresh_exp = options.fetch(:expiration, DEFAULT_REFRESH_EXP)
19
+ self.refresh_exp = options.fetch(:refresh_exp, DEFAULT_REFRESH_EXP)
20
20
  self.simultaneous_signings = options.fetch(:simultaneous, true)
21
21
  self.signin_restrictions = options[:restrictions]
22
22
  self.jwt_secret = options.fetch(:jwt_secret)
@@ -75,6 +75,12 @@ module Signinable
75
75
  signin.signinable
76
76
  end
77
77
 
78
+ def refresh_token_from_jwt(jwt)
79
+ JWT.decode(jwt, jwt_secret, true, { verify_expiration: false, algorithm: 'HS256' })[0]['refresh_token']
80
+ rescue JWT::DecodeError
81
+ nil
82
+ end
83
+
78
84
  private
79
85
 
80
86
  cattr_writer :refresh_exp
@@ -89,12 +95,6 @@ module Signinable
89
95
  nil
90
96
  end
91
97
 
92
- def refresh_token_from_jwt(jwt)
93
- JWT.decode(jwt, jwt_secret, true, { verify_expiration: false, algorithm: 'HS256' })[0]['refresh_token']
94
- rescue JWT::DecodeError
95
- nil
96
- end
97
-
98
98
  def signin_permitted?(signin, restrictions_to_check, skip_restrictions)
99
99
  restriction_fields = signin_restriction_fields(signin, skip_restrictions)
100
100
 
@@ -133,10 +133,14 @@ module Signinable
133
133
  self.jwt = self.class.generate_jwt(signin.token, signin.signinable_id)
134
134
  end
135
135
 
136
- def signout(token, ip, user_agent, skip_restrictions: [])
136
+ def signout(jwt, ip, user_agent, skip_restrictions: [])
137
+ token = self.class.refresh_token_from_jwt(jwt)
138
+ return unless token
139
+
137
140
  signin = Signin.find_by_token(token)
138
141
 
139
142
  return unless signin
143
+ return if signin.expired?
140
144
  return unless self.class.check_signin_permission(
141
145
  signin,
142
146
  { ip: ip, user_agent: user_agent },
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Signinable
4
- VERSION = '2.0.14'
4
+ VERSION = '2.0.17'
5
5
  end