lib/generators/authtrail/install_generator.rb in authtrail-0.4.1 vs lib/generators/authtrail/install_generator.rb in authtrail-0.4.2
- old
+ new
@@ -4,49 +4,72 @@
module Generators
class InstallGenerator < Rails::Generators::Base
include ActiveRecord::Generators::Migration
source_root File.join(__dir__, "templates")
+ class_option :encryption, type: :string
+ # deprecated
class_option :lockbox, type: :boolean
def copy_migration
+ encryption # ensure valid
migration_template "login_activities_migration.rb", "db/migrate/create_login_activities.rb", migration_version: migration_version
end
def copy_templates
template "initializer.rb", "config/initializers/authtrail.rb"
end
def generate_model
- if lockbox?
+ case encryption
+ when "lockbox"
template "model_lockbox.rb", "app/models/login_activity.rb"
+ when "activerecord"
+ template "model_activerecord.rb", "app/models/login_activity.rb"
else
- template "model.rb", "app/models/login_activity.rb"
+ template "model_none.rb", "app/models/login_activity.rb"
end
end
def migration_version
"[#{ActiveRecord::VERSION::MAJOR}.#{ActiveRecord::VERSION::MINOR}]"
end
def identity_column
- if lockbox?
+ case encryption
+ when "lockbox"
"t.text :identity_ciphertext\n t.string :identity_bidx, index: true"
else
+ # TODO add limit: 510 for Active Record encryption + MySQL?
"t.string :identity, index: true"
end
end
def ip_column
- if lockbox?
+ case encryption
+ when "lockbox"
"t.text :ip_ciphertext\n t.string :ip_bidx, index: true"
else
+ # TODO add limit: 510 for Active Record encryption + MySQL?
"t.string :ip, index: true"
end
end
- def lockbox?
- options[:lockbox]
+ # TODO remove default
+ def encryption
+ case options[:encryption]
+ when "lockbox", "activerecord", "none"
+ options[:encryption]
+ when nil
+ if options[:lockbox]
+ # TODO deprecation warning
+ "lockbox"
+ else
+ "none"
+ end
+ else
+ abort "Error: encryption must be lockbox, activerecord, or none"
+ end
end
end
end
end