hackathon_manager 0.9.2 → 0.10.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71d1e7e3f133dad44721cb74a439b45d652238ba4e06b58c0ee66eefae35668a
4
- data.tar.gz: 8ca061b3f6b8281b5898c1cb429d2cb136ee2d6b8be31d5a5ce7c46d0bbcecf1
3
+ metadata.gz: 75702c73df8a6c3d94f11a7c8f0a067aa747d2862aba1d949e77c180f30c87b5
4
+ data.tar.gz: a04a9c400928c649cd152c4aadfdf98a8ac80e7c88db24fc7cb88c39843d1b05
5
5
  SHA512:
6
- metadata.gz: 2b0f793919e8b3b6a3be45bcb9bb534ae4daf34e3c5cca15691f5f82e47321ee1b8403a84657fe0da25c622009d5c19207286d0f50abf2b0d1d9bfaf62482aa0
7
- data.tar.gz: f0607f1df2c8585f1573124346bec1ce6ac20350b6b2f59628bdc74c58dff2feed7fc15203f9a595d9029a611a925e119cd4fcdd69727d411ec1d81ad8a10e33
6
+ metadata.gz: b1484e04b959ec1ef418a07b359f12bfcf08d014c87c15fb8758029461e6bf8eab912f1f60d3944dbef566623da82c11f3b1a0153a223b1eeddd347907552f21
7
+ data.tar.gz: 7299d07a9f27c86d576a2e7dc257c305a9d6655304d65c3857fc9816ea3fffe5d9a8391472c23326b597cdda0260f89c225cd95e4367d056695368e6d106bd85
data/app/models/user.rb CHANGED
@@ -1,9 +1,15 @@
1
1
  class User < ApplicationRecord
2
2
  devise :database_authenticatable, :registerable, :timeoutable,
3
3
  :recoverable, :rememberable, :trackable, :validatable,
4
- :omniauthable, omniauth_providers: [:mlh]
4
+ :doorkeeper, :omniauthable, omniauth_providers: [:mlh]
5
5
 
6
6
  has_one :questionnaire
7
+ has_many :access_grants, class_name: "Doorkeeper::AccessGrant",
8
+ foreign_key: :resource_owner_id,
9
+ dependent: :delete_all # or :destroy if you need callbacks
10
+ has_many :access_tokens, class_name: "Doorkeeper::AccessToken",
11
+ foreign_key: :resource_owner_id,
12
+ dependent: :delete_all # or :destroy if you need callbacks
7
13
 
8
14
  after_create :queue_reminder_email
9
15
 
@@ -74,6 +74,12 @@
74
74
  Blazer
75
75
  %span.fa.fa-external-link.icon-space-l-half
76
76
  .nav-item-description Run custom SQL queries
77
+ %li.nav-item
78
+ = active_link_to oauth_applications_path, target: '_blank', class: "nav-link" do
79
+ .fa.fa-unlock.fa-fw.icon-space-r-half
80
+ Doorkeeper
81
+ %span.fa.fa-external-link.icon-space-l-half
82
+ .nav-item-description OAuth2 provider management
77
83
  %main.col-md-10.ml-sm-auto.px-4{role: "main"}
78
84
  = render "layouts/manage/flashes"
79
85
  = yield
@@ -1,6 +1,9 @@
1
1
  # Use this hook to configure devise mailer, warden hooks and so forth.
2
2
  # Many of these configuration options can be set straight in your model.
3
3
  Devise.setup do |config|
4
+ # Enable easy doorkeeper integration
5
+ Devise::Doorkeeper.configure_devise(config)
6
+
4
7
  # The secret key used by Devise. Devise uses this key to generate
5
8
  # random tokens. Changing this key will render invalid all existing
6
9
  # confirmation, reset password and unlock tokens in the database.
@@ -77,7 +80,8 @@ Devise.setup do |config|
77
80
  # Notice that if you are skipping storage for all authentication paths, you
78
81
  # may want to disable generating routes to Devise's sessions controller by
79
82
  # passing skip: :sessions to `devise_for` in your config/routes.rb
