Class: Infinum::Omniauth::Generators::ConfigGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- Infinum::Omniauth::Generators::ConfigGenerator
- Defined in:
- lib/generators/infinum/omniauth/config_generator.rb
Constant Summary collapse
- CONFIGURATION =
{}
- INITIALIZER_LOCATION =
"config/initializers/omniauth.rb"
- OMNIAUTH_CONTROLLER_LOCATION =
"app/controllers/omniauth_controller.rb"
Instance Method Summary collapse
-
#add_omniauth_user_creation ⇒ Object
create_user_model.
-
#ask_user_for_configuration ⇒ Object
copy_configuration.
- #check_installation ⇒ Object
-
#copy_configuration ⇒ Object
check_installation.
-
#create_user_model ⇒ Object
explane_to_user.
-
#rename_user_model_in_controllers ⇒ Object
add_omniauth_user_creation.
-
#set_app_id_and_secret ⇒ Object
rename_user_model_in_controllers.
-
#set_user_model_for_authentification ⇒ Object
set_app_id_and_secret.
Instance Method Details
#add_omniauth_user_creation ⇒ Object
create_user_model
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 78 def add_omniauth_user_creation method = "\n"\ " def self.new_from_omniauth(omniauth)\n"\ " user = self.find_by_uid(omniauth['uid']) || self.find_by_email(omniauth[:extra][:email]) || self.new(:uid => omniauth['uid'])\n"\ " user.uid = omniauth['uid']\n"\ " user.first_name = omniauth['extra']['first_name']\n"\ " user.last_name = omniauth['extra']['last_name']\n"\ " user.email = omniauth['extra']['email']\n"\ " user.avatar_url = omniauth['extra']['avatar_url']\n"\ " user.save\n"\ " user\n"\ " end" append_to_file "app/models/#{user_model_name.downcase}.rb", method, after: Regexp.new("^.*" + Regexp.escape(" < ActiveRecord::Base") + ".*$", Regexp::IGNORECASE) end |
#ask_user_for_configuration ⇒ Object
copy_configuration
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 40 def ask_user_for_configuration return nil if CONFIGURATION['no_config'] # User model name CONFIGURATION['user_model_name'] = ask "Define user model name:" CONFIGURATION['user_model_name'] = "User" if check_option CONFIGURATION['user_model_name'] # App ID CONFIGURATION['app_id'] = ask "App id:" CONFIGURATION['app_id'] = "APP_ID" if check_option CONFIGURATION['app_id'] # App secret CONFIGURATION['app_secret'] = ask "App secret:" CONFIGURATION['app_secret'] = "APP_SECRET" if check_option CONFIGURATION['app_secret'] end |
#check_installation ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 16 def check_installation installation_files = [INITIALIZER_LOCATION, OMNIAUTH_CONTROLLER_LOCATION] valid_install = true installation_files.each do |file_location| valid_install = valid_install && File.exists?(file_location) end if !valid_install say "###############", :red say "### WARNING ###", :red say "###############", :red say "None or partial installation was detected!" say "Please run the install generator before" say "running this generator:" say " rails generate omniauth_infinum:install" end end |
#copy_configuration ⇒ Object
check_installation
33 34 35 36 37 38 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 33 def copy_configuration # This is just to make the configuration writeable .each do |key, value| CONFIGURATION[key] = value end end |
#create_user_model ⇒ Object
explane_to_user
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 53 def create_user_model if File.exists? "models/#{user_model_name}" # Generate migration for existing model say "Generating migration files for #{user_model_name} model", :green command = "cd #{Rails.root.to_s};"\ "rails g migration add_auth_to_#{user_model_name.downcase}"\ " first_name:string last_name:string email:string avatar_url:string uid:string" system command # Warn the user say "" say "############", :red say "### NOTE ###", :red say "############", :red say "Unnecessary columns should be deleted by hand" say "from the newly generated migration file!" say "" else # Generate model say "Generating #{user_model_name} model", :green command = "cd #{Rails.root.to_s};"\ "rails g model #{user_model_name} first_name:string last_name:string email:string avatar_url:string uid:string" system command end end |
#rename_user_model_in_controllers ⇒ Object
add_omniauth_user_creation
94 95 96 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 94 def rename_user_model_in_controllers gsub_file OMNIAUTH_CONTROLLER_LOCATION, "USER_MODEL", user_model_name end |
#set_app_id_and_secret ⇒ Object
rename_user_model_in_controllers
98 99 100 101 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 98 def set_app_id_and_secret gsub_file INITIALIZER_LOCATION, "APP_ID", app_id gsub_file INITIALIZER_LOCATION, "APP_SECRET", app_secret end |
#set_user_model_for_authentification ⇒ Object
set_app_id_and_secret
103 104 105 |
# File 'lib/generators/infinum/omniauth/config_generator.rb', line 103 def set_user_model_for_authentification gsub_file "app/controllers/application_controller.rb", "USER_MODEL", user_model_name end |