Class: Pu::Rodauth::AccountGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Concerns::AccountSelector, Concerns::FeatureSelector
Defined in:
lib/generators/pu/rodauth/account_generator.rb

Instance Method Summary collapse

Methods included from Concerns::FeatureSelector

included

Methods included from Concerns::AccountSelector

included

Instance Method Details

#configure_rodauth_pluginObject



34
35
36
37
38
39
40
41
42
# File 'lib/generators/pu/rodauth/account_generator.rb', line 34

def configure_rodauth_plugin
  in_root do
    plugin_name = indent(
      "configure ::#{.classify}RodauthPlugin#{", :#{table_prefix}" unless primary?}\n", 2
    )
    gsub_file "app/rodauth/rodauth_app.rb", /.*# configure RodauthMain\n/, ""
    insert_into_file "app/rodauth/rodauth_app.rb", plugin_name, after: "# auth configuration\n"
  end
end

#configure_rodauth_plugin_load_memoryObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/generators/pu/rodauth/account_generator.rb', line 52

def configure_rodauth_plugin_load_memory
  in_root do
    plugin_config = indent(
      "rodauth#{"(:#{table_prefix})" unless primary?}.load_memory # autologin remembered #{table}\n", 4
    )
    gsub_file "app/rodauth/rodauth_app.rb", /.*# rodauth\.load_memory.*\n/, ""

    if remember?
      insert_into_file "app/rodauth/rodauth_app.rb", plugin_config, after: "# plugin route configuration\n"
    else
      gsub_file "app/rodauth/rodauth_app.rb", plugin_config, ""
      in_root do
        unless File.read("app/rodauth/rodauth_app.rb").match?(/.*\.load_memory # autologin/)
          insert_into_file "app/rodauth/rodauth_app.rb", indent("# rodauth.load_memory # autologin remembered users\n", 4),
            after: "# plugin route configuration\n"
        end
      end
    end
  end
end

#configure_rodauth_plugin_load_routeObject



44
45
46
47
48
49
50
# File 'lib/generators/pu/rodauth/account_generator.rb', line 44

def configure_rodauth_plugin_load_route
  in_root do
    route_config = indent("r.rodauth#{"(:#{table_prefix})" unless primary?}\n", 4)
    gsub_file "app/rodauth/rodauth_app.rb", /.*# r\.rodauth\n/, ""
    insert_into_file "app/rodauth/rodauth_app.rb", route_config, after: "# auth route configuration\n"
  end
end

#create_account_modelObject



88
89
90
91
92
93
94
95
96
# File 'lib/generators/pu/rodauth/account_generator.rb', line 88

def 
  return unless base?

  template "app/models/account.rb", "app/models/#{}.rb"
  invoke "pu:res:scaffold", [table, "email:string", "status:integer"], dest: "main_app",
    model: false,
    force: true,
    skip: options[:skip]
end

#create_mailerObject



98
99
100
101
102
103
104
# File 'lib/generators/pu/rodauth/account_generator.rb', line 98

def create_mailer
  return unless mails?

  template "app/mailers/rodauth_mailer.rb", "app/mailers/rodauth_mailer.rb"
  template "app/mailers/account_mailer.rb", "app/mailers/rodauth/#{}_mailer.rb"
  directory "app/views/rodauth_mailer", "app/views/rodauth/#{}_mailer"
end

#create_rodauth_appObject



30
31
32
# File 'lib/generators/pu/rodauth/account_generator.rb', line 30

def create_rodauth_app
  template "app/rodauth/account_rodauth_plugin.rb", "app/rodauth/#{}_rodauth_plugin.rb"
end

#create_rodauth_controllerObject



73
74
75
76
# File 'lib/generators/pu/rodauth/account_generator.rb', line 73

def create_rodauth_controller
  dest = "app/controllers/rodauth/#{}_controller.rb"
  template "app/controllers/plugin_controller.rb", dest
end

#generate_rodauth_migrationObject



78
79
80
81
82
83
84
85
86
# File 'lib/generators/pu/rodauth/account_generator.rb', line 78

def generate_rodauth_migration
  return if selected_migration_features.empty?

  invoke "pu:rodauth:migration", [table], features: selected_migration_features,
    name: kitchen_sink? ? "rodauth_kitchen_sink" : nil,
    migration_name: options[:migration_name],
    force: options[:force],
    skip: options[:skip]
end

#install_dependenciesObject



21
22
23
24
25
26
27
28
# File 'lib/generators/pu/rodauth/account_generator.rb', line 21

def install_dependencies
  Bundler.with_unbundled_env do
    run "bundle add jwt" if jwt? || jwt_refresh?
    run "bundle add rotp" if otp?
    run "bundle add rqrcode" if otp?
    run "bundle add webauthn" if webauthn? || webauthn_autofill?
  end
end