bullet_train-api 1.3.15 → 1.3.17

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: 83ae4c9d332a3c66c9576b58b264ba07936ee21b8714e112e744dadef9e6757c
4
- data.tar.gz: dcc30410355433d529a042076f38810dba8f09b0b0eb60c423794ca1e25ef5d7
3
+ metadata.gz: 9bd21b8d9bef3aaf2459c4bce32197d88a29b9346a499695a0d94d078e1e8591
4
+ data.tar.gz: 67757160ccf1b7a5a072047d11f7a203f881e08e1383cd9ab7dc51a81e211cd0
5
5
  SHA512:
6
- metadata.gz: 9b47b2d9f02f66dec326da01ace4672ca344c8094fca2a936d46e9f53d024dc36e3ea7936c14c3bba5fd145b4594f84ed0473d88f168c10de99f5121038ea232
7
- data.tar.gz: 523bc7ead373d0fcfabafc7c52e621b33430eca2de8746945638d42bcf6124a4228f37283fa4a444d15c3030cf7c2367e46132154b38b2dfb75750a838cbd858
6
+ metadata.gz: 77d721f4bf15c2f1fe3d3f41372073f1d7a6db69b5777f32a0325df655a31f6bb4d5866683eff92b0c145dffa5d81b24afc3bb273fdc2d15d81f4de53e1987ed
7
+ data.tar.gz: 65a9b312db8dd9ced25f98ea8df1c205cdf14d8ab6bd8b35bec8382371ea212e2986ca038cf42047b7f80116d17d6acc3de0b4ce40bcddacda77c871e55b4485
@@ -89,6 +89,10 @@ module Api::Controllers::Base
89
89
  current_user&.teams&.first
90
90
  end
91
91
 
92
+ def current_membership
93
+ current_user.memberships.where(team: current_team).first
94
+ end
95
+
92
96
  def collection_variable
93
97
  @collection_variable ||= "@#{self.class.name.split("::").last.gsub("Controller", "").underscore}"
94
98
  end
@@ -0,0 +1,66 @@
1
+ module Api::V1::Invitations::ControllerBase
2
+ extend ActiveSupport::Concern
3
+
4
+ module StrongParameters
5
+ # Only allow a list of trusted parameters through.
6
+ def invitation_params
7
+ strong_params = params.require(:invitation).permit(
8
+ *permitted_fields,
9
+ :email,
10
+ # 🚅 super scaffolding will insert new fields above this line.
11
+ *permitted_arrays,
12
+ # 🚅 super scaffolding will insert new arrays above this line
13
+ )
14
+
15
+ process_params(strong_params)
16
+
17
+ strong_params
18
+ end
19
+ end
20
+
21
+ included do
22
+ load_and_authorize_resource :invitation, class: "Invitation", prepend: true,
23
+ member_actions: (defined?(MEMBER_ACTIONS) ? MEMBER_ACTIONS : []),
24
+ collection_actions: (defined?(COLLECTION_ACTIONS) ? COLLECTION_ACTIONS : [])
25
+
26
+ private
27
+
28
+ include StrongParameters
29
+ end
30
+
31
+ # GET /api/v1/teams/:team_id/invitations
32
+ def index
33
+ end
34
+
35
+ # GET /api/v1/invitations/:id
36
+ def show
37
+ end
38
+
39
+ # POST /api/v1/teams/:team_id/invitations
40
+ def create
41
+ @invitation.membership.team = current_team
42
+ # this allows notifications to be sent to a user before they've accepted their invitation.
43
+ @invitation.membership.user_email = @invitation.email
44
+ @invitation.from_membership = current_membership
45
+ if @invitation.save
46
+ render :show, status: :created, location: [:api, :v1, @invitation]
47
+ else
48
+ render json: @invitation.errors, status: :unprocessable_entity
49
+ end
50
+ end
51
+
52
+ # POST /api/v1/invitations/1/resend
53
+ def resend
54
+ if @invitation.touch
55
+ UserMailer.invited(params[:id]).deliver_later
56
+ render :show, status: :ok, location: [:api, :v1, @invitation]
57
+ else
58
+ render json: @invitation.errors, status: :unprocessable_entity
59
+ end
60
+ end
61
+
62
+ # DELETE /api/v1/invitations/:id
63
+ def destroy
64
+ @invitation.destroy
65
+ end
66
+ end
@@ -7,13 +7,6 @@ module Api
7
7
  lines.unshift(first_line).join.html_safe
8
8
  end
9
9
 
10
- # TODO: Remove this method? It's not being used anywhere
11
- def components_for(model)
12
- for_model model do
13
- indent(render("api/#{@version}/open_api/#{model.name.underscore.pluralize}/components"), 2)
14
- end
15
- end
16
-
17
10
  def current_model
18
11
  @model_stack.last
19
12
  end
@@ -112,22 +105,6 @@ module Api
112
105
  end
113
106
  end
114
107
 
