signinable 2.0.15 → 2.0.16

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: 5874be18901fc2c73dc44f49b54e847a9837b3d735ba4bb5c5cb285df08ee811
4
- data.tar.gz: b87d026e0221c8684ae4fc1576743fd2cd782fa3a145dbdc814c3ea6d332733b
3
+ metadata.gz: 98c939505c7a77333b6244200b4e2f1e6337cd00ab721773db89333910d4b0b4
4
+ data.tar.gz: 32917bd4f4f2671a9727f17c8b57b83f852fbd7b5c7259e6abe3f72b69669896
5
5
  SHA512:
6
- metadata.gz: 237c7de3fef5bc654629f346468beb3df87a3b707988858233d56d224c874be405ef7b4bc32d94e0ec3a48248aaeaae55fe7107d595832497a0d0fd849549d45
7
- data.tar.gz: ec0357a307c90c515770f5de1be6457da1cb021fc0bd2dd9fba0a373cd065a32d2236807f58c2a9e68039d6bf2bd19cabb91987e6d1c1b660188cfde94fc7909
6
+ metadata.gz: 4728c3a79d4d85443e8d92a51a156409bb616a4be5782ad236ffe8c5006a8a60bd777655c38559dc390fffc2fc447aef0cedd08c2beeb4d142731e238337f326
7
+ data.tar.gz: 1f0ae333d9cd6d4b53338a50b0a16fd2ec592ff7f5dfc87d400958eeddf33a51b8f6386172ecb2754291d811925637ac548968373030bfee09005107499cc06e
@@ -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.15'
4
+ VERSION = '2.0.16'
5
5
  end