proxes 0.7.1 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +1 -1
  4. data/.travis.yml +0 -3
  5. data/Gemfile.ci +5 -2
  6. data/README.md +12 -9
  7. data/Rakefile +10 -5
  8. data/Vagrantfile +1 -4
  9. data/config.ru +32 -24
  10. data/lib/{proxes → ditty/components}/proxes.rb +26 -33
  11. data/lib/proxes/controllers/permissions.rb +4 -3
  12. data/lib/proxes/models/permission.rb +7 -5
  13. data/lib/proxes/policies/permission_policy.rb +4 -4
  14. data/lib/proxes/policies/request/index_policy.rb +1 -1
  15. data/lib/proxes/policies/request_policy.rb +3 -4
  16. data/lib/proxes/policies/token_policy.rb +1 -1
  17. data/lib/proxes/request/cat.rb +2 -2
  18. data/lib/proxes/request/index.rb +2 -2
  19. data/lib/proxes/request.rb +1 -1
  20. data/lib/proxes/security.rb +10 -12
  21. data/lib/proxes/version.rb +1 -1
  22. data/lib/proxes.rb +1 -3
  23. data/migrate/20170207_base_tables.rb +2 -1
  24. data/migrate/20170208_audit_log.rb +1 -0
  25. data/proxes.gemspec +15 -14
  26. data/public/js/bundle.js +44683 -23940
  27. data/public/js/vendors.js +1 -0
  28. data/views/permissions/form.haml +2 -2
  29. data/views/permissions/index.haml +14 -9
  30. metadata +69 -108
  31. data/lib/proxes/container.rb +0 -135
  32. data/lib/proxes/controllers/app.rb +0 -80
  33. data/lib/proxes/controllers/application.rb +0 -80
  34. data/lib/proxes/controllers/audit_logs.rb +0 -44
  35. data/lib/proxes/controllers/component.rb +0 -167
  36. data/lib/proxes/controllers/roles.rb +0 -16
  37. data/lib/proxes/controllers/users.rb +0 -183
  38. data/lib/proxes/db.rb +0 -18
  39. data/lib/proxes/helpers/authentication.rb +0 -58
  40. data/lib/proxes/helpers/component.rb +0 -49
  41. data/lib/proxes/helpers/pundit.rb +0 -40
  42. data/lib/proxes/helpers/views.rb +0 -42
  43. data/lib/proxes/helpers/wisper.rb +0 -15
  44. data/lib/proxes/listener.rb +0 -23
  45. data/lib/proxes/models/audit_log.rb +0 -14
  46. data/lib/proxes/models/base.rb +0 -9
  47. data/lib/proxes/models/identity.rb +0 -70
  48. data/lib/proxes/models/role.rb +0 -17
  49. data/lib/proxes/models/user.rb +0 -64
  50. data/lib/proxes/omniauth.rb +0 -4
  51. data/lib/proxes/policies/application_policy.rb +0 -21
  52. data/lib/proxes/policies/audit_log_policy.rb +0 -41
  53. data/lib/proxes/policies/identity_policy.rb +0 -25
  54. data/lib/proxes/policies/role_policy.rb +0 -37
  55. data/lib/proxes/policies/user_policy.rb +0 -43
  56. data/lib/proxes/rake_tasks.rb +0 -219
  57. data/lib/proxes/seed.rb +0 -5
  58. data/lib/proxes/services/logger.rb +0 -51
  59. data/views/404.haml +0 -1
  60. data/views/audit_logs/index.haml +0 -26
  61. data/views/error.haml +0 -4
  62. data/views/getting_started.haml +0 -16
  63. data/views/identity/login.haml +0 -19
  64. data/views/identity/register.haml +0 -14
  65. data/views/index.haml +0 -3
  66. data/views/layout.haml +0 -58
  67. data/views/partials/delete_form.haml +0 -4
  68. data/views/partials/form_control.haml +0 -20
  69. data/views/partials/navbar.haml +0 -25
  70. data/views/partials/notifications.haml +0 -24
  71. data/views/partials/pager.haml +0 -12
  72. data/views/partials/sidebar.haml +0 -54
  73. data/views/roles/display.haml +0 -38
  74. data/views/roles/edit.haml +0 -11
  75. data/views/roles/form.haml +0 -1
  76. data/views/roles/index.haml +0 -20
  77. data/views/roles/new.haml +0 -10
  78. data/views/users/display.haml +0 -69
  79. data/views/users/edit.haml +0 -11
  80. data/views/users/identity.haml +0 -3
  81. data/views/users/index.haml +0 -23
  82. data/views/users/new.haml +0 -11
  83. data/views/users/profile.haml +0 -39
  84. data/views/users/user.haml +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eed2284d92cc9aaca2f123158ba6b77c65d233d8
