upframework 0.2.0 → 0.2.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/upframework/api_extensions.rb +30 -0
- data/app/controllers/upframework/resources_controller.rb +95 -0
- data/app/controllers/upframework/searches_controller.rb +1 -5
- data/app/services/upframework/base_service.rb +1 -1
- data/config/routes.rb +1 -0
- data/lib/upframework/engine.rb +4 -0
- data/lib/upframework/version.rb +1 -1
- data/lib/upframework.rb +0 -1
- metadata +32 -4
- data/app/controllers/upframework/api_controller.rb +0 -33
- data/lib/upframework/searches/routes.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b5dc4e38225f1091ec9ededb3e0403156c9806a95e0b23c22c03169a030fda1b
|
4
|
+
data.tar.gz: 68be508da24fb695aea2029b0ac78cf0dfb5408ee3d8c3997fb67caf921a7698
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dc9e6fc1fa2df5b5f710a755bf5814e787d06f16c5792fcefaa8339940bdd73dc50eb72e25ca73ee7a2710085ce2472c65f15be4b89dcef13fdce09b61db6aae
|
7
|
+
data.tar.gz: 43d03176e6695273b2216b214d5730f59de656b19dba481fd44e1eb2da78216397db2e9dfeeb032bcb07a729d0ffdd788420080cb0f8720d9de25132344a93c6
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Upframework
|
2
|
+
module ApiExtensions
|
3
|
+
extend ::ActiveSupport::Concern
|
4
|
+
|
5
|
+
included do
|
6
|
+
include ::DeviseTokenAuth::Concerns::SetUserByToken
|
7
|
+
include ::Upframework::ErrorHandler
|
8
|
+
include ::Upframework::TransformParamKeys
|
9
|
+
include ::Upframework::ServiceEndpoint
|
10
|
+
include ::Upframework::RenderExtensions
|
11
|
+
|
12
|
+
# need to skip this on non-resource controller
|
13
|
+
# > skip_authorize_resource
|
14
|
+
authorize_resource unless: :devise_controller?
|
15
|
+
|
16
|
+
rescue_from CanCan::AccessDenied do |exception|
|
17
|
+
respond_to do |format|
|
18
|
+
format.json { render json: { success: false, error: exception.message }, status: :forbidden }
|
19
|
+
format.html { redirect_to main_app.root_url, alert: exception.message }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def extra_params
|
26
|
+
[] # Override in specific controllers for custom params
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
module Upframework
|
2
|
+
class ResourcesController < ApplicationController
|
3
|
+
before_action :set_base_resource
|
4
|
+
|
5
|
+
def show
|
6
|
+
base_resource
|
7
|
+
|
8
|
+
yield if block_given?
|
9
|
+
render_serialized base_resource
|
10
|
+
end
|
11
|
+
|
12
|
+
def update
|
13
|
+
if base_resource.update(base_resource_params)
|
14
|
+
yield if block_given?
|
15
|
+
render_serialized base_resource
|
16
|
+
else
|
17
|
+
render_errors base_resource.errors.full_messages
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def index
|
22
|
+
base_resource
|
23
|
+
|
24
|
+
yield if block_given?
|
25
|
+
render_serialized base_resource, includes: params[:includes]
|
26
|
+
end
|
27
|
+
|
28
|
+
def create
|
29
|
+
if base_resource.save
|
30
|
+
|
31
|
+
yield if block_given?
|
32
|
+
render_serialized base_resource
|
33
|
+
else
|
34
|
+
render_errors base_resource.errors.full_messages
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
base_resource.destroy
|
40
|
+
head :no_content
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def base_resource
|
46
|
+
if params[:id]
|
47
|
+
instance_variable_get("@#{base_resource_name}")
|
48
|
+
else
|
49
|
+
instance_variable_get("@#{base_resource_name.pluralize}")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def set_base_resource
|
54
|
+
data =
|
55
|
+
if params[:id]
|
56
|
+
base_resource_class.find(params[:id])
|
57
|
+
elsif action_name == 'index'
|
58
|
+
base_resource_class.accessible_by(current_ability).where(base_resource_params || {})
|
59
|
+
elsif action_name == 'create'
|
60
|
+
base_resource_class.new(base_resource_params)
|
61
|
+
end
|
62
|
+
|
63
|
+
resource_name = %w[index create].include?(action_name) \
|
64
|
+
? base_resource_name.pluralize \
|
65
|
+
: base_resource_name
|
66
|
+
|
67
|
+
instance_variable_set("@#{resource_name}", data) if data
|
68
|
+
end
|
69
|
+
|
70
|
+
def base_resource_params
|
71
|
+
base_name = base_resource_name
|
72
|
+
|
73
|
+
base_name = base_name.pluralize unless params.key?(base_name)
|
74
|
+
|
75
|
+
params.fetch(base_name).permit(*permitted_columns)
|
76
|
+
end
|
77
|
+
|
78
|
+
def permitted_columns
|
79
|
+
columns = base_resource_class.accessible_fields_by(accessors)
|
80
|
+
columns.concat(extra_params)
|
81
|
+
end
|
82
|
+
|
83
|
+
def accessors
|
84
|
+
current_user
|
85
|
+
end
|
86
|
+
|
87
|
+
def base_resource_name
|
88
|
+
controller_name.singularize
|
89
|
+
end
|
90
|
+
|
91
|
+
def base_resource_class
|
92
|
+
base_resource_name.classify.safe_constantize
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module Upframework
|
2
|
-
class SearchesController <
|
2
|
+
class SearchesController < ApplicationController
|
3
3
|
skip_authorize_resource
|
4
4
|
|
5
|
-
authorize_resource class: :search
|
6
|
-
|
7
|
-
skip_before_action :set_base_resource
|
8
|
-
|
9
5
|
def index
|
10
6
|
args = { current_ability: current_ability, current_user: current_user }
|
11
7
|
args.merge!(permitted_params)
|
@@ -14,7 +14,7 @@ module Upframework
|
|
14
14
|
|
15
15
|
self.class.send(:attr_reader, *attributes.keys)
|
16
16
|
|
17
|
-
#TODO: Remove.
|
17
|
+
#TODO: Remove. This should be handled on the child class.
|
18
18
|
attributes.each do |key, value|
|
19
19
|
instance_variable_set("@#{key}", value)
|
20
20
|
end
|
data/config/routes.rb
CHANGED
data/lib/upframework/engine.rb
CHANGED
data/lib/upframework/version.rb
CHANGED
data/lib/upframework.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upframework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jude_cali
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-04-
|
11
|
+
date: 2020-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,6 +30,34 @@ dependencies:
|
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: 6.0.2.1
|
33
|
+
- !ruby/object:Gem::Dependency
|
34
|
+
name: cancancan
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - "~>"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 3.1.0
|
40
|
+
type: :runtime
|
41
|
+
prerelease: false
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 3.1.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: fast_jsonapi
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.5'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.5'
|
33
61
|
description: Rails framework extensions
|
34
62
|
email:
|
35
63
|
- jcalimbas@fullscale.io
|
@@ -46,7 +74,8 @@ files:
|
|
46
74
|
- app/controllers/concerns/upframework/error_handler.rb
|
47
75
|
- app/controllers/concerns/upframework/render_extensions.rb
|
48
76
|
- app/controllers/concerns/upframework/transform_param_keys.rb
|
49
|
-
- app/controllers/upframework/
|
77
|
+
- app/controllers/upframework/api_extensions.rb
|
78
|
+
- app/controllers/upframework/resources_controller.rb
|
50
79
|
- app/controllers/upframework/searches_controller.rb
|
51
80
|
- app/helpers/upframework/application_helper.rb
|
52
81
|
- app/jobs/upframework/application_job.rb
|
@@ -60,7 +89,6 @@ files:
|
|
60
89
|
- lib/tasks/upframework_tasks.rake
|
61
90
|
- lib/upframework.rb
|
62
91
|
- lib/upframework/engine.rb
|
63
|
-
- lib/upframework/searches/routes.rb
|
64
92
|
- lib/upframework/services/routes.rb
|
65
93
|
- lib/upframework/version.rb
|
66
94
|
homepage: https://gitlab.com/disruptors/upframework
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Upframework
|
2
|
-
class ApiController < ::ApplicationController
|
3
|
-
include ::DeviseTokenAuth::Concerns::SetUserByToken
|
4
|
-
include ::Upframework::ErrorHandler
|
5
|
-
include ::Upframework::TransformParamKeys
|
6
|
-
include ::Upframework::CrudEndpoint
|
7
|
-
include ::Upframework::ServiceEndpoint
|
8
|
-
include ::Upframework::RenderExtensions
|
9
|
-
|
10
|
-
before_action :authenticate!
|
11
|
-
|
12
|
-
# need to skip this on non-resource controller
|
13
|
-
# > skip_authorize_resource
|
14
|
-
authorize_resource
|
15
|
-
|
16
|
-
rescue_from CanCan::AccessDenied do |exception|
|
17
|
-
respond_to do |format|
|
18
|
-
format.json { render json: { success: false, error: exception.message }, status: :forbidden }
|
19
|
-
format.html { redirect_to main_app.root_url, alert: exception.message }
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def authenticate!
|
24
|
-
super || authenticate_user!
|
25
|
-
end
|
26
|
-
|
27
|
-
protected
|
28
|
-
|
29
|
-
def extra_params
|
30
|
-
[] # Override in specific controllers for custom params
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
module Upframework
|
2
|
-
module Searches
|
3
|
-
module Routes
|
4
|
-
def self.load(namespace: nil, **options)
|
5
|
-
Rails.application.routes.draw do
|
6
|
-
# Create a route for searches
|
7
|
-
# ex.
|
8
|
-
# GET searches
|
9
|
-
get [namespace, "search"].compact.join("/"), to: "searches#index"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|