destiny-rails 0.0.3
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 +7 -0
- data/.gitignore +1 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/README.md +12 -0
- data/app/controllers/concerns/destiny/controller.rb +9 -0
- data/app/models/concerns/destiny/role.rb +17 -0
- data/app/models/concerns/destiny/user.rb +36 -0
- data/destiny.gemspec +25 -0
- data/lib/destiny/version.rb +3 -0
- data/lib/destiny-rails.rb +6 -0
- data/lib/generators/destiny/install_generator.rb +25 -0
- data/lib/generators/destiny/templates/create_roles.rb +20 -0
- metadata +114 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 74d859e56be2ac9ab06b49742840173d709e5982
|
|
4
|
+
data.tar.gz: ce77b034551f82e0ea741eb050cb0fc69d1fb86a
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 62b5d3964fe50f47381368fb2c229f52e5c574b2cd70dc3ddb45ea042574089a7e52a91d034b29a4d70adc968b14afbc657a17ee8818a199725daaeee9e1f73e
|
|
7
|
+
data.tar.gz: 6eac7004c879ca19cf9497edaad7379c5fe3f981e2c0f31b972c14ae61e8ae42cfe946903bec42a5abc3b46a4e5af6df4f671380e0128630d738553d8044641b
|
data/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*.gem
|
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
destiny
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.4.0
|
data/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Destiny
|
|
2
|
+
module User
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
has_and_belongs_to_many :roles, join_table: :users_roles
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def has_grant?(section_name, grant_name)
|
|
10
|
+
return true if is_admin?
|
|
11
|
+
return false unless hash[section_name]
|
|
12
|
+
return false unless hash[section_name].key? grant_name
|
|
13
|
+
|
|
14
|
+
role_hash[section_name][grant_name]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def owner?(obj)
|
|
18
|
+
return id == obj.user_id if obj.respond_to? :user_id
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def role_hash
|
|
22
|
+
@role_hash = {}
|
|
23
|
+
roles.map(&:to_hash).each_entry { |h| @role_hash.deep_merge!(h) }
|
|
24
|
+
@role_hash
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def is_admin?
|
|
28
|
+
return true if role_hash.try(:[], 'system').try(:[], 'administrator')
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# compatibility with The_Role gem
|
|
32
|
+
alias_method :admin?, :is_admin?
|
|
33
|
+
alias_method :has_role?, :has_grant?
|
|
34
|
+
|
|
35
|
+
end
|
|
36
|
+
end
|
data/destiny.gemspec
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
['../lib', '../app/models/concerns/destiny', '../app/controllers/concerns/destiny'].map{ |dir| File.expand_path(dir, __FILE__) }.each do |path|
|
|
2
|
+
$:.unshift(path) unless $:.include?(path)
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
require 'destiny/version'
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = 'destiny-rails'
|
|
9
|
+
spec.version = Destiny::VERSION
|
|
10
|
+
spec.authors = ['Pavel Zhukov']
|
|
11
|
+
spec.email = ['pasha.zhukov@gmail.com']
|
|
12
|
+
|
|
13
|
+
spec.summary = %q{Simple role managment system}
|
|
14
|
+
spec.description = %q{Roles persisted in the database. Role is as a composition of grants. Roles may be assigned to user.}
|
|
15
|
+
spec.homepage = 'https://github.com/etxzay/destiny'
|
|
16
|
+
spec.license = 'MIT'
|
|
17
|
+
|
|
18
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
19
|
+
spec.require_paths = ['lib', 'app']
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
|
22
|
+
spec.add_development_dependency 'rake', '~> 12.0'
|
|
23
|
+
spec.add_runtime_dependency 'activesupport', '~> 5.0'
|
|
24
|
+
spec.add_runtime_dependency 'activerecord', '~> 5.0'
|
|
25
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Destiny
|
|
2
|
+
module Generators
|
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
|
4
|
+
include Rails::Generators::Migration
|
|
5
|
+
|
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
7
|
+
|
|
8
|
+
desc 'add migrations'
|
|
9
|
+
|
|
10
|
+
def self.next_migration_number(path)
|
|
11
|
+
unless @prev_migration_nr
|
|
12
|
+
@prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
|
|
13
|
+
else
|
|
14
|
+
@prev_migration_nr += 1
|
|
15
|
+
end
|
|
16
|
+
@prev_migration_nr.to_s
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def copy_migrations
|
|
20
|
+
migration_template 'create_roles.rb', 'db/migrate/create_roles.rb'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class CreateRoles < ActiveRecord::Migration
|
|
2
|
+
def self.up
|
|
3
|
+
create_table :roles do |t|
|
|
4
|
+
t.string :name, null: false
|
|
5
|
+
t.text :description, null: false
|
|
6
|
+
t.jsonb :data, null: false
|
|
7
|
+
|
|
8
|
+
t.timestamps
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
create_join_table :roles, :users, table_name: :users_roles
|
|
12
|
+
|
|
13
|
+
add_index :roles, :name, unique: true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def self.down
|
|
17
|
+
drop_table :users_roles
|
|
18
|
+
drop_table :roles
|
|
19
|
+
end
|
|
20
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: destiny-rails
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.3
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Pavel Zhukov
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-03-17 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.13'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.13'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '12.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '12.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: activesupport
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '5.0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '5.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: activerecord
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '5.0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '5.0'
|
|
69
|
+
description: Roles persisted in the database. Role is as a composition of grants.
|
|
70
|
+
Roles may be assigned to user.
|
|
71
|
+
email:
|
|
72
|
+
- pasha.zhukov@gmail.com
|
|
73
|
+
executables: []
|
|
74
|
+
extensions: []
|
|
75
|
+
extra_rdoc_files: []
|
|
76
|
+
files:
|
|
77
|
+
- ".gitignore"
|
|
78
|
+
- ".ruby-gemset"
|
|
79
|
+
- ".ruby-version"
|
|
80
|
+
- README.md
|
|
81
|
+
- app/controllers/concerns/destiny/controller.rb
|
|
82
|
+
- app/models/concerns/destiny/role.rb
|
|
83
|
+
- app/models/concerns/destiny/user.rb
|
|
84
|
+
- destiny.gemspec
|
|
85
|
+
- lib/destiny-rails.rb
|
|
86
|
+
- lib/destiny/version.rb
|
|
87
|
+
- lib/generators/destiny/install_generator.rb
|
|
88
|
+
- lib/generators/destiny/templates/create_roles.rb
|
|
89
|
+
homepage: https://github.com/etxzay/destiny
|
|
90
|
+
licenses:
|
|
91
|
+
- MIT
|
|
92
|
+
metadata: {}
|
|
93
|
+
post_install_message:
|
|
94
|
+
rdoc_options: []
|
|
95
|
+
require_paths:
|
|
96
|
+
- lib
|
|
97
|
+
- app
|
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0'
|
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
|
+
requirements:
|
|
105
|
+
- - ">="
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: '0'
|
|
108
|
+
requirements: []
|
|
109
|
+
rubyforge_project:
|
|
110
|
+
rubygems_version: 2.6.8
|
|
111
|
+
signing_key:
|
|
112
|
+
specification_version: 4
|
|
113
|
+
summary: Simple role managment system
|
|
114
|
+
test_files: []
|