arkaan 3.2.0 → 3.2.1

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: 85b6138dea3fe6214d9301bd7a7dff253075bcaf2bd4db8dbebf85555f7b92bf
4
- data.tar.gz: 87c19ab98e4ba9b2386b136cdfba5ef4338c757c0e2905e681d2edebfcd39b04
3
+ metadata.gz: 18e96a942919336b990db83ea8071e368ee4ec191fba5847d9749511160d26cb
4
+ data.tar.gz: 55c2514a2354be9d8367b2ed93dcc98d2de20da915cdfbc5fb7e22ab53498136
5
5
  SHA512:
6
- metadata.gz: b307bd7f4fe73c343ea74578166aa44f8c79eabcaeb954bc76d9d8138869e25b13aa542095f56c3d499f091300c621232880a4b04eeba0605cf6446d057d6f34
7
- data.tar.gz: d3adfa1e0485b193d93e41c82a9844827b8b9be077d9c70c819e7cc8d558fce6fdaf244845b2c0ada8a3e8f5fdc343704bc10e0ab2df4f2e79ee8a67cf98af7f
6
+ metadata.gz: 0ec3fe52c446ca4329b6663662e29e96400d7491c57dfc623fba608be609c4d3f22fc1933f0bfea9518c3b8e226c37093983929d6c4976a81620f1b76bdb2015
7
+ data.tar.gz: 96a45e10abd6016ee406ad035d9ede8eb75810d220c28f4b7ceef59aeec842947f1bd8ad25b632c8550154ce523a07be1900d5aa3d04afb4c67fa78e64d4144f
@@ -4,6 +4,7 @@ module Arkaan
4
4
  # This module holds the logic for user authentication to our frontend.
5
5
  # @author Vincent Courtois <courtois.vincent@outlook.com>
6
6
  module Authentication
7
+ autoload :Device, 'arkaan/authentication/device'
7
8
  autoload :Session, 'arkaan/authentication/session'
8
9
  end
9
10
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Arkaan
4
+ module Authentication
5
+ # A device is a computer or mobile phone from which a user logs in.
6
+ # @pauthor Vincent Courtois <courtois.vincent@outlook.com>
7
+ class Device
8
+ include Mongoid::Document
9
+ include Mongoid::Timestamps
10
+
11
+ # @!attribute [rw] user_agent
12
+ # @return [String] the string representation of the browser and OS of the user
13
+ field :user_agent, type: String
14
+ # @!attribute [rw] ip
15
+ # @return [String] the IP address of the user
16
+ field :ip, type: String
17
+
18
+ # @!attribute [rw] sessions
19
+ # @return [Array<Arkaan::Authentication::Session] the sessions this browser is linked to.
20
+ has_many :sessions, class_name: 'Arkaan::Authentication::Session', inverse_of: :device
21
+ end
22
+ end
23
+ end
@@ -17,15 +17,31 @@ module Arkaan
17
17
  # @return [String] the ID of the websocket the user is connected to.
18
18
  # It's not an association because instances are embedded.
19
19
  field :websocket_id, type: String, default: ''
20
+ # @!attribute [rw] duration
21
+ # @return [Integer] the duration of the session in seconds before it expires.
22
+ field :duration, type: Integer, default: 86_400
20
23
 
21
24
  # @!attribute [rw] account
22
25
  # @return [Arkaan::Account] the account connected to the application.
23
26
  belongs_to :account, class_name: 'Arkaan::Account', inverse_of: :sessions
27
+ # @!attribute [rw] device
28
+ # @return [Arkaan::Authentication::Device] the device (computer/mobile) linked to this session
29
+ belongs_to :device, class_name: 'Arkaan::Authentication::Session', inverse_of: :sessions, optional: true
24
30
 
25
31
  validates :session_id,
26
32
  presence: { message: 'required' },
27
33
  uniqueness: { message: 'uniq', if: :session_id? },
28
34
  length: { minimum: 10, message: 'minlength', if: :session_id? }
35
+
36
+ validates :duration,
37
+ numericality: { greater_than_or_equal_to: 0, message: 'minimum' },
38
+ presence: { message: 'required' }
39
+
40
+ # Checks if the session is expired (it has a duration, and the duration has passed)
41
+ # @return [Boolean] TRUE if the session is expired, FALSE otherwise.
42
+ def expired?
43
+ duration != 0 && created_at + duration.to_f < DateTime.now
44
+ end
29
45
  end
30
46
  end
31
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arkaan
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.0
4
+ version: 3.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Courtois
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-05 00:00:00.000000000 Z
11
+ date: 2020-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: database_cleaner
@@ -313,6 +313,7 @@ files:
313
313
  - lib/arkaan.rb
314
314
  - lib/arkaan/account.rb
315
315
  - lib/arkaan/authentication.rb
316
+ - lib/arkaan/authentication/device.rb
316
317
  - lib/arkaan/authentication/session.rb
317
318
  - lib/arkaan/campaign.rb
318
319
  - lib/arkaan/campaigns.rb