4
- data.tar.gz: 06ddda4291562439c7589f8faaa096d798b343f8
3
+ metadata.gz: 110bfadb9580417402ed8e47ae66a39c2d2347ac
4
+ data.tar.gz: 48eb4c42bf8de55da0dea02bf8607ba6540c7d52
5
5
  SHA512:
6
- metadata.gz: bd168ddee066078b4a76ba837bdef0dd26166ecf8024b9fbfec9fe794d2d71bedb3487c71ebdce9c88e040abeb8ee69edfbdef8f85f0dc3745fb2178c499f99f
7
- data.tar.gz: 9b60352a20958278555b3a3688547187e669917bc41b1a7145368603a77d98b84d923feb4cf567fceee47d65b82e3cb9677bae4caf0963bdc7ed7b22f5749255
6
+ metadata.gz: 2fffacb9260796bff10b93befcb696e0e4bbd65a4759b0cbd7a69f09b0c81b7c72618cecf4ebc0fc9c11cc0981b2ce194a99e757db40fd55ffd3e6da7a2cb8ca
7
+ data.tar.gz: befa0e27737533a6a1d50c3a0c5070ecb85931a582c735ce41c0993ad9fed5d3a4f803b729e8a1aff39b491b6a7b4baa877623e8559a4c899c6a3c01acc38f59
data/.gitignore CHANGED
@@ -1,4 +1,5 @@
1
1
  /.bundle/
2
+ /vendor
2
3
  /.yardoc
3
4
  /Gemfile.lock
4
5
  /_yardoc/
data/.rubocop.yml CHANGED
@@ -12,4 +12,4 @@ Style/LeadingCommentSpace:
12
12
  - 'config.ru'
13
13
 
14
14
  AllCops:
15
- TargetRubyVersion: 1.9
15
+ TargetRubyVersion: 2.2
data/.travis.yml CHANGED
@@ -4,9 +4,6 @@ rvm:
4
4
  - 2.4.0
5
5
  - 2.3.3
6
6
  - 2.2.6
7
- - 2.1.10
8
- - 2.0.0
9
- - 1.9.3
10
7
  gemfile: Gemfile.ci
11
8
  env:
12
9
  - DATABASE_URL="sqlite::memory:" ELASTICSEARCH_URL="http://localhost:9200" RACK_ENV=test
data/Gemfile.ci CHANGED
@@ -3,9 +3,12 @@ source 'https://rubygems.org'
3
3
 
4
4
  gemspec
5
5
 
6
- gem 'sqlite3'
7
- gem 'simplecov', '~> 0.13.0'
8
6
  gem 'codeclimate-test-reporter', '~> 1.0.0'
7
+ gem 'dotenv'
8
+ gem 'rspec'
9
+ gem 'rubocop'
10
+ gem 'simplecov', '~> 0.13.0'
11
+ gem 'sqlite3'
9
12
 
10
13
  if RUBY_VERSION < '2.1'
11
14
  gem 'sidekiq', '3.0.0'
data/README.md CHANGED
@@ -6,13 +6,6 @@
6
6
 
7
7
  ProxES provides a management interface and security layer for Elasticsearch.
8
8
 