80
- config.skip_session_storage = [:http_auth]
83
+ config.skip_session_storage = [:http_auth] # this is the default devise config
84
+ config.skip_session_storage << :doorkeeper # disable session storage for oauth requests
81
85
 
82
86
  # By default, Devise cleans up the CSRF token on authentication to
83
87
  # avoid CSRF token fixation attacks. This means that, when using AJAX
@@ -0,0 +1,220 @@
1
+ Doorkeeper.configure do
2
+ # Enable easy devise integration
3
+ Devise::Doorkeeper.configure_doorkeeper(self)
4
+
5
+ # Change the ORM that doorkeeper will use (needs plugins)
6
+ orm :active_record
7
+
8
+ # This block will be called to check whether the resource owner is authenticated or not.
9
+ # resource_owner_authenticator do
10
+ # # Put your resource owner authentication logic here.
11
+ # # Example implementation:
12
+ # # User.find_by_id(session[:user_id]) || redirect_to(new_user_session_url)
13
+ # end
14
+
15
+ # If you didn't skip applications controller from Doorkeeper routes in your application routes.rb
16
+ # file then you need to declare this block in order to restrict access to the web interface for
17
+ # adding oauth authorized applications. In other case it will return 403 Forbidden response
18
+ # every time somebody will try to access the admin web interface.
19
+ admin_authenticator do
20
+ if current_user
21
+ head :forbidden unless current_user.admin? || current_user.admin_limited_access?
22
+ else
23
+ redirect_to new_user_session_url
24
+ end
25
+ end
26
+
27
+ # If you are planning to use Doorkeeper in Rails 5 API-only application, then you might
28
+ # want to use API mode that will skip all the views management and change the way how
29
+ # Doorkeeper responds to a requests.
30
+ #
31
+ # api_only
32
+
33
+ # Enforce token request content type to application/x-www-form-urlencoded.
34
+ # It is not enabled by default to not break prior versions of the gem.
35
+ #
36
+ # enforce_content_type
37
+
38
+ # Authorization Code expiration time (default 10 minutes).
39
+ #
40
+ # authorization_code_expires_in 10.minutes
41
+
42
+ # Access token expiration time (default 2 hours).
43
+ # If you want to disable expiration, set this to nil.
44
+ #
45
+ # access_token_expires_in 2.hours
46
+
47
+ # Assign custom TTL for access tokens. Will be used instead of access_token_expires_in
48
+ # option if defined. `context` has the following properties available
49
+ #
50
+ # `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
51
+ # `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
52
+ # `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
53
+ #
54
+ # custom_access_token_expires_in do |context|
55
+ # context.client.application.additional_settings.implicit_oauth_expiration
56
+ # end
57
+
58
+ # Use a custom class for generating the access token.
59
+ # See https://github.com/doorkeeper-gem/doorkeeper#custom-access-token-generator
60
+ #
61
+ # access_token_generator '::Doorkeeper::JWT'
62
+
63
+ # The controller Doorkeeper::ApplicationController inherits from.
64
+ # Defaults to ActionController::Base.
65
+ # See https://github.com/doorkeeper-gem/doorkeeper#custom-base-controller
66
+ #
67
+ # base_controller 'ApplicationController'
68
+
69
+ # Reuse access token for the same resource owner within an application (disabled by default).
70
+ #
71
+ # This option protects your application from creating new tokens before old valid one becomes
72
+ # expired so your database doesn't bloat. Keep in mind that when this option is `on` Doorkeeper
73
+ # doesn't updates existing token expiration time, it will create a new token instead.
74
+ # Rationale: https://github.com/doorkeeper-gem/doorkeeper/issues/383
75
+ #
76
+ # reuse_access_token
77
+
78
+ # Issue access tokens with refresh token (disabled by default), you may also
79
+ # pass a block which accepts `context` to customize when to give a refresh
80
+ # token or not. Similar to `custom_access_token_expires_in`, `context` has
81
+ # the properties:
82
+ #
83
+ # `client` - the OAuth client application (see Doorkeeper::OAuth::Client)
84
+ # `grant_type` - the grant type of the request (see Doorkeeper::OAuth)
85
+ # `scopes` - the requested scopes (see Doorkeeper::OAuth::Scopes)
86
+ #
87
+ # use_refresh_token
88
+
89
+ # Forbids creating/updating applications with arbitrary scopes that are
90
+ # not in configuration, i.e. `default_scopes` or `optional_scopes`.
91
+ # (disabled by default)
92
+ #
93
+ # enforce_configured_scopes
94
+
95
+ # Provide support for an owner to be assigned to each registered application (disabled by default)
96
+ # Optional parameter confirmation: true (default false) if you want to enforce ownership of
97
+ # a registered application
98
+ # Note: you must also run the rails g doorkeeper:application_owner generator to provide the necessary support
99
+ #
100
+ # enable_application_owner confirmation: false
101
+
102
+ # Define access token scopes for your provider
103
+ # For more information go to
104
+ # https://github.com/doorkeeper-gem/doorkeeper/wiki/Using-Scopes
105
+ #
106
+ # default_scopes :public
107
+ # optional_scopes :write, :update
108
+
109
+ # Change the way client credentials are retrieved from the request object.
110
+ # By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
111
+ # falls back to the `:client_id` and `:client_secret` params from the `params` object.
112
+ # Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
113
+ # for more information on customization
114
+ #
115
+ # client_credentials :from_basic, :from_params
116
+
117
+ # Change the way access token is authenticated from the request object.
118
+ # By default it retrieves first from the `HTTP_AUTHORIZATION` header, then
119
+ # falls back to the `:access_token` or `:bearer_token` params from the `params` object.
120
+ # Check out https://github.com/doorkeeper-gem/doorkeeper/wiki/Changing-how-clients-are-authenticated
121
+ # for more information on customization
122
+ #
123
+ # access_token_methods :from_bearer_authorization, :from_access_token_param, :from_bearer_param
124
+
125
+ # Change the native redirect uri for client apps
126
+ # When clients register with the following redirect uri, they won't be redirected to any server and
127
+ # the authorizationcode will be displayed within the provider
128
+ # The value can be any string. Use nil to disable this feature. When disabled, clients must provide a valid URL
129
+ # (Similar behaviour: https://developers.google.com/accounts/docs/OAuth2InstalledApp#choosingredirecturi)
130
+ #
131
+ # native_redirect_uri 'urn:ietf:wg:oauth:2.0:oob'
132
+
133
+ # Forces the usage of the HTTPS protocol in non-native redirect uris (enabled
134
+ # by default in non-development environments). OAuth2 delegates security in
135
+ # communication to the HTTPS protocol so it is wise to keep this enabled.
136
+ #
137
+ # Callable objects such as proc, lambda, block or any object that responds to
138
+ # #call can be used in order to allow conditional checks (to allow non-SSL
139
+ # redirects to localhost for example).
140
+ #
141
+ # force_ssl_in_redirect_uri !Rails.env.development?
142
+ #
143
+ # force_ssl_in_redirect_uri { |uri| uri.host != 'localhost' }
144
+
145
+ # Specify what redirect URI's you want to block during Application creation.
146
+ # Any redirect URI is whitelisted by default.
147
+ #
148
+ # You can use this option in order to forbid URI's with 'javascript' scheme
149
+ # for example.
150
+ #
151
+ # forbid_redirect_uri { |uri| uri.scheme.to_s.downcase == 'javascript' }
152
+
153
+ # Specify how authorization errors should be handled.
154
+ # By default, doorkeeper renders json errors when access token
155
+ # is invalid, expired, revoked or has invalid scopes.
156
+ #
157
+ # If you want to render error response yourself (i.e. rescue exceptions),
158
+ # set handle_auth_errors to `:raise` and rescue Doorkeeper::Errors::InvalidToken
159
+ # or following specific errors:
160
+ #
161
+ # Doorkeeper::Errors::TokenForbidden, Doorkeeper::Errors::TokenExpired,
162
+ # Doorkeeper::Errors::TokenRevoked, Doorkeeper::Errors::TokenUnknown
163
+ #
164
+ # handle_auth_errors :raise
165
+
166
+ # Specify what grant flows are enabled in array of Strings. The valid
167
+ # strings and the flows they enable are:
168
+ #
169
+ # "authorization_code" => Authorization Code Grant Flow
170
+ # "implicit" => Implicit Grant Flow
171
+ # "password" => Resource Owner Password Credentials Grant Flow
172
+ # "client_credentials" => Client Credentials Grant Flow
173
+ #
174
+ # If not specified, Doorkeeper enables authorization_code and
175
+ # client_credentials.
176
+ #
177
+ # implicit and password grant flows have risks that you should understand
178
+ # before enabling:
179
+ # http://tools.ietf.org/html/rfc6819#section-4.4.2
180
+ # http://tools.ietf.org/html/rfc6819#section-4.4.3
181
+
182
+ grant_flows %w[authorization_code client_credentials implicit]
183
+
184
+ # Hook into the strategies' request & response life-cycle in case your
185
+ # application needs advanced customization or logging:
186
+ #
187
+ # before_successful_strategy_response do |request|
188
+ # puts "BEFORE HOOK FIRED! #{request}"
189
+ # end
190
+ #
191
+ # after_successful_strategy_response do |request, response|
192
+ # puts "AFTER HOOK FIRED! #{request}, #{response}"
193
+ # end
194
+
195
+ # Hook into Authorization flow in order to implement Single Sign Out
196
+ # or add ny other functionality.
197
+ #
198
+ # before_successful_authorization do |controller|
199
+ # Rails.logger.info(params.inspect)
200
+ # end
201
+ #
202
+ # after_successful_authorization do |controller|
203
+ # controller.session[:logout_urls] <<
204
+ # Doorkeeper::Application
205
+ # .find_by(controller.request.params.slice(:redirect_uri))
206
+ # .logout_uri
207
+ # end
208
+
209
+ # Under some circumstances you might want to have applications auto-approved,
210
+ # so that the user skips the authorization step.
211
+ # For example if dealing with a trusted application.
212
+ #
213
+ # skip_authorization do |resource_owner, client|
214
+ # client.superapp? or resource_owner.admin?
215
+ # end
216
+
217
+ # WWW-Authenticate Realm (default "Doorkeeper").
218
+ #
219
+ # realm "Doorkeeper"
220
+ end
@@ -0,0 +1,137 @@
1
+ en:
2
+ activerecord:
3
+ attributes:
4
+ doorkeeper/application:
5
+ name: 'Name'
6
+ redirect_uri: 'Redirect URI'
7
+ errors:
8
+ models:
9
+ doorkeeper/application:
10
+ attributes:
11
+ redirect_uri:
12
+ fragment_present: 'cannot contain a fragment.'
13
+ invalid_uri: 'must be a valid URI.'
14
+ relative_uri: 'must be an absolute URI.'
15
+ secured_uri: 'must be an HTTPS/SSL URI.'
16
+ forbidden_uri: 'is forbidden by the server.'
17
+ scopes:
18
+ not_match_configured: "doesn't match configured on the server."
19
+
20
+ doorkeeper:
21
+ applications:
22
+ confirmations:
23
+ destroy: 'Are you sure?'
24
+ buttons:
25
+ edit: 'Edit'
26
+ destroy: 'Destroy'
27
+ submit: 'Submit'
28
+ cancel: 'Cancel'
29
+ authorize: 'Authorize'
30
+ form:
31
+ error: 'Whoops! Check your form for possible errors'
32
+ help:
33
+ confidential: 'Application will be used where the client secret can be kept confidential. Native mobile apps and Single Page Apps are considered non-confidential.'
34
+ redirect_uri: 'Use one line per URI'
35
+ native_redirect_uri: 'Use %{native_redirect_uri} if you want to add localhost URIs for development purposes'
36
+ scopes: 'Separate scopes with spaces. Leave blank to use the default scopes.'
37
+ edit:
38
+ title: 'Edit application'
39
+ index:
40
+ title: 'Your applications'
41
+ new: 'New Application'
42
+ name: 'Name'
43
+ callback_url: 'Callback URL'
44
+ confidential: 'Confidential?'
45
+ actions: 'Actions'
46
+ confidentiality:
47
+ 'yes': 'Yes'
48
+ 'no': 'No'
49
+ new:
50
+ title: 'New Application'
51
+ show:
52
+ title: 'Application: %{name}'
53
+ application_id: 'Application UID'
54
+ secret: 'Secret'
55
+ scopes: 'Scopes'
56
+ confidential: 'Confidential'
57
+ callback_urls: 'Callback urls'
58
+ actions: 'Actions'
59
+
60
+ authorizations:
61
+ buttons:
62
+ authorize: 'Authorize'
63
+ deny: 'Deny'
64
+ error:
65
+ title: 'An error has occurred'
66
+ new:
67
+ title: 'Authorization required'
68
+ prompt: 'Authorize %{client_name} to use your account?'
69
+ able_to: 'This application will be able to'
70
+ show:
71
+ title: 'Authorization code'
72
+
73
+ authorized_applications:
74
+ confirmations:
75
+ revoke: 'Are you sure?'
76
+ buttons:
77
+ revoke: 'Revoke'
78
+ index:
79
+ title: 'Your authorized applications'
80
+ application: 'Application'
81
+ created_at: 'Created At'
82
+ date_format: '%Y-%m-%d %H:%M:%S'
83
+
84
+ pre_authorization:
85
+ status: 'Pre-authorization'
86
+
87
+ errors:
88
+ messages:
89
+ # Common error messages
90
+ invalid_request: 'The request is missing a required parameter, includes an unsupported parameter value, or is otherwise malformed.'
91
+ invalid_redirect_uri: "The requested redirect uri is malformed or doesn't match client redirect URI."
92
+ unauthorized_client: 'The client is not authorized to perform this request using this method.'
93
+ access_denied: 'The resource owner or authorization server denied the request.'
94
+ invalid_scope: 'The requested scope is invalid, unknown, or malformed.'
95
+ invalid_code_challenge_method: 'The code challenge method must be plain or S256.'
96
+ server_error: 'The authorization server encountered an unexpected condition which prevented it from fulfilling the request.'
97
+ temporarily_unavailable: 'The authorization server is currently unable to handle the request due to a temporary overloading or maintenance of the server.'
98
+
99
+ # Configuration error messages
100
+ credential_flow_not_configured: 'Resource Owner Password Credentials flow failed due to Doorkeeper.configure.resource_owner_from_credentials being unconfigured.'
101
+ resource_owner_authenticator_not_configured: 'Resource Owner find failed due to Doorkeeper.configure.resource_owner_authenticator being unconfigured.'
102
+ admin_authenticator_not_configured: 'Access to admin panel is forbidden due to Doorkeeper.configure.admin_authenticator being unconfigured.'
103
+
104
+ # Access grant errors
105
+ unsupported_response_type: 'The authorization server does not support this response type.'
106
+
107
+ # Access token errors
108
+ invalid_client: 'Client authentication failed due to unknown client, no client authentication included, or unsupported authentication method.'
109
+ invalid_grant: 'The provided authorization grant is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.'
110
+ unsupported_grant_type: 'The authorization grant type is not supported by the authorization server.'
111
+
112
+ invalid_token:
113
+ revoked: "The access token was revoked"
114
+ expired: "The access token expired"
115
+ unknown: "The access token is invalid"
116
+
117
+ flash:
118
+ applications:
119
+ create:
120
+ notice: 'Application created.'
121
+ destroy:
122
+ notice: 'Application deleted.'
123
+ update:
124
+ notice: 'Application updated.'
125
+ authorized_applications:
126
+ destroy:
127
+ notice: 'Application revoked.'
128
+
129
+ layouts:
130
+ admin:
131
+ title: 'Doorkeeper'
132
+ nav:
133
+ oauth2_provider: 'OAuth2 Provider'
134
+ applications: 'Applications'
135
+ home: 'Home'
136
+ application:
137
+ title: 'OAuth authorization required'
data/config/routes.rb CHANGED
@@ -4,6 +4,7 @@ Rails.application.routes.draw do
4
4
  require 'sidekiq/web'