115
- def attribute(attribute)
116
- heading = t("#{current_model.name.underscore.pluralize}.fields.#{attribute}.heading")
117
- attribute_data = current_model.columns_hash[attribute.to_s]
118
-
119
- # Default to `string` when the type returns nil.
120
- type = attribute_data.nil? ? "string" : attribute_data.type
121
-
122
- attribute_block = <<~YAML
123
- #{attribute}:
124
- description: "#{heading}"
125
- type: #{type}
126
- YAML
127
- indent(attribute_block.chomp, 2)
128
- end
129
- alias_method :parameter, :attribute
130
-
131
108
  private
132
109
 
133
110
  def has_strong_parameters?(controller)
@@ -0,0 +1 @@
1
+ json.array! @invitations, partial: "api/v1/invitations/invitation", as: :invitation
@@ -0,0 +1 @@
1
+ json.partial! "api/v1/invitations/invitation", invitation: @invitation
@@ -0,0 +1,19 @@
1
+ /invitations/{id}/resend:
2
+ post:
3
+ tags:
4
+ - Invitation
5
+ summary: "Resend Invitation"
6
+ operationId: resendInvitation
7
+ parameters:
8
+ - $ref: "#/components/parameters/id"
9
+ responses:
10
+ "404":
11
+ description: "Not Found"
12
+ "200":
13
+ description: "OK"
14
+ content:
15
+ application/json:
16
+ schema:
17
+ $ref: "#/components/schemas/InvitationAttributes"
18
+ example:
19
+ <%= FactoryBot.get_example(:invitation, version: @version) %>
data/config/routes.rb CHANGED
@@ -27,7 +27,11 @@ Rails.application.routes.draw do
27
27
  shallow do
28
28
  resources :users
29
29
  resources :teams do
30
- resources :invitations
30
+ resources :invitations do
31
+ member do
32
+ post :resend
33
+ end
34
+ end
31
35
  resources :memberships
32
36
  namespace :platform do
33
37
  resources :applications do
@@ -4,13 +4,13 @@ module FactoryBot
4
4
  module ExampleBot
5
5
  attr_accessor :tables_to_reset
6
6
 
7
- def example(model, **options)
7
+ def example(model, **)
8
8
  @tables_to_reset = [model.to_s.pluralize]
9
9
 
10
10
  object = nil
11
11
 
12
12
  ActiveRecord::Base.transaction do
13
- instance = FactoryBot.create(factory(model), **options)
13
+ instance = FactoryBot.create(factory(model), **)
14
14
  object = deep_clone(instance)
15
15
 
16
16
  raise ActiveRecord::Rollback
@@ -20,13 +20,13 @@ module FactoryBot
20
20
  object
21
21
  end
22
22
 
23
- def example_list(model, quantity, **options)
23
+ def example_list(model, quantity, **)
24
24
  @tables_to_reset = [model.to_s.pluralize]
25
25
 
26
26
  objects = []
27
27
 
28
28
  ActiveRecord::Base.transaction do
29
- instances = FactoryBot.create_list(factory(model), quantity, **options)
29
+ instances = FactoryBot.create_list(factory(model), quantity, **)
30
30
 
31
31
  instances.each do |instance|
32
32
  objects << deep_clone(instance)
@@ -1,5 +1,5 @@
1
1
  module BulletTrain
2
2
  module Api
3
- VERSION = "1.3.15"
3
+ VERSION = "1.3.17"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bullet_train-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.15
4
+ version: 1.3.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Culver
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-24 00:00:00.000000000 Z
11
+ date: 2023-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: standard
@@ -153,6 +153,7 @@ files:
153
153
  - app/controllers/api/open_api_controller.rb
154
154
  - app/controllers/api/v1/platform/access_tokens_controller.rb
155
155
  - app/controllers/concerns/api/controllers/base.rb
156
+ - app/controllers/concerns/api/v1/invitations/controller_base.rb
156
157
  - app/controllers/concerns/api/v1/memberships/controller_base.rb
157
158
  - app/controllers/concerns/api/v1/teams/controller_base.rb
158
159
  - app/controllers/concerns/api/v1/users/controller_base.rb
@@ -176,8 +177,11 @@ files:
176
177
  - app/views/account/platform/applications/new.html.erb
177
178
  - app/views/account/platform/applications/show.html.erb
178
179
  - app/views/account/platform/connections/new.html.erb
180
+ - app/views/api/v1/invitations/index.json.jbuilder
181
+ - app/views/api/v1/invitations/show.json.jbuilder
179
182
  - app/views/api/v1/memberships/index.json.jbuilder
180
183
  - app/views/api/v1/memberships/show.json.jbuilder
184
+ - app/views/api/v1/open_api/invitations/_paths.yaml.erb
181
185
  - app/views/api/v1/open_api/shared/_paths.yaml.erb
182
186
  - app/views/api/v1/open_api/teams/_paths.yaml.erb
183
187
  - app/views/api/v1/open_api/users/_paths.yaml.erb