bullet_train-api 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|