bullet_train-api 1.1.0 → 1.1.1
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/app/controllers/concerns/api/controllers/base.rb +69 -0
- data/app/controllers/concerns/api/v1/teams/controller_base.rb +49 -0
- data/app/controllers/concerns/api/v1/users/controller_base.rb +42 -0
- data/app/views/api/v1/teams/index.json.jbuilder +5 -0
- data/app/views/api/v1/teams/show.json.jbuilder +1 -0
- data/app/views/api/v1/users/index.json.jbuilder +5 -0
- data/app/views/api/v1/users/show.json.jbuilder +1 -0
- data/config/routes.rb +15 -1
- data/lib/bullet_train/api/version.rb +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad13ea6c52199631e43bc3ef4367f886d64568faea6d88dd3f5f1857bb0416e2
|
4
|
+
data.tar.gz: 90deafe4bb3b6680f0ccaa79e715e66cfcadf247053c651badf489f4ab845e95
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a254ff4f0174985973a4ac4c1b28d4d6d20cc547633a34da3277393d46470485f623126f5560425b5e1e124a8832a360e9a4f9ab343a6d8704bb9669553edaed
|
7
|
+
data.tar.gz: 3a726a97a5070fdfbb092b6437e90c7019de0fd9a256bcffa035cbdcb5496ee5ac9e2212ef499297686fed843d2fba87cc47984c60199253ca685d1b96d91cfe
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require "pagy_cursor/pagy/extras/cursor"
|
2
|
+
require "pagy_cursor/pagy/extras/uuid_cursor"
|
3
|
+
|
4
|
+
module Api::Controllers::Base
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
# TODO Why doesn't `before_action :doorkeeper_authorize!` throw an exception?
|
8
|
+
class NotAuthenticatedError < StandardError
|
9
|
+
end
|
10
|
+
|
11
|
+
included do
|
12
|
+
include ActionController::Helpers
|
13
|
+
helper ApplicationHelper
|
14
|
+
|
15
|
+
include LoadsAndAuthorizesResource
|
16
|
+
include Pagy::Backend
|
17
|
+
|
18
|
+
before_action :set_default_response_format
|
19
|
+
before_action :doorkeeper_authorize!
|
20
|
+
|
21
|
+
rescue_from CanCan::AccessDenied, ActiveRecord::RecordNotFound do |exception|
|
22
|
+
render json: {error: "Not found"}, status: :not_found
|
23
|
+
end
|
24
|
+
|
25
|
+
rescue_from NotAuthenticatedError do |exception|
|
26
|
+
render json: {error: "Invalid token"}, status: :unauthorized
|
27
|
+
end
|
28
|
+
|
29
|
+
before_action :apply_pagination, only: [:index]
|
30
|
+
end
|
31
|
+
|
32
|
+
def permitted_fields
|
33
|
+
[]
|
34
|
+
end
|
35
|
+
|
36
|
+
def permitted_arrays
|
37
|
+
{}
|
38
|
+
end
|
39
|
+
|
40
|
+
def process_params(strong_params)
|
41
|
+
end
|
42
|
+
|
43
|
+
def current_user
|
44
|
+
raise NotAuthenticatedError unless doorkeeper_token.present?
|
45
|
+
@current_user ||= User.find_by(id: doorkeeper_token[:resource_owner_id])
|
46
|
+
end
|
47
|
+
|
48
|
+
def current_team
|
49
|
+
# Application agents are users but only have one team.
|
50
|
+
current_user&.teams&.first
|
51
|
+
end
|
52
|
+
|
53
|
+
def apply_pagination
|
54
|
+
collection_variable = "@#{self.class.name.split("::").last.gsub("Controller", "").underscore}"
|
55
|
+
collection = instance_variable_get collection_variable
|
56
|
+
@pagy, collection = pagy_cursor collection
|
57
|
+
instance_variable_set collection_variable, collection
|
58
|
+
end
|
59
|
+
|
60
|
+
def set_default_response_format
|
61
|
+
request.format = :json
|
62
|
+
end
|
63
|
+
|
64
|
+
class_methods do
|
65
|
+
def regex_to_remove_controller_namespace
|
66
|
+
/^#{name.split("::").first(2).join("::") + "::"}/
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Api::V1::Teams::ControllerBase
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
module StrongParameters
|
5
|
+
# Only allow a list of trusted parameters through.
|
6
|
+
def team_params
|
7
|
+
strong_params = params.require(:team).permit(
|
8
|
+
*permitted_fields,
|
9
|
+
:name,
|
10
|
+
:time_zone,
|
11
|
+
:locale,
|
12
|
+
# 🚅 super scaffolding will insert new fields above this line.
|
13
|
+
*permitted_arrays,
|
14
|
+
# 🚅 super scaffolding will insert new arrays above this line.
|
15
|
+
)
|
16
|
+
|
17
|
+
process_params(strong_params)
|
18
|
+
|
19
|
+
strong_params
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
included do
|
24
|
+
load_and_authorize_resource :team, class: "Team", prepend: true,
|
25
|
+
member_actions: (defined?(MEMBER_ACTIONS) ? MEMBER_ACTIONS : []),
|
26
|
+
collection_actions: (defined?(COLLECTION_ACTIONS) ? COLLECTION_ACTIONS : [])
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
include StrongParameters
|
31
|
+
end
|
32
|
+
|
33
|
+
# GET /api/v1/teams
|
34
|
+
def index
|
35
|
+
end
|
36
|
+
|
37
|
+
# GET /api/v1/teams/:id
|
38
|
+
def show
|
39
|
+
end
|
40
|
+
|
41
|
+
# PATCH/PUT /api/v1/teams/:id
|
42
|
+
def update
|
43
|
+
if @team.update(team_params)
|
44
|
+
render :show
|
45
|
+
else
|
46
|
+
render json: @team.errors, status: :unprocessable_entity
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Api::V1::Users::ControllerBase
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
module StrongParameters
|
5
|
+
# Only allow a list of trusted parameters through.
|
6
|
+
def user_params
|
7
|
+
strong_params = params.require(:user).permit(
|
8
|
+
*permitted_fields,
|
9
|
+
:email,
|
10
|
+
:first_name,
|
11
|
+
:last_name,
|
12
|
+
:time_zone,
|
13
|
+
:locale,
|
14
|
+
# 🚅 super scaffolding will insert new fields above this line.
|
15
|
+
*permitted_arrays,
|
16
|
+
# 🚅 super scaffolding will insert new arrays above this line.
|
17
|
+
)
|
18
|
+
|
19
|
+
process_params(strong_params)
|
20
|
+
|
21
|
+
strong_params
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
included do
|
26
|
+
load_and_authorize_resource :user, class: "User", prepend: true,
|
27
|
+
member_actions: (defined?(MEMBER_ACTIONS) ? MEMBER_ACTIONS : []),
|
28
|
+
collection_actions: (defined?(COLLECTION_ACTIONS) ? COLLECTION_ACTIONS : [])
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
include StrongParameters
|
33
|
+
end
|
34
|
+
|
35
|
+
# GET /api/v1/users
|
36
|
+
def index
|
37
|
+
end
|
38
|
+
|
39
|
+
# GET /api/v1/users/:id
|
40
|
+
def show
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! "api/v1/teams/team", team: @team
|
@@ -0,0 +1 @@
|
|
1
|
+
json.partial! "api/v1/users/user", user: @user
|
data/config/routes.rb
CHANGED
@@ -1,4 +1,18 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
2
|
use_doorkeeper
|
3
|
-
|
3
|
+
|
4
|
+
namespace :api do
|
5
|
+
namespace :v1 do
|
6
|
+
shallow do
|
7
|
+
resources :users
|
8
|
+
resources :teams do
|
9
|
+
resources :invitations
|
10
|
+
resources :memberships
|
11
|
+
namespace :platform do
|
12
|
+
resources :applications
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
4
18
|
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.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Culver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-09-
|
11
|
+
date: 2022-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: standard
|
@@ -120,6 +120,9 @@ files:
|
|
120
120
|
- Rakefile
|
121
121
|
- app/assets/config/bullet_train_api_manifest.js
|
122
122
|
- app/controllers/account/platform/applications_controller.rb
|
123
|
+
- app/controllers/concerns/api/controllers/base.rb
|
124
|
+
- app/controllers/concerns/api/v1/teams/controller_base.rb
|
125
|
+
- app/controllers/concerns/api/v1/users/controller_base.rb
|
123
126
|
- app/models/platform/application.rb
|
124
127
|
- app/views/account/platform/applications/_application.json.jbuilder
|
125
128
|
- app/views/account/platform/applications/_breadcrumbs.html.erb
|
@@ -132,6 +135,10 @@ files:
|
|
132
135
|
- app/views/account/platform/applications/new.html.erb
|
133
136
|
- app/views/account/platform/applications/show.html.erb
|
134
137
|
- app/views/account/platform/applications/show.json.jbuilder
|
138
|
+
- app/views/api/v1/teams/index.json.jbuilder
|
139
|
+
- app/views/api/v1/teams/show.json.jbuilder
|
140
|
+
- app/views/api/v1/users/index.json.jbuilder
|
141
|
+
- app/views/api/v1/users/show.json.jbuilder
|
135
142
|
- config/locales/en/api.en.yml
|
136
143
|
- config/locales/en/me.en.yml
|
137
144
|
- config/locales/en/platform/applications.en.yml
|