eucalypt 0.5.0 → 0.5.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: 6fa3d16ea8245275cf420eb8ab1dc852e4c0da5f6416f53f09c6636372747806
4
- data.tar.gz: f7e333eec6111947870dc43454517259d0ec06a42419d56b7c10022493c16e1e
3
+ metadata.gz: 63a868422a94bde49b8b30b2e6bc5af7b7dd87099452bbb7d0dd4e64eeb4d155
4
+ data.tar.gz: f3acffad61e46e0664131a530a33294ecaf376d1890c0f7a5f48cf45a163b11a
5
5
  SHA512:
6
- metadata.gz: 00b29405bdef2c7f706f5b906cabdbd6a74b663c1a911e0b2fd82ee06dfdd28f9d489ba33609116505e907097d29b4a846f135c911f3057de1bda2675491d387
7
- data.tar.gz: 678144c567da5a0fa49019f8a9ca50f5921ae8ddca2693c2e9455a58060ed15a9847e031a4d62ffa479ed00f30ffc806489e79e100836eff6c9894a14e67c7f7
6
+ metadata.gz: 67a75c326f188a04327302632f5aaa41a0d1c69d4df04d14c5d849d5711fb3a4226c33dd27f2166f16f95d79cae6dc632936d20fa263693012418110d961a9dc
7
+ data.tar.gz: 1cb228a0816a3176184804b1466f4b3e3145ace396e55f914e125cb23ed5d275bddb62714a45a07ab4a80d991f7cf123695e53fae34e1344e151b33f73f58809
data/README.md CHANGED
@@ -27,10 +27,30 @@ $ eucalypt init my-new-app
27
27
  ```
28
28
 
29
29
  > Once the setup is complete, make sure the required gems have been installed (without any errors).
30
- >
31
- > This should have been done automatically unless you used the `--no-bundle` flag during initialization.
32
30
 
33
- Move into your new application's directory and run the top-level `$ eucalypt` command to display a list of all available commands.
31
+ ### Commands
32
+
33
+ Move into your new application's directory and run the top-level `eucalypt` command to display a list of all available commands:
34
+
35
+ ```bash
36
+ $ eucalypt
37
+
38
+ Commands:
39
+ eucalypt init [NAME] ·› Sets up your application
40
+ eucalypt launch [ENV] ·› Launches your application
41
+ eucalypt console ·› Interactive console with all files loaded
42
+ eucalypt test ·› Run all application tests
43
+ eucalypt version ·› Display installed Eucalypt version
44
+ eucalypt rake ·› Run all database migrations
45
+ eucalypt blog [COMMAND] ·› Manage static blog environment
46
+ eucalypt generate [COMMAND] ·› Generate individual MVC files or scaffolds
47
+ eucalypt destroy [COMMAND] ·› Destroy individual MVC files or scaffolds
48
+ eucalypt security [COMMAND] ·› Manage authentication and authorization
49
+ eucalypt migration [COMMAND] ·› Generate ActiveRecord migrations
50
+
51
+ For more information about a specific command, use eucalypt -H.
52
+ Example: eucalypt -H generate scaffold
53
+ ```
34
54
 
35
55
  ## Documentation
36
56
 
@@ -20,5 +20,5 @@ class ApplicationController < Sinatra::Base
20
20
 
21
21
  # ActiveRecord logging
22
22
  ActiveRecord::Base.logger = Logger.new STDOUT
23
- ActiveRecord::Migration.verbose = true
23
+ ActiveRecord::Migration.verbose = false
24
24
  end
data/lib/eucalypt/load.rb CHANGED
@@ -5,4 +5,7 @@ require 'eucalypt/core/helpers/maintenance'
5
5
 
6
6
  Eucalypt.require 'app', 'helpers', '{application_helper.rb}'
7
7
  Eucalypt.require 'app', 'controllers', 'application_controller.rb'
8
- Eucalypt.require 'app', '{models,policies,helpers,controllers}', '*.rb'
8
+ Eucalypt.require 'app', '{models}', '{roles}', '*.rb'
9
+ Eucalypt.require 'app', '{models,policies,helpers,controllers}', '*.rb'
10
+
11
+ require 'eucalypt/security/permissions'
@@ -46,16 +46,7 @@ module Eucalypt
46
46
  policy_generator.generate_policy_roles_migration(policy: policy.resource)
47
47
 
48
48
  # Create policy role model
49
- Dir.chdir(directory) do
50
- Eucalypt::CLI.start(['generate', 'model', "#{policy.resource}_role", '--no-spec', '--no-table'])
51
- end
52
-
53
- # Add validation to role model
54
- role_model_file = File.join directory, 'app', 'models', "#{policy.resource}_role.rb"
55
- File.open(role_model_file) do |f|
56
- insert = " validates :permission, uniqueness: true"
57
- inject_into_class(role_model_file, "#{policy.resource}_role".camelize, "#{insert}\n") unless f.read.include? insert
58
- end
49
+ policy_generator.generate_policy_role_model(policy: policy)
59
50
 
60
51
  # Add policy column to user roles table
61
52
  Dir.chdir(directory) do
@@ -16,7 +16,17 @@ module Eucalypt
16
16
  def generate(headless:, name:)
17
17
  policy = Inflect.new(:policy, name)
18
18
  config = {class_name: policy.class_name, resource: policy.resource, constant: policy.constant, headless: headless}
19
- template('policy.tt', policy.file_path, config)
19
+ template 'policy.tt', policy.file_path, config
20
+ end
21
+
22
+ def generate_policy_role_model(policy:)
23
+ roles_directory = File.join 'app', 'models', 'roles'
24
+ role_model_file = File.join roles_directory, "#{policy.resource}_role.rb"
25
+
26
+ empty_directory roles_directory unless File.directory? roles_directory
27
+
28
+ config = {constant: policy.constant}
29
+ template 'policy_role.tt', role_model_file, config
20
30
  end
21
31
 
22
32
  def generate_policy_roles_migration(policy:)
@@ -5,12 +5,4 @@ class <%= config[:class_name] %><%= " < Struct.new(:user, :#{config[:resource]})
5
5
  @user = user
6
6
  @<%= config[:resource] %> = <%= config[:resource] %>
7
7
  end
8
-
9
- if ActiveRecord::Base.connection.table_exists?(:<%= config[:resource] %>_roles)
10
- <%= config[:constant] %>Role.pluck(:permission).each do |permission|
11
- define_method("#{permission}?") do
12
- <%= config[:constant] %>Role.find_by(permission: permission).send(user.role.<%= config[:resource] %>)
13
- end
14
- end
15
- end
16
8
  end
@@ -0,0 +1,3 @@
1
+ class <%= config[:constant] %>Role < ActiveRecord::Base
2
+ validates :permission, uniqueness: true
3
+ end
@@ -34,7 +34,7 @@ module Eucalypt
34
34
 
35
35
  # Check for policy file and policy role model
36
36
  policy_file = File.join(directory, 'app', 'policies', policy.file_name)
37
- policy_role_model = File.join(directory, 'app', 'models', "#{policy.resource}_role.rb")
37
+ policy_role_model = File.join(directory, 'app', 'models', 'roles', "#{policy.resource}_role.rb")
38
38
  unless File.exist?(policy_file) && File.exist?(policy_role_model)
39
39
  Eucalypt::Error.no_policy(policy.resource)
40
40
  return
@@ -33,7 +33,7 @@ module Eucalypt
33
33
 
34
34
  # Check for policy file and policy role model
35
35
  policy_file = File.join(directory, 'app', 'policies', policy.file_name)
36
- policy_role_model = File.join(directory, 'app', 'models', "#{policy.resource}_role.rb")
36
+ policy_role_model = File.join(directory, 'app', 'models', 'roles', "#{policy.resource}_role.rb")
37
37
  unless File.exist?(policy_file) && File.exist?(policy_role_model)
38
38
  Eucalypt::Error.no_policy(policy.resource)
39
39
  return
@@ -0,0 +1,19 @@
1
+ require 'active_record'
2
+ require 'active_support/core_ext'
3
+
4
+ Eucalypt.glob('app', '{policies}', '*.rb') do |file|
5
+ policy_name = File.basename file, '.rb'
6
+ policy_constant = policy_name.camelize.constantize
7
+ resource_name = policy_name.gsub '_policy', ''
8
+ roles_name = "#{resource_name}_roles"
9
+ role_constant_name = roles_name.singularize.camelize
10
+ role_constant = role_constant_name.constantize
11
+
12
+ if ActiveRecord::Base.connection.table_exists? roles_name
13
+ role_constant.pluck(:permission).each do |permission|
14
+ policy_constant.define_method "#{permission}?" do
15
+ role_constant.find_by(permission: permission).send(user.role.send resource_name)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,3 +1,3 @@
1
1
  module Eucalypt
2
- VERSION = '0.5.0'
2
+ VERSION = '0.5.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eucalypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edwin Onuonga
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-27 00:00:00.000000000 Z
11
+ date: 2018-12-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -356,6 +356,7 @@ files:
356
356
  - lib/eucalypt/security/namespaces/security-policy/generators/policy.rb
357
357
  - lib/eucalypt/security/namespaces/security-policy/templates/create_policy_roles_migration.tt
358
358
  - lib/eucalypt/security/namespaces/security-policy/templates/policy.tt
359
+ - lib/eucalypt/security/namespaces/security-policy/templates/policy_role.tt
359
360
  - lib/eucalypt/security/namespaces/security-pundit/cli/security-pundit.rb
360
361
  - lib/eucalypt/security/namespaces/security-pundit/generators/role.rb
361
362
  - lib/eucalypt/security/namespaces/security-pundit/templates/create_roles_migration.tt
@@ -369,6 +370,7 @@ files:
369
370
  - lib/eucalypt/security/namespaces/security-warden/templates/user.tt
370
371
  - lib/eucalypt/security/namespaces/security-warden/templates/warden.tt
371
372
  - lib/eucalypt/security/namespaces/security/cli/security.rb
373
+ - lib/eucalypt/security/permissions.rb
372
374
  - lib/eucalypt/static.rb
373
375
  - lib/eucalypt/version.rb
374
376
  - lib/eucalypt/whitelist.rb