arkaan 0.3.2 → 0.4.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/lib/arkaan.rb +1 -0
- data/lib/arkaan/account.rb +12 -6
- data/lib/arkaan/oauth.rb +10 -0
- data/lib/arkaan/oauth/access_token.rb +23 -0
- data/lib/arkaan/oauth/application.rb +31 -0
- data/lib/arkaan/oauth/authorization.rb +26 -0
- data/lib/arkaan/oauth/refresh_token.rb +18 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ac83b9b70e1ecb3bca72b55a576c6c73f09b941
|
4
|
+
data.tar.gz: 6b6e2d509bd95684032a0553807255cbed1209eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e2f8ef7eddb21380844592ae7c9c0a1380a19db6a42d44b567caba5a35c46dc5e791d3eb6f35bdf47c1f70c0a9ac6633b3b281b8f778108f04ffa273d9da312
|
7
|
+
data.tar.gz: 132672eacf3f19613cb58c6929f5d04575191a0a3a17e57c23897511491371d94a992767951d7508e2ca6161fe6144aea0d254eca067b76afce4eb0e24039886
|
data/lib/arkaan.rb
CHANGED
data/lib/arkaan/account.rb
CHANGED
@@ -25,18 +25,24 @@ module Arkaan
|
|
25
25
|
# @return [String] the email address of the user, useful to contact them ; it must be given, unique, and have an email format.
|
26
26
|
field :email, type: String
|
27
27
|
|
28
|
+
# @!attribute [w] password
|
29
|
+
# @return [String] password, in clear, of the user ; do not attempt to get the value, just set it when changing the password.
|
30
|
+
# @!attribute [w] password_confirmation
|
31
|
+
# @return [String] the confirmation of the password, do not get, just set it ; it must be the same as the password.
|
32
|
+
has_secure_password
|
33
|
+
|
28
34
|
# @!attribute [rw] groups
|
29
35
|
# @return [Array<Arkaan::Permissions::Group>] the groups giving their corresponding rights to the current account.
|
30
36
|
has_and_belongs_to_many :groups, class_name: 'Arkaan::Permissions::Group', inverse_of: :accounts
|
37
|
+
# @!attribute [rw] applications
|
38
|
+
# @return [Array<Arkaan::OAuth::Application] the applications this user has created and owns.
|
39
|
+
has_many :applications, class_name: 'Arkaan::OAuth::Application', inverse_of: :creator
|
40
|
+
# @!attribute [rw] authorizations
|
41
|
+
# @return [Array<Arkaan::OAuth::Authorization>] the authorization issued by this account to third-party applications to access its data.
|
42
|
+
has_many :authorizations, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :account
|
31
43
|
|
32
44
|
validates :username, length: {minimum: 6}, uniqueness: true
|
33
45
|
|
34
46
|
validates :email, presence: true, format: {with: /\A[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}\z/}, uniqueness: true
|
35
|
-
|
36
|
-
# @!attribute [w] password
|
37
|
-
# @return [String] password, in clear, of the user ; do not attempt to get the value, just set it when changing the password.
|
38
|
-
# @!attribute [w] password_confirmation
|
39
|
-
# @return [String] the confirmation of the password, do not get, just set it ; it must be the same as the password.
|
40
|
-
has_secure_password
|
41
47
|
end
|
42
48
|
end
|
data/lib/arkaan/oauth.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
module Arkaan
|
2
|
+
# This module holds the logic for the connection of an application to our API.
|
3
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
4
|
+
module OAuth
|
5
|
+
autoload :Application , 'arkaan/oauth/application'
|
6
|
+
autoload :Authorization, 'arkaan/oauth/authorization'
|
7
|
+
autoload :AccessToken , 'arkaan/oauth/access_token'
|
8
|
+
autoload :RefreshToken , 'arkaan/oauth/refresh_token'
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Arkaan
|
2
|
+
module OAuth
|
3
|
+
# An access token is the value assigned to the application to access the private data of an account.
|
4
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
+
class AccessToken
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Timestamps
|
8
|
+
|
9
|
+
# @!attribute [rw] value
|
10
|
+
# @return [String] the value of the token, returned to the application when built.
|
11
|
+
field :value, type: String, default: ->{ SecureRandom.hex }
|
12
|
+
# @!attribute [rw] expiration
|
13
|
+
# @return [Integer] the time, in seconds, after which the token is declared expired, and thus can't be used anymore.
|
14
|
+
field :expiration, type: Integer, default: 86400
|
15
|
+
|
16
|
+
# @!attribute [rw] authorization
|
17
|
+
# @return [Arkaan::OAuth::Authorization] the authorization code that issued this token to the application for this user.
|
18
|
+
belongs_to :authorization, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :access_token
|
19
|
+
|
20
|
+
validates :value, presence: true, uniqueness: true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Arkaan
|
2
|
+
module OAuth
|
3
|
+
# An application is what is referred to in the OAuth2.0 RFC as a client, wanting to access private informations about the user.
|
4
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
+
class Application
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Timestamps
|
8
|
+
|
9
|
+
# @!attribute [rw] name
|
10
|
+
# @return [String] the unique name of the application, mainly used to identify and display it.
|
11
|
+
field :name, type: String
|
12
|
+
# @!attribute [rw] key
|
13
|
+
# @return [String] the unique key for the application, identifying it when requesting a token for the API.
|
14
|
+
field :key, type: String, default: ->{ SecureRandom.hex }
|
15
|
+
# @!attribute [rw] premium
|
16
|
+
# @return [Boolean] a value indicating whether the application should automatically receive a token when an account is created, or not.
|
17
|
+
field :premium, type: Boolean, default: false
|
18
|
+
|
19
|
+
# @!attribute [rw] creator
|
20
|
+
# @return [Arkaan::Account] the account that has created this application, considered its owner.
|
21
|
+
belongs_to :creator, class_name: 'Arkaan::Account', inverse_of: :applications
|
22
|
+
# @!attribute [rw] authorizations
|
23
|
+
# @return [Array<Arkaan::OAuth::Authorization>] the authorizations linked to the accounts this application can get the data from.
|
24
|
+
has_many :authorizations, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :application
|
25
|
+
|
26
|
+
validates :name, presence: true, length: {minimum: 6}, uniqueness: true
|
27
|
+
|
28
|
+
validates :key, presence: true, uniqueness: true
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Arkaan
|
2
|
+
module OAuth
|
3
|
+
# An OAuth authorization is granted by a user to an application to access its personal data.
|
4
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
+
class Authorization
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Timestamps
|
8
|
+
|
9
|
+
# @!attribute [rw] code
|
10
|
+
# @return [String] the value corresponding to the authentication code in the RFC of OAuth2.0, kep for historic purpose.
|
11
|
+
field :code, type: String, default: ->{ SecureRandom.hex }
|
12
|
+
|
13
|
+
# @!attribute [rw] account
|
14
|
+
# @return [Arkaaan::Account] the account granting the authorization to access its data to the application.
|
15
|
+
belongs_to :account, class_name: 'Arkaan::Account', inverse_of: :authorizations
|
16
|
+
# @!attribute [rw] application
|
17
|
+
# @return [Arkaan::OAuth::Application] the application asking to access account's data.
|
18
|
+
belongs_to :application, class_name: 'Arkaan::OAuth::Application', inverse_of: :authorizations
|
19
|
+
# @!attribute [rw] token
|
20
|
+
# @return [Arkaan::OAuth::AccessToken] the access token used further in the application process to access private data of the account.
|
21
|
+
has_one :token, class_name: 'Arkaan::OAuth::AccessToken', inverse_of: :authorization
|
22
|
+
|
23
|
+
validates :code, presence: true, uniqueness: true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Arkaan
|
2
|
+
module OAuth
|
3
|
+
# A refresh token is used when an access token is expired, to get a new one. It is then recreated for the next expiration.
|
4
|
+
# @author Vincent Courtois <courtois.vincent@outlook.com>
|
5
|
+
class RefreshToken
|
6
|
+
include Mongoid::Document
|
7
|
+
include Mongoid::Timestamps
|
8
|
+
|
9
|
+
# @!attribute [rw] value
|
10
|
+
# @return [String] the value of the token, returned to the application when built.
|
11
|
+
field :value, type: String, default: ->{ SecureRandom.hex }
|
12
|
+
|
13
|
+
# @!attribute [rw] authorization
|
14
|
+
# @return [Arkaan::OAuth::Authorization] the authorization code that issued this token to the application for this user.
|
15
|
+
belongs_to :authorization, class_name: 'Arkaan::OAuth::Authorization', inverse_of: :refresh_token
|
16
|
+
end
|
17
|
+
end
|
18
|
+
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: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vincent Courtois
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -160,6 +160,11 @@ files:
|
|
160
160
|
- lib/arkaan/account.rb
|
161
161
|
- lib/arkaan/concerns.rb
|
162
162
|
- lib/arkaan/concerns/sluggable.rb
|
163
|
+
- lib/arkaan/oauth.rb
|
164
|
+
- lib/arkaan/oauth/access_token.rb
|
165
|
+
- lib/arkaan/oauth/application.rb
|
166
|
+
- lib/arkaan/oauth/authorization.rb
|
167
|
+
- lib/arkaan/oauth/refresh_token.rb
|
163
168
|
- lib/arkaan/permissions.rb
|
164
169
|
- lib/arkaan/permissions/category.rb
|
165
170
|
- lib/arkaan/permissions/group.rb
|