upframework 0.2.0 → 0.2.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/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
|