ff1 1.2.5 → 1.2.6
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 +4 -4
- data/lib/ff1/version.rb +1 -1
- data/lib/generators/ff1/install_generator.rb +24 -24
- data/lib/generators/ff1/templates/initializer.rb +8 -12
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '08a90d97f68acff2dc2a91b37b171d0f9df02cf57d4c754cf9cafd0f4bc0ac99'
|
4
|
+
data.tar.gz: a36f31971be3e026ed3b593958c70cbfced3e3075c25a905798bba08a93b709e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c091310e5b8cb9f79fa1067f1a597f9f6c8b0cb19379e72d9349287ec76644228aabb9f5b7de0c4f943e8aacee584c66070374d58e758c0d8fefe52acabb2e84
|
7
|
+
data.tar.gz: c2483bc35f1d6bbb38cf79ab8b9813a1e2d0ef827655c19da1a77604fa1a2c4478d7af6cc79a1b479bc42a8b333f0a2ba101ffe0fb097d123691d52602a018d3
|
data/lib/ff1/version.rb
CHANGED
@@ -16,25 +16,25 @@ module Ff1
|
|
16
16
|
include Rails::Generators::Actions
|
17
17
|
source_root File.expand_path('templates', __dir__)
|
18
18
|
|
19
|
-
argument :models, type: :array, default: [], banner:
|
20
|
-
|
19
|
+
argument :models, type: :array, default: [], banner: 'model1 model2'
|
20
|
+
|
21
21
|
class_option :deleted_at_column, type: :string, default: 'deleted_at',
|
22
|
-
|
23
|
-
|
22
|
+
desc: 'Name of the deleted_at timestamp column'
|
23
|
+
|
24
24
|
class_option :ff1_deleted_column, type: :string, default: 'ff1_deleted',
|
25
|
-
|
26
|
-
|
25
|
+
desc: 'Name of the FF1 deleted boolean column'
|
26
|
+
|
27
27
|
class_option :add_indexes, type: :boolean, default: true,
|
28
|
-
|
28
|
+
desc: 'Add database indexes for performance'
|
29
29
|
|
30
30
|
# Required for Rails::Generators::Migration
|
31
|
-
def self.next_migration_number(
|
32
|
-
Time.now.strftime(
|
31
|
+
def self.next_migration_number(_path)
|
32
|
+
Time.now.strftime('%Y%m%d%H%M%S')
|
33
33
|
end
|
34
34
|
|
35
35
|
def generate_migration
|
36
36
|
if models.empty?
|
37
|
-
say
|
37
|
+
say 'Generating FF1 configuration initializer...'
|
38
38
|
generate_initializer
|
39
39
|
else
|
40
40
|
models.each do |model_name|
|
@@ -47,12 +47,12 @@ module Ff1
|
|
47
47
|
|
48
48
|
def generate_initializer
|
49
49
|
template 'initializer.rb', 'config/initializers/ff1.rb'
|
50
|
-
say
|
51
|
-
say
|
52
|
-
say
|
53
|
-
say
|
54
|
-
say
|
55
|
-
say
|
50
|
+
say 'FF1 initializer created at config/initializers/ff1.rb', :green
|
51
|
+
say ''
|
52
|
+
say 'Next steps:', :blue
|
53
|
+
say '1. Set your encryption key in the initializer'
|
54
|
+
say '2. Run: rails generate ff1:install ModelName for each model you want to enable'
|
55
|
+
say '3. Run: rails db:migrate'
|
56
56
|
end
|
57
57
|
|
58
58
|
def generate_model_migration(model_name)
|
@@ -70,19 +70,19 @@ module Ff1
|
|
70
70
|
|
71
71
|
# Generate migration file
|
72
72
|
migration_template 'migration.rb.erb',
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
"db/migrate/#{timestamp}_#{migration_name}.rb",
|
74
|
+
migration_class_name: migration_class_name,
|
75
|
+
table_name: table_name,
|
76
|
+
deleted_at_column: deleted_at_column,
|
77
|
+
ff1_deleted_column: ff1_deleted_column,
|
78
|
+
add_indexes: add_indexes?
|
79
79
|
|
80
80
|
say "Migration created for #{model_class_name}", :green
|
81
81
|
say "Run 'rails db:migrate' to apply the changes", :blue
|
82
82
|
end
|
83
83
|
|
84
84
|
def timestamp
|
85
|
-
Time.now.strftime(
|
85
|
+
Time.now.strftime('%Y%m%d%H%M%S')
|
86
86
|
end
|
87
87
|
|
88
88
|
def deleted_at_column
|
@@ -98,4 +98,4 @@ module Ff1
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
101
|
-
end
|
101
|
+
end
|
@@ -5,13 +5,13 @@ FF1::ActiveRecord.configure do |config|
|
|
5
5
|
# Global encryption key - REQUIRED
|
6
6
|
# Should be 16, 24, or 32 bytes for AES-128/192/256
|
7
7
|
# Store securely using Rails credentials or environment variables
|
8
|
-
#
|
8
|
+
#
|
9
9
|
# Example using Rails credentials:
|
10
10
|
# config.global_key = Rails.application.credentials.ff1_encryption_key
|
11
|
-
#
|
11
|
+
#
|
12
12
|
# Example using environment variable:
|
13
13
|
# config.global_key = ENV['FF1_ENCRYPTION_KEY']&.b
|
14
|
-
#
|
14
|
+
#
|
15
15
|
# For development/testing only (DO NOT use in production):
|
16
16
|
config.global_key = SecureRandom.bytes(32) if Rails.env.development? || Rails.env.test?
|
17
17
|
|
@@ -23,20 +23,16 @@ FF1::ActiveRecord.configure do |config|
|
|
23
23
|
# Column names for soft delete functionality
|
24
24
|
config.deleted_at_column = :deleted_at
|
25
25
|
config.ff1_deleted_column = :ff1_deleted
|
26
|
-
|
27
|
-
# Hide soft-deleted records from default queries (default: true)
|
28
|
-
# Set to false to include soft-deleted records in queries by default
|
29
|
-
config.hide_deleted_by_default = true
|
30
26
|
end
|
31
27
|
|
32
28
|
# Example model integration:
|
33
29
|
#
|
34
30
|
# class User < ApplicationRecord
|
35
31
|
# include FF1::ActiveRecord
|
36
|
-
#
|
32
|
+
#
|
37
33
|
# # Encrypt email and phone with reversible encryption
|
38
34
|
# ff1_encrypt :email, :phone, mode: :reversible
|
39
|
-
#
|
35
|
+
#
|
40
36
|
# # Encrypt SSN with irreversible encryption
|
41
37
|
# ff1_encrypt :ssn, mode: :irreversible
|
42
38
|
# end
|
@@ -45,11 +41,11 @@ end
|
|
45
41
|
# user = User.create(email: 'user@example.com', ssn: '123-45-6789')
|
46
42
|
# puts user.email # Automatically decrypted for reversible columns
|
47
43
|
# puts user.ssn # Shows "[ENCRYPTED]" for irreversible columns
|
48
|
-
#
|
44
|
+
#
|
49
45
|
# # GDPR compliant deletion
|
50
46
|
# user.destroy # Soft deletes with irreversible encryption
|
51
|
-
#
|
47
|
+
#
|
52
48
|
# # Query scopes
|
53
49
|
# User.ff1_active # Non-deleted users
|
54
50
|
# User.ff1_deleted # Soft-deleted users
|
55
|
-
# User.ff1_all # All users (active + deleted)
|
51
|
+
# User.ff1_all # All users (active + deleted)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ff1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ahmed Abdellatif
|
@@ -129,15 +129,15 @@ files:
|
|
129
129
|
- spec/ff1_spec.rb
|
130
130
|
- spec/generators/ff1/install_generator_spec.rb
|
131
131
|
- spec/spec_helper.rb
|
132
|
-
homepage: https://github.com/a-abdellatif98/
|
132
|
+
homepage: https://github.com/a-abdellatif98/ff1_gem
|
133
133
|
licenses:
|
134
134
|
- MIT
|
135
135
|
metadata:
|
136
|
-
bug_tracker_uri: https://github.com/a-abdellatif98/
|
137
|
-
changelog_uri: https://github.com/a-abdellatif98/ff1/
|
138
|
-
documentation_uri: https://github.com/a-abdellatif98/
|
139
|
-
homepage_uri: https://github.com/a-abdellatif98/
|
140
|
-
source_code_uri: https://github.com/a-abdellatif98/
|
136
|
+
bug_tracker_uri: https://github.com/a-abdellatif98/ff1_gem/issues
|
137
|
+
changelog_uri: https://github.com/a-abdellatif98/ff1/ff1_gem/main/CHANGELOG.md
|
138
|
+
documentation_uri: https://github.com/a-abdellatif98/ff1_gem/blob/main/README.md
|
139
|
+
homepage_uri: https://github.com/a-abdellatif98/ff1_gem
|
140
|
+
source_code_uri: https://github.com/a-abdellatif98/ff1_gem
|
141
141
|
post_install_message:
|
142
142
|
rdoc_options: []
|
143
143
|
require_paths:
|