5
5
 
6
6
  devise_for :users, controllers: { registrations: "users/registrations", omniauth_callbacks: "users/omniauth_callbacks" }
7
+ use_doorkeeper
7
8
 
8
9
  mount MailPreview => 'mail_view' if Rails.env.development?
9
10
 
@@ -0,0 +1,68 @@
1
+ class CreateDoorkeeperTables < ActiveRecord::Migration[5.2]
2
+ def change
3
+ create_table :oauth_applications do |t|
4
+ t.string :name, null: false
5
+ t.string :uid, null: false
6
+ t.string :secret, null: false
7
+ t.text :redirect_uri, null: false
8
+ t.string :scopes, null: false, default: ''
9
+ t.boolean :confidential, null: false, default: true
10
+ t.timestamps null: false
11
+ end
12
+
13
+ add_index :oauth_applications, :uid, unique: true
14
+
15
+ create_table :oauth_access_grants do |t|
16
+ t.references :resource_owner, null: false
17
+ t.references :application, null: false
18
+ t.string :token, null: false
19
+ t.integer :expires_in, null: false
20
+ t.text :redirect_uri, null: false
21
+ t.datetime :created_at, null: false
22
+ t.datetime :revoked_at
23
+ t.string :scopes
24
+ end
25
+
26
+ add_index :oauth_access_grants, :token, unique: true
27
+ add_foreign_key(
28
+ :oauth_access_grants,
29
+ :oauth_applications,
30
+ column: :application_id
31
+ )
32
+
33
+ create_table :oauth_access_tokens do |t|
34
+ t.references :resource_owner, index: true
35
+ t.references :application
36
+
37
+ # If you use a custom token generator you may need to change this column
38
+ # from string to text, so that it accepts tokens larger than 255
39
+ # characters. More info on custom token generators in:
40
+ # https://github.com/doorkeeper-gem/doorkeeper/tree/v3.0.0.rc1#custom-access-token-generator
41
+ #
42
+ # t.text :token, null: false
43
+ t.string :token, null: false
44
+
45
+ t.string :refresh_token
46
+ t.integer :expires_in
47
+ t.datetime :revoked_at
48
+ t.datetime :created_at, null: false
49
+ t.string :scopes
50
+
51
+ # If there is a previous_refresh_token column,
52
+ # refresh tokens will be revoked after a related access token is used.
53
+ # If there is no previous_refresh_token column,
54
+ # previous tokens are revoked as soon as a new access token is created.
55
+ # Comment out this line if you'd rather have refresh tokens
56
+ # instantly revoked.
57
+ t.string :previous_refresh_token, null: false, default: ""
58
+ end
59
+
60
+ add_index :oauth_access_tokens, :token, unique: true
61
+ add_index :oauth_access_tokens, :refresh_token, unique: true
62
+ add_foreign_key(
63
+ :oauth_access_tokens,
64
+ :oauth_applications,
65
+ column: :application_id
66
+ )
67
+ end
68
+ end
@@ -0,0 +1,6 @@
1
+ class EnablePkce < ActiveRecord::Migration[5.2]
2
+ def change
3
+ add_column :oauth_access_grants, :code_challenge, :string, null: true
4
+ add_column :oauth_access_grants, :code_challenge_method, :string, null: true
5
+ end
6
+ end
@@ -1,5 +1,14 @@
1
+ def require_name(dependency_name)
2
+ case dependency_name
3
+ when 'devise-doorkeeper'
4
+ 'devise/doorkeeper'
5
+ else
6
+ dependency_name
7
+ end
8
+ end
9
+
1
10
  Gem.loaded_specs['hackathon_manager'].dependencies.each do |d|