9
- ## Getting Started
10
-
11
- This is a full application that requires some setup. The following complete setup
12
- scripts are available:
13
-
14
- * [Ubuntu](https://gist.github.com/jrgns/979a6d3ea7cc94db671551227fd6469a#file-setup-ubuntu-sh)
15
-
16
9
  ## Installation
17
10
 
18
11
  Add this line to your application's Gemfile:
@@ -41,12 +34,22 @@ gem install proxes
41
34
  4. Create and populate the DB and secret tokens:
42
35
 
43
36
  ```bash
37
+ bundle exec rake proxes:prep
38
+ bundle exec rake proxes:generate_tokens
44
39
  bundle exec rake proxes:migrate
45
40
  bundle exec rake proxes:seed
46
- bundle exec rake proxes:generate_tokens
41
+ bundle exec whenever --update-crontab
42
+ ```
43
+
44
+ 5. Create the necessary folders:
45
+
46
+ ```bash
47
+ mkdir tmp
48
+ mkdir logs
49
+ mkdir config
47
50
  ```
48
51
 
49
- 5. Start up the web app: `bundle exec rackup`
52
+ 6. Start up the web app: `bundle exec rackup`
50
53
 
51
54
  ## Components
52
55
 
data/Rakefile CHANGED
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'dotenv/load'
4
+
3
5
  require 'rake'
4
- require 'bundler/gem_tasks'
5
- require 'rspec/core/rake_task'
6
- require 'proxes/rake_tasks'
6
+ require 'proxes'
7
7
 
8
- RSpec::Core::RakeTask.new(:spec)
8
+ begin
9
+ require 'rspec/core/rake_task'
10
+ RSpec::Core::RakeTask.new(:spec)
11
+ task default: :spec
12
+ rescue LoadError
13
+ end
9
14
 
10
- task default: :spec
15
+ require 'ditty/rake_tasks'
data/Vagrantfile CHANGED
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  # -*- mode: ruby -*-
3
4
  # vi: set ft=ruby :
4
5
 
@@ -44,7 +45,3 @@ Vagrant.configure(2) do |config|
44
45
  # npm install --no-bin-links
45
46
  SHELL
46
47
  end
47
-
48
- # create user proxes with password 'somethingrandom';
49
- # create database proxes;
50
- # grant all privileges on database proxes to proxes;
data/config.ru CHANGED
@@ -1,42 +1,50 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  libdir = File.expand_path(File.dirname(__FILE__) + '/lib')
3
4
  $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
4
5
 
5
- raise 'Unconfigured' unless ENV['ELASTICSEARCH_URL']
6
-
6
+ require 'dotenv/load'
7
7
  require 'proxes'
8
- require 'proxes/omniauth'
8
+ require 'proxes/proxes'
9
+ require 'rack/protection'
10
+ ProxES::Container.plugin(:proxes)
11
+
9
12
  use Rack::Session::Cookie,
10
13
  key: '_ProxES_session',
11
- #:secure=>!TEST_MODE, # Uncomment if only allowing https:// access
14
+ # :secure=>!TEST_MODE, # Uncomment if only allowing https:// access
12
15
  secret: File.read('.session_secret')
16
+ use Rack::Protection::RemoteToken
17
+ use Rack::Protection::SessionHijacking
13
18
 
14
- use OmniAuth::Builder do
15
- # The identity provider is used by the App.
16
- provider :identity,
17
- fields: [:username],
18
- callback_path: '/_proxes/auth/identity/callback',
19
- model: ProxES::Identity,
20
- on_login: ProxES::AuthIdentity,
21
- on_registration: ProxES::AuthIdentity,
22
- locate_conditions: ->(req) { { username: req['username'] } }
23
- end
24
- OmniAuth.config.on_failure = ProxES::AuthIdentity
19
+ map '/_proxes' do
20
+ require 'proxes/omniauth'
25
21
 
26
- # Management App
27
- require 'proxes/proxes'
28
- ProxES::Container.plugin(:proxes)
22
+ use OmniAuth::Builder do
23
+ configure do |config|
24
+ config.path_prefix = '/auth'
25
+ config.on_failure = ProxES::App
26
+ end
29
27
 
30
- map '/_proxes' do
31
- run Rack::URLMap.new ProxES::Container.routes
28
+ # The identity provider is used by the App.
29
+ provider :identity,
30
+ fields: [:username],
31
+ callback_path: '/auth/identity/callback',
32
+ model: ProxES::Identity,
33
+ on_login: ProxES::App,
34
+ on_registration: ProxES::App,
35
+ locate_conditions: ->(req) { { username: req['username'] } }
36
+ end
37
+
38
+ run Rack::URLMap.new Ditty.routes
32
39
  end
33
40
 
34
- # Proxy all Elasticsearch requests
35
- require 'proxes/security'
36
- require 'proxes/forwarder'
37
41
  map '/' do
42
+ # Proxy all Elasticsearch requests
43
+ require 'proxes/security'
44
+ require 'proxes/forwarder'
45
+
38
46
  # Security
39
- use ProxES::Security, ProxES::Services::Logger.instance
47
+ use ProxES::Security, Ditty::Services::Logger.instance
40
48
  use Rack::ContentLength
41
49
 
42
50
  # Forward requests to ES
@@ -1,66 +1,59 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ProxES
3
+ require 'ditty'
4
+
5
+ module Ditty
4
6
  class ProxES
5
- def self.migration_folder
6
- File.expand_path('../../../migrate', __FILE__)
7
+ def self.migrations
8
+ File.expand_path('../../../../migrate', __FILE__)
7
9
  end
8
10
 
9
11
  def self.view_folder
10
- File.expand_path('../../../views', __FILE__)
12
+ File.expand_path('../../../../views', __FILE__)
11
13
  end
12
14
 
13
15
  def self.public_folder
14
- File.expand_path('../../../public', __FILE__)
16
+ File.expand_path('../../../../public', __FILE__)
15
17
  end
16
18
 
17
- def self.route_mappings
18
- controllers = File.expand_path('../controllers', __FILE__)
19
+ def self.routes
20
+ controllers = File.expand_path('../../../proxes/controllers', __FILE__)
19
21
  Dir.glob("#{controllers}/*.rb").each { |f| require f }
20
22
  {
21
- '/' => ::ProxES::App,
22
- '/users' => ::ProxES::Users,
23
- '/roles' => ::ProxES::Roles,
24
- '/permissions' => ::ProxES::Permissions,
25
- '/audit-logs' => ::ProxES::AuditLogs
23
+ '/permissions' => ::ProxES::Permissions
26
24
  }
27
25
  end
28
26
 
29
- def self.nav_items
30
- {
31
- group: 'Security',
32
- order: 20,
33
- icon: 'lock',
34
- items: [
35
- { order: 0, link: '/users/', text: 'Users', target: User, icon: 'user' },
36
- { order: 1, link: '/roles/', text: 'Roles', target: Role, icon: 'group' },
37
- { order: 2, link: '/permissions/', text: 'Permissions', target: Permission, icon: 'check-square' },
38
- { order: 3, link: '/audit-logs/', text: 'Audit Logs', target: AuditLog, icon: 'history' }
39
- ]
40
- }
27
+ def self.navigation
28
+ require 'proxes/models/permission'
29
+
30
+ [
31
+ { order: 2, link: '/permissions/', text: 'Permissions', target: ::ProxES::Permission, icon: 'check-square' }
32
+ ]
41
33
  end
42
34
 
43
35
  def self.seeder
44
36
  proc do
45
- require 'proxes/models/user'
46
- require 'proxes/models/role'
37
+ require 'ditty/models/user'
38
+ require 'ditty/models/role'
39
+ require 'proxes/models/permission'
47
40
 
48
- sa = ::ProxES::Role.find_or_create(name: 'super_admin')
41
+ sa = ::Ditty::Role.find_or_create(name: 'super_admin')
49
42
  %w[GET POST PUT DELETE HEAD OPTIONS INDEX].each do |verb|
50
43
  ::ProxES::Permission.find_or_create(role: sa, verb: verb, pattern: '.*')
51
44
  end
52
- ::ProxES::Role.find_or_create(name: 'admin')
53
- user_role = ::ProxES::Role.find_or_create(name: 'user')
45
+ ::Ditty::Role.find_or_create(name: 'admin')
46
+ user_role = ::Ditty::Role.find_or_create(name: 'user')
54
47
 
55
48
  # Kibana Specific
56
- anon = ::ProxES::User.find_or_create(email: 'anonymous@proxes.io')
49
+ anon = ::Ditty::User.find_or_create(email: 'anonymous@proxes.io')
57
50
  anon.remove_role user_role
58
- anon_role = ::ProxES::Role.find_or_create(name: 'anonymous')
51
+ anon_role = ::Ditty::Role.find_or_create(name: 'anonymous')
59
52
  anon.add_role anon_role unless anon.role?('anonymous')
60
53
  ::ProxES::Permission.find_or_create(role: anon_role, verb: 'GET', pattern: '/.kibana/config/*')
61
54
  ::ProxES::Permission.find_or_create(role: anon_role, verb: 'INDEX', pattern: '.kibana')
62
55
 
63
- kibana = ::ProxES::Role.find_or_create(name: 'kibana')
56
+ kibana = ::Ditty::Role.find_or_create(name: 'kibana')
64
57
  ::ProxES::Permission.find_or_create(role: kibana, verb: 'INDEX', pattern: '.kibana')
65
58
  ::ProxES::Permission.find_or_create(role: kibana, verb: 'HEAD', pattern: '/')
66
59
  ::ProxES::Permission.find_or_create(role: kibana, verb: 'GET', pattern: '/_nodes*')
@@ -75,4 +68,4 @@ module ProxES
75
68
  end
76
69
  end
77
70
 
78
- ProxES::Container::Plugins.register_plugin(:proxes, ProxES::ProxES)
71
+ Ditty::Components.register_component(:proxes, Ditty::ProxES)
@@ -1,16 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/controllers/component'
3
+ require 'ditty/controllers/component'
4
4
  require 'proxes/models/permission'
5
5
  require 'proxes/policies/permission_policy'
6
6
 
7
7
  module ProxES
8
- class Permissions < Component
8
+ class Permissions < Ditty::Component
9
9
  set model_class: Permission
10
10
 
11
11
  def find_template(views, name, engine, &block)
12
12
  super(views, name, engine, &block) # Root
13
- super(::ProxES::ProxES.view_folder, name, engine, &block) # Basic Plugin
13
+ super(::Ditty::ProxES.view_folder, name, engine, &block) # This Component
14
+ super(::Ditty::App.view_folder, name, engine, &block) # Ditty
14
15
  end
15
16
  end
16
17
  end
@@ -1,13 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/models/base'
3
+ require 'ditty/models/base'
4
+ require 'ditty/models/user'
5
+ require 'ditty/models/role'
4
6
 
5
7
  module ProxES
6
8
  class Permission < Sequel::Model
7
- include ::ProxES::Base
9
+ include ::Ditty::Base
8
10
 
9
- many_to_one :role
10
- many_to_one :user
11
+ many_to_one :role, class: ::Ditty::Role
12
+ many_to_one :user, class: ::Ditty::User
11
13
 
12
14
  dataset_module do
13
15
  def for_user(a_user, action)
@@ -16,7 +18,7 @@ module ProxES
16
18
  end
17
19
 
18
20
  def validate
19
- validates_presence [:verb, :pattern]
21
+ validates_presence %i[verb pattern]
20
22
  validates_presence :role_id unless user_id
21
23
  validates_presence :user_id unless role_id
22
24
  validates_includes self.class.verbs, :verb
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/policies/application_policy'
3
+ require 'ditty/policies/application_policy'
4
4
 
5
5
  module ProxES
6
- class PermissionPolicy < ApplicationPolicy
6
+ class PermissionPolicy < Ditty::ApplicationPolicy
7
7
  def create?
8
8
  user && user.super_admin?
9
9
  end
@@ -25,10 +25,10 @@ module ProxES
25
25
  end
26
26
 
27
27
  def permitted_attributes
28
- [:verb, :pattern, :role_id, :user_id]
28
+ %i[verb pattern role_id user_id]
29
29
  end
30
30
 
31
- class Scope < ApplicationPolicy::Scope
31
+ class Scope < Ditty::ApplicationPolicy::Scope
32
32
  def resolve
33
33
  user && user.super_admin? ? scope : scope.where(id: -1)
34
34
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/db'
3
+ require 'ditty/db'
4
4
  require 'proxes/models/permission'
5
5
  require 'proxes/policies/request_policy'
6
6
 
@@ -1,9 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/db'
4
3
  require 'proxes/models/permission'
5
- require 'proxes/services/logger'
6
4
  require 'proxes/helpers/indices'
5
+ require 'ditty/services/logger'
7
6
 
8
7
  module ProxES
9
8
  class RequestPolicy
@@ -48,7 +47,7 @@ module ProxES
48
47
  end
49
48
 
50
49
  def logger
51
- @logger ||= ProxES::Services::Logger.instance
50
+ @logger ||= Ditty::Services::Logger.instance
52
51
  end
53
52
 
54
53
  class Scope
@@ -62,7 +61,7 @@ module ProxES
62
61
  end
63
62
 
64
63
  def logger
65
- @logger ||= ProxES::Services::Logger.instance
64
+ @logger ||= Ditty::Services::Logger.instance
66
65
  end
67
66
 
68
67
  def resolve
@@ -29,7 +29,7 @@ module ProxES
29
29
  end
30
30
 
31
31
  def permitted_attributes
32
- attribs = [:email, :name, :surname]
32
+ attribs = %i[email name surname]
33
33
  attribs << :role if user.super_admin?
34
34
  attribs
35
35
  end
@@ -11,8 +11,8 @@ module ProxES
11
11
  def index=(idx)
12
12
  @index = idx
13
13
  self.path_info = '/' + [endpoint, type, index].compact
14
- .map { |v| v.is_a?(Array) ? v.join(',') : v }
15
- .select { |v| !v.nil? && v != '' }.join('/')
14
+ .map { |v| v.is_a?(Array) ? v.join(',') : v }
15
+ .select { |v| !v.nil? && v != '' }.join('/')
16
16
  end
17
17
 
18
18
  def endpoint
@@ -11,8 +11,8 @@ module ProxES
11
11
  def index=(idx)
12
12
  @index = idx
13
13
  self.path_info = '/' + [index, type, id].compact
14
- .map { |v| v.is_a?(Array) ? v.join(',') : v }
15
- .select { |v| !v.nil? && v != '' }.join('/')
14
+ .map { |v| v.is_a?(Array) ? v.join(',') : v }
15
+ .select { |v| !v.nil? && v != '' }.join('/')
16
16
  end
17
17
 
18
18
  def parse
@@ -52,7 +52,7 @@ module ProxES
52
52
 
53
53
  def check_part(val)
54
54
  return val if val.nil?
55
- return [] if ([endpoint, '_all'].include?(val) && !WRITE_METHODS.include?(request_method))
55
+ return [] if [endpoint, '_all'].include?(val) && !WRITE_METHODS.include?(request_method)
56
56
  val.split(',')
57
57
  end
58
58
  end
@@ -1,26 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'proxes/models/identity'
4
- require 'proxes/services/logger'
5
3
  require 'proxes/request'
6
4
  require 'proxes/policies/request_policy'
7
- require 'proxes/helpers/pundit'
8
- require 'proxes/helpers/authentication'
9
- require 'proxes/helpers/wisper'
10
- require 'proxes/services/logger'
5
+ require 'ditty/services/logger'
6
+ require 'ditty/helpers/pundit'
7
+ require 'ditty/helpers/authentication'
8
+ require 'ditty/helpers/wisper'
11
9
 
12
10
  module ProxES
13
11
  class Security
14
12
  attr_reader :env, :logger
15
13
 
16
- include Helpers::Authentication
17
- include Helpers::Pundit
18
- include Helpers::Wisper
14
+ include Ditty::Helpers::Authentication
15
+ include Ditty::Helpers::Pundit
16
+ include Ditty::Helpers::Wisper
19
17
  include Wisper::Publisher
20
18
 
21
19
  def initialize(app, logger = nil)
22
20
  @app = app
23
- @logger = logger || Services::Logger.instance
21
+ @logger = logger || ::Ditty::Services::Logger.instance
24
22
  end
25
23
 
26
24
  def error(message, code = 500)
@@ -31,12 +29,12 @@ module ProxES
31
29
 
32
30
  def check(request)
33
31
  check_basic request
34
- authorize request
32
+ authorize request, request.request_method.downcase
35
33
  rescue Pundit::NotAuthorizedError
36
34
  log_action(:es_request_denied, details: "#{request.request_method.upcase} #{request.fullpath} (#{request.class.name})")
37
35
  logger.debug "Access denied for #{current_user ? current_user.email : 'Anonymous User'} by security layer: #{request.request_method.upcase} #{request.fullpath} (#{request.class.name})"
38
36
  error 'Not Authorized', 401
39
- rescue ::ProxES::Helpers::NotAuthenticated
37
+ rescue ::Ditty::Helpers::NotAuthenticated
40
38
  logger.warn "Access denied for unauthenticated request by security layer: #{request.request_method.upcase} #{request.fullpath} (#{request.class.name})"
41
39
  error 'Not Authenticated', 401
42
40
  rescue StandardError => e
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ProxES
4
- VERSION = '0.7.1'.freeze
4
+ VERSION = '0.8.0'.freeze
5
5
  end
data/lib/proxes.rb CHANGED
@@ -1,6 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'proxes/version'
4
- require 'proxes/container'
5
- require 'proxes/db' if ENV['DATABASE_URL']
6
- require 'proxes/listener'
4
+ require 'ditty/components/proxes'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  Sequel.migration do
3
4
  change do
4
5
  create_table :users do
@@ -41,7 +42,7 @@ Sequel.migration do
41
42
  DateTime :created_at
42
43
  foreign_key :user_id, :users
43
44
  foreign_key :role_id, :roles
44
- unique [:user_id, :role_id]
45
+ unique %i[user_id role_id]
45
46
  end
46
47
  end
47
48
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  Sequel.migration do
3
4
  change do
4
5
  create_table :audit_logs do
data/proxes.gemspec CHANGED
@@ -1,5 +1,5 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
2
+
3
3
  lib = File.expand_path('../lib', __FILE__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'proxes/version'
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.summary = 'Rack wrapper around Elasticsearch to provide security and management features'
14
14
  spec.description = 'Rack wrapper around Elasticsearch to provide security and management features'
15
15
  spec.homepage = 'https://github.com/eagerelk/proxes'
16
- spec.license = 'LGPLv3'
16
+ spec.license = 'LGPL-3.0'
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
19
  spec.bindir = 'exe'
@@ -28,22 +28,23 @@ Gem::Specification.new do |spec|
28
28
  spec.add_development_dependency 'factory_girl'
29
29
  spec.add_development_dependency 'timecop'
30
30
 
31
+ spec.add_dependency 'ditty', '>= 0.2'
31
32
  spec.add_dependency 'activesupport', '>= 3'
32
- spec.add_dependency 'rake', '~> 10.0'
33
- spec.add_dependency 'rack-contrib', '~> 1.4'
34
- spec.add_dependency 'sinatra', '~> 1.0'
35
- spec.add_dependency 'sinatra-flash', '~> 0.3'
36
- spec.add_dependency 'sinatra-contrib', '~> 1.0'
33
+ spec.add_dependency 'bcrypt', '~> 3.0'
37
34
  spec.add_dependency 'elasticsearch', '>= 2'
35
+ spec.add_dependency 'haml', '~> 5.0'
36
+ spec.add_dependency 'highline', '~> 1.7'
38
37
  spec.add_dependency 'logger', '~> 1.0'
39
- spec.add_dependency 'pundit', '~> 1.0'
40
- spec.add_dependency 'sequel', '~> 4.0'
41
- spec.add_dependency 'bcrypt', '~> 3.0'
42
38
  spec.add_dependency 'omniauth', '~> 1.0'
43
- spec.add_dependency 'omniauth-identity', '~> 1.0'
44
39
  spec.add_dependency 'omniauth-http-basic', '~> 1.0'
45
- spec.add_dependency 'haml', '~> 4.0'
46
- spec.add_dependency 'wisper', '~> 2.0'
47
- spec.add_dependency 'highline', '~> 1.7'
40
+ spec.add_dependency 'omniauth-identity', '~> 1.0'
41
+ spec.add_dependency 'pundit', '~> 1.0'
42
+ spec.add_dependency 'rack-contrib', '~> 1.0'
43
+ spec.add_dependency 'rake', '~> 12.0'
44
+ spec.add_dependency 'sequel', '~> 4.0'
45
+ spec.add_dependency 'sinatra', '~> 2.0'
46
+ spec.add_dependency 'sinatra-contrib', '~> 2.0'
47
+ spec.add_dependency 'sinatra-flash', '~> 0.3'
48
48
  spec.add_dependency 'tilt', '>= 2'
49
+ spec.add_dependency 'wisper', '~> 2.0'
49
50
  end