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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01aa46c287d2a52c8fb32619543e90f984269b7186ad4f358665a84428618b4e
4
- data.tar.gz: 9c310448029653953ee6fb7cda77ff9da622fd2e6e711db9eed4d4038bed1504
3
+ metadata.gz: b5dc4e38225f1091ec9ededb3e0403156c9806a95e0b23c22c03169a030fda1b
4
+ data.tar.gz: 68be508da24fb695aea2029b0ac78cf0dfb5408ee3d8c3997fb67caf921a7698
5
5
  SHA512:
6
- metadata.gz: e0abf86d1dda28bda9e7224307af334f2a26c5e7da4065ca749b4fa6fccead7518a173e7e9cc4b7c17d6e08be0cc3589e866d49238f6b767cbc4118e80cc0783
7
- data.tar.gz: 919879cab48a3800d1bacf8040a69d4961366cef98699362a28a407f4a34d1a89ff9160efcea3063f284711fafc28aa6a0ce5d64a6c86674e150e74ce12af250
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 < Upframework::ApiController
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. this should be done on the child class.
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
@@ -1,2 +1,3 @@
1
1
  Upframework::Engine.routes.draw do
2
+ get "search", to: "searches#index"
2
3
  end
@@ -1,5 +1,9 @@
1
1
  module Upframework
2
2
  class Engine < ::Rails::Engine
3
3
  isolate_namespace Upframework
4
+
5
+ config.to_prepare do
6
+ ApplicationController.include ::Upframework::ApiExtensions
7
+ end
4
8
  end
5
9
  end
@@ -1,3 +1,3 @@
1
1
  module Upframework
2
- VERSION = '0.2.0'
2
+ VERSION = '0.2.1'
3
3
  end
data/lib/upframework.rb CHANGED
@@ -5,4 +5,3 @@ module Upframework
5
5
  end
6
6
 
7
7
  require "upframework/services/routes"
8
- require "upframework/searches/routes"
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.0
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-03 00:00:00.000000000 Z
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/api_controller.rb
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