2
- require d.name
11
+ require require_name(d.name)
3
12
  end
4
13
 
5
14
  module HackathonManager
@@ -33,7 +42,11 @@ module HackathonManager
33
42
  end
34
43
 
35
44
  initializer 'hackathon_manager.factories', after: 'factory_bot.set_factory_paths' do
36
- FactoryBot.definition_file_paths << File.expand_path('../../test/factories', __dir__) if defined?(FactoryBot)
45
+ if defined?(FactoryBot)
46
+ FactoryBot.definition_file_paths << File.expand_path('../../test/factories', __dir__)
47
+ # doorkeeper_dir = Gem::Specification.find_by_name('doorkeeper').gem_dir
48
+ # FactoryBot.definition_file_paths << File.join(doorkeeper_dir, 'spec/factories')
49
+ end
37
50
  end
38
51
 
39
52
  ActionController::Base.class_eval do
@@ -1,3 +1,3 @@
1
1
  module HackathonManager
2
- VERSION = '0.9.2'.freeze
2
+ VERSION = '0.10.0'.freeze
3
3
  end
@@ -0,0 +1,30 @@
1
+ # Temporary fix until https://github.com/doorkeeper-gem/doorkeeper/pull/1176 merges
2
+
3
+ FactoryBot.define do
4
+ factory :access_grant, class: "Doorkeeper::AccessGrant" do
5
+ sequence(:resource_owner_id) { |n| n }
6
+ application
7
+ redirect_uri { 'https://app.com/callback' }
8
+ expires_in { 100 }
9
+ scopes { 'public write' }
10
+ end
11
+
12
+ factory :access_token, class: "Doorkeeper::AccessToken" do
13
+ sequence(:resource_owner_id) { |n| n }
14
+ application
15
+ expires_in { 2.hours }
16
+
17
+ factory :clientless_access_token do
18
+ application { nil }
19
+ end
20
+ end
21
+
22
+ factory :application, class: "Doorkeeper::Application" do
23
+ sequence(:name) { |n| "Application #{n}" }
24
+ redirect_uri { 'https://app.com/callback' }
25
+ end
26
+
27
+ # do not name this factory :user, otherwise it will conflict with factories
28
+ # from applications that use doorkeeper factories in their own tests
29
+ factory :doorkeeper_testing_user, class: :user
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hackathon_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stuart Olivera
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-26 00:00:00.000000000 Z
11
+ date: 2019-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -108,6 +108,34 @@ dependencies:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: doorkeeper
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '5.0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '5.0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: devise-doorkeeper
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: httparty
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -602,12 +630,14 @@ files:
602
630
  - config/initializers/ajax_datatables_rails.rb
603
631
  - config/initializers/chartkick.rb
604
632
  - config/initializers/devise.rb
633
+ - config/initializers/doorkeeper.rb
605
634
  - config/initializers/mime_types.rb
606
635
  - config/initializers/new_framework_defaults.rb
607
636
  - config/initializers/sidekiq.rb
608
637
  - config/initializers/simple_form.rb
609
638
  - config/initializers/simple_form_bootstrap.rb
610
639
  - config/initializers/wrap_parameters.rb
640
+ - config/locales/doorkeeper.en.yml
611
641
  - config/locales/en.yml
612
642
  - config/routes.rb
613
643
  - db/migrate/20141011210642_create_participants.rb
@@ -656,6 +686,8 @@ files:
656
686
  - db/migrate/20180701160855_remove_email_from_questionnaires.rb
657
687
  - db/migrate/20180801144544_add_type_to_messages.rb
658
688
  - db/migrate/20181125213158_add_grad_year_and_race_ethnicity_to_questionnaires.rb
689
+ - db/migrate/20181221194407_create_doorkeeper_tables.rb
690
+ - db/migrate/20181221195241_enable_pkce.rb
659
691
  - db/schools.csv
660
692
  - db/seed_messages/questionnaire--accepted.md
661
693
  - db/seed_messages/questionnaire--denied.md
@@ -674,6 +706,7 @@ files:
674
706
  - test/factories/questionnaire.rb
675
707
  - test/factories/school.rb
676
708
  - test/factories/school_name_duplicate.rb
709
+ - test/factories/temp_doorkeeper.rb
677
710
  - test/factories/users.rb
678
711
  homepage: https://github.com/sman591/hackathon_manager
679
712
  licenses:
@@ -694,8 +727,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
694
727
  - !ruby/object:Gem::Version
695
728
  version: '0'
696
729
  requirements: []
697
- rubyforge_project:
698
- rubygems_version: 2.7.6
730
+ rubygems_version: 3.0.1
699
731
  signing_key:
700
732
  specification_version: 4
701
733
  summary: Full-featured application for managing hackathon logistics