bootup 0.0.2 → 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.
Files changed (28) hide show
  1. data/README.md +35 -10
  2. data/lib/bootup/version.rb +1 -1
  3. data/lib/generators/bootup/bootup_generator.rb +81 -21
  4. data/lib/generators/bootup/templates/.gitignore +25 -0
  5. data/lib/generators/bootup/templates/authentication/controllers/application_controller.rb +9 -0
  6. data/lib/generators/bootup/templates/authentication/controllers/pages_controller.rb +6 -0
  7. data/lib/generators/bootup/templates/authentication/controllers/user_sessions_controller.rb.erb +25 -0
  8. data/lib/generators/bootup/templates/authentication/controllers/users_controller.rb.erb +81 -0
  9. data/lib/generators/bootup/templates/authentication/migrate/20121128071307_sorcery_core.rb +16 -0
  10. data/lib/generators/bootup/templates/authentication/models/.gitkeep +0 -0
  11. data/lib/generators/bootup/templates/authentication/models/sorcery_core.rb.erb +16 -0
  12. data/lib/generators/bootup/templates/authentication/models/user_mongoid.rb.erb +15 -0
  13. data/lib/generators/bootup/templates/authentication/models/user_others.rb.erb +7 -0
  14. data/lib/generators/bootup/templates/authentication/routes.rb.erb +11 -0
  15. data/lib/generators/bootup/templates/authentication/sorcery.rb +398 -0
  16. data/lib/generators/bootup/templates/authentication/views/layouts/application.html.erb +79 -0
  17. data/lib/generators/bootup/templates/authentication/views/pages/home.html.erb +2 -0
  18. data/lib/generators/bootup/templates/authentication/views/user_sessions/_form.html.erb +12 -0
  19. data/lib/generators/bootup/templates/authentication/views/user_sessions/create.html.erb +2 -0
  20. data/lib/generators/bootup/templates/authentication/views/user_sessions/destroy.html.erb +2 -0
  21. data/lib/generators/bootup/templates/authentication/views/user_sessions/new.html.erb +5 -0
  22. data/lib/generators/bootup/templates/authentication/views/users/_form.html.erb +15 -0
  23. data/lib/generators/bootup/templates/authentication/views/users/edit.html.erb +6 -0
  24. data/lib/generators/bootup/templates/authentication/views/users/index.html.erb +29 -0
  25. data/lib/generators/bootup/templates/authentication/views/users/new.html.erb +4 -0
  26. data/lib/generators/bootup/templates/authentication/views/users/show.html.erb +2 -0
  27. data/lib/generators/bootup/templates/database.yml.erb +5 -3
  28. metadata +25 -2
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Bootup
2
2
 
3
- Provides a rails generator to install essential gems required to start a new rails app.
3
+ Provides a rails generator which installs a few useful gems & sets up authentication using sorcery along with scaffolding.
4
4
 
5
5
  ## Installation
6
6
 
@@ -39,16 +39,40 @@ Note: If *APP_NAME* is not supplied, the root folder name would be used as *APP_
39
39
 
40
40
  The following gems would be installed:
41
41
 
42
- 1. rails 3.2.3
43
- 2. pg
44
- 3. jquery-rails
45
- 4. simple_form (Generator would be run automatically)
46
- 5. thin
47
- 6. twitter-bootstrap-rails (Generator would be run automatically)
48
- 7. sorcery
49
- 8. jquery-datatables-rails (Automatically included in application.js & initialized to #datatables)
42
+ 1. rails
43
+ 2. jquery-rails
44
+
45
+ Database Stuff:
46
+
47
+ 1. pg
48
+ 2. mongoid
49
+ 3. sqlite
50
+
51
+ Assets (Outside asset group for heroku integration):
52
+
53
+ 1. twitter-bootstrap-rails (Generator would be run automatically)
54
+ 2. jquery-datatables-rails (Automatically included in application.js & initialized to #datatables)
55
+
56
+ View Stuff
57
+
58
+ 1. simple_form (Generator would be run automatically)
59
+
60
+ Authentication:
61
+ 1. sorcery
62
+
63
+ Server:
64
+ 1. thin
65
+
66
+ Group Assets:
67
+
68
+ 1. less-rails
69
+ 2. sass-rails
70
+ 3. coffee-rails
71
+ 4. uglifier
72
+ 5. therubyracer
50
73
 
51
74
  Group Test:
75
+
52
76
  1. spork (Pre-configured with my personal preferences for pre-fork & each_run blocks)
53
77
  2. faker
54
78
  3. capybara
@@ -57,7 +81,8 @@ Group Test:
57
81
  6. database_cleaner
58
82
 
59
83
  Group Development & Test:
60
- 1. rspec-rails(Generator would be run automatically. Spec file replaced)
84
+
85
+ 1. rspec-rails (Generator would be run automatically. Spec file replaced)
61
86
  2. guard-rspec (Initialized. Guard watches views & runs request specs)
62
87
  3. rb-inotify
63
88
  4. libnotify (for Linux)
@@ -1,3 +1,3 @@
1
1
  module Bootup
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -3,72 +3,132 @@ class BootupGenerator < Rails::Generators::Base
3
3
  argument :app_name, type: :string, default: Rails.application.class.parent
4
4
 
5
5
  def generate_bootup
6
- log :generate, "Booting #{app_name}"
6
+ log :bootup, "Booting #{app_name}......"
7
7
 
8
- db = ask("What database would you like to start off with? P-Postgres / M-Mongoid / Default-SQLite")
9
- if db == 'P' or db == 'p'
8
+ db = ask("\n\nWhat database would you like to start off with? P-Postgres / M-Mongoid / Default-SQLite", :blue)
9
+ case db
10
+ when "P","p"
10
11
  @db = 'postgres'
11
- elsif db == 'M' or db == 'm'
12
+ when "M","m"
12
13
  @db = 'mongoid'
13
14
  else
14
15
  @db = 'sqlite'
15
16
  end
16
17
 
17
- log :generate, "Copying Gemfile"
18
+ log :bootup_log, "Copying Gemfile"
18
19
  template "Gemfile.erb", "Gemfile"
19
20
 
20
- log :generate, "Running Bundler"
21
+ log :bootup_log, "Running Bundler"
21
22
  Bundler.with_clean_env do
22
23
  run "bundle install"
23
24
  end
24
25
 
25
- log :generate, "Removing public/index.."
26
+ log :bootup_log, "Removing public/index.."
26
27
  inside Rails.root do
27
28
  run "rm public/index.html"
28
29
  end
29
30
 
30
31
  if @db == 'postgres'
31
- log :generate, "Initializing database.yml"
32
+ @username = ask("\n\nPlease enter you postgres username", :blue)
33
+ @password = ask("\n\nPlease enter you postgres password. Leave blank if not applicable", :blue)
34
+ log :bootup_log, "Initializing database.yml"
32
35
  template 'database.yml.erb', 'config/database.yml'
33
36
 
34
- log :generate, "Creating database"
37
+ log :bootup_log, "Creating database"
35
38
  rake("db:create")
36
39
  elsif @db == 'mongoid'
37
- log :generate, "Generating Mongoid config"
40
+ log :bootup_log, "Generating Mongoid config"
38
41
  generate "mongoid:config"
39
42
  end
40
43
 
41
44
 
42
- log :generate, "Installing Twitter Bootstrap"
45
+ log :bootup_log, "Installing Twitter Bootstrap"
43
46
  generate "bootstrap:install"
44
47
 
45
- log :generate, "Copy application.js & initialize datatables to #datatables - Remember to change sorting"
48
+ log :bootup_log, "Copy application.js & initialize datatables to #datatables - Remember to change sorting"
46
49
  copy_file "application.js", "app/assets/javascripts/application.js"
47
50
 
48
- log :generate, "Copying stylesheets"
51
+ log :bootup_log, "Copying stylesheets"
49
52
  copy_file "application.css", "app/assets/stylesheets/application.css"
50
53
 
51
- log :generate, "Installing Simple Form"
54
+ log :bootup_log, "Installing Simple Form"
52
55
  generate "simple_form:install --bootstrap"
53
56
 
54
- tests = ask("Would you like to get rid of the default testing framework & install Rspec with Guard?")
55
- if tests == 'y' or tests == 'yes'
56
- log :generate, "Removing Tests.."
57
+ tests = ask("\n\n Would you like to get rid of the default testing framework & install Rspec with Guard?", :blue)
58
+ if %w(y yes).include? tests
59
+ log :bootup_log, "Removing Tests.."
57
60
  inside Rails.root do
58
61
  run "rm -rf test/"
59
62
  end
60
63
 
61
- log :generate, "Setting up Rspec.."
64
+ log :bootup_log, "Setting up Rspec.."
62
65
  generate "rspec:install"
63
66
 
64
- log :generate, "Setting up Guard with a custom guardfile.."
67
+ log :bootup_log, "Setting up Guard with a custom guardfile.."
65
68
  copy_file "Guardfile", "Guardfile"
66
69
 
67
- log :generate, "Setting up spork"
70
+ log :bootup_log, "Setting up spork"
68
71
  copy_file "spec_helper.rb", "spec/spec_helper.rb"
69
72
  else
70
- log :generate, "Skipping removal of tests"
73
+ log :bootup_log, "Skipping removal of tests"
71
74
  end
75
+ log :bootup_log, "Initializing git repo"
76
+ inside Rails.root do
77
+ run "git init"
78
+ end
79
+ copy_file ".gitignore", "spec/spec_helper.rb"
80
+ inside Rails.root do
81
+ run "git add ."
82
+ run "git commit -m 'Initial Commit'"
83
+ end
84
+
85
+ auth = ask("\n\n Would you like authentication & related scaffolding to be setup?", :blue)
86
+
87
+ if %w(Y y Yes YES yes).include? auth
88
+ @model = ask("\n\n What would you like to call your user model? Default: User", :blue)
89
+ @model = "user" if @model.blank?
90
+ @model = @model.downcase.singularize
91
+ @models = @model.pluralize
92
+
93
+ log :bootup_log, "Installing Sorcery"
94
+ generate "sorcery:install"
95
+
96
+
97
+ log :bootup_log, "Copying models and migrations"
98
+
99
+ case @db
100
+ when 'mongoid'
101
+ template "authentication/models/user_mongoid.rb.erb", "app/models/#{@model}.rb"
102
+ inside Rails.root do
103
+ run "rm db/migrate/*"
104
+ end
105
+ else
106
+ template "authentication/models/user_others.rb.erb", "app/models/#{@model}.rb"
107
+ rake("db:migrate")
108
+ end
109
+
110
+ log :bootup_log, "Copying controllers"
111
+ template "authentication/controllers/users_controller.rb.erb", "app/controllers/#{@models}_controller.rb"
112
+ template "authentication/controllers/user_sessions_controller.rb.erb", "app/controllers/#{@model}_sessions_controller.rb"
113
+ copy_file "authentication/controllers/pages_controller.rb", "app/controllers/pages_controller.rb"
114
+ copy_file "authentication/controllers/application_controller.rb", "app/controllers/application_controller.rb"
115
+
116
+ log :bootup_log, "Copying views"
117
+ directory "authentication/views", "app/views"
118
+
119
+ log :bootup_log, "Copying initializers"
120
+ copy_file "authentication/sorcery.rb", "config/initializers/sorcery.rb"
121
+
122
+ log :bootup_log, "Copying initializers"
123
+ template "authentication/routes.rb.erb", "config/routes.rb"
72
124
 
125
+ inside Rails.root do
126
+ run "git add ."
127
+ run "git commit -am 'Authentication with sorcery.'"
128
+ end
129
+ end
130
+
131
+ log :Installation_complete, "\n\n\n Installation Complete! Hope you saved some time. \n\n\n"
73
132
  end
74
133
  end
134
+
@@ -0,0 +1,25 @@
1
+ # See http://help.github.com/ignore-files/ for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile ~/.gitignore_global
6
+
7
+ # Ignore bundler config
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+
13
+ # Ignore all logfiles and tempfiles.
14
+ /log/*.log
15
+ /tmp
16
+ *.swp
17
+ *.swo
18
+ *.csv
19
+ *.tsv
20
+ /config/database.yml
21
+ .rvmrc
22
+ .rvmrc.*
23
+ *.god
24
+ /public/*
25
+ /config/application.yml
@@ -0,0 +1,9 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ before_filter :require_login
4
+
5
+ protected
6
+ def not_authenticated
7
+ redirect_to login_path, :alert => "You're not authorized to access this page. Please login first."
8
+ end
9
+ end
@@ -0,0 +1,6 @@
1
+ class PagesController < ApplicationController
2
+ skip_before_filter :require_login
3
+
4
+ def home
5
+ end
6
+ end
@@ -0,0 +1,25 @@
1
+ class <%= "#{@model}_sessions_controller".classify %> < ApplicationController
2
+ skip_before_filter :require_login, :except => [:destroy]
3
+ def new
4
+ current_user and redirect_to user_path(current_user)
5
+ @user = <%= @model.classify %>.new
6
+ end
7
+
8
+ def create
9
+ respond_to do |format|
10
+ if @user = login(params[:email],params[:password])
11
+ format.html { redirect_back_or_to(@user, :notice => 'Login successful.') }
12
+ format.xml { render :xml => @user, :status => :created, :location => @user }
13
+ else
14
+ format.html { flash.now[:alert] = "Login failed."; render :action => "new" }
15
+ format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
16
+ end
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ logout
22
+ redirect_to(root_path, :alert => 'Logged out!')
23
+ end
24
+ end
25
+
@@ -0,0 +1,81 @@
1
+ class <%= "#{@models}_controller".classify %> < ApplicationController
2
+ skip_before_filter :require_login, :only => [:new, :create]
3
+ # GET /users
4
+ # GET /users.json
5
+ def index
6
+ @users = <%= @model.classify %>.all
7
+
8
+ respond_to do |format|
9
+ format.html # index.html.erb
10
+ format.json { render json: @users }
11
+ end
12
+ end
13
+
14
+ # GET /users/1
15
+ # GET /users/1.json
16
+ def show
17
+ @user = <%= @model.classify %>.find(params[:id])
18
+
19
+ respond_to do |format|
20
+ format.html # show.html.erb
21
+ format.json { render json: @user }
22
+ end
23
+ end
24
+
25
+ # GET /users/new
26
+ # GET /users/new.json
27
+ def new
28
+ @user = <%= @model.classify %>.new
29
+
30
+ respond_to do |format|
31
+ format.html # new.html.erb
32
+ format.json { render json: @user }
33
+ end
34
+ end
35
+
36
+ # GET /users/1/edit
37
+ def edit
38
+ @user = <%= @model.classify %>.find(params[:id])
39
+ end
40
+
41
+ # POST /users
42
+ # POST /users.json
43
+ def create
44
+ @user = <%= @model.classify %>.new(params[:user])
45
+ if @user.save
46
+ reset_session
47
+ auto_login(@user)
48
+ redirect_to user_path(@user), notice: "Your Account has been created."
49
+ else
50
+ render action: "new"
51
+ end
52
+ end
53
+
54
+ # PUT /users/1
55
+ # PUT /users/1.json
56
+ def update
57
+ @user = <%= @model.classify %>.find(params[:id])
58
+
59
+ respond_to do |format|
60
+ if @user.update_attributes(params[:user])
61
+ format.html { redirect_to @user, notice: '<%= @model.classify %> was successfully updated.' }
62
+ format.json { head :no_content }
63
+ else
64
+ format.html { render action: "edit" }
65
+ format.json { render json: @user.errors, status: :unprocessable_entity }
66
+ end
67
+ end
68
+ end
69
+
70
+ # DELETE /users/1
71
+ # DELETE /users/1.json
72
+ def destroy
73
+ @user = <%= @model.classify %>.find(params[:id])
74
+ @user.destroy
75
+
76
+ respond_to do |format|
77
+ format.html { redirect_to users_url }
78
+ format.json { head :no_content }
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,16 @@
1
+ class SorceryCore < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :username, :null => false # if you use another field as a username, for example email, you can safely remove this field.
5
+ t.string :email, :default => nil # if you use this field as a username, you might want to make it :null => false.
6
+ t.string :crypted_password, :default => nil
7
+ t.string :salt, :default => nil
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :users
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ class SorceryCore < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :users do |t|
4
+ t.string :username, :null => false # if you use another field as a username, for example email, you can safely remove this field.
5
+ t.string :email, :default => nil # if you use this field as a username, you might want to make it :null => false.
6
+ t.string :crypted_password, :default => nil
7
+ t.string :salt, :default => nil
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :users
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ class <%= @model.classify %>
2
+ include Mongoid::Document
3
+ authenticates_with_sorcery!
4
+
5
+ field :username, type: String
6
+ field :email, type: String
7
+ field :crypted_password, type: String
8
+ field :salt, type: String
9
+
10
+ attr_accessible :username, :email, :password, :password_confirmation
11
+
12
+ validates_length_of :password, :minimum => 5, :message => "password must be at least 5 characters long", :if => :password
13
+ validates_confirmation_of :password, :message => "should match confirmation", :if => :password
14
+ validates_uniqueness_of :email, :username
15
+ end
@@ -0,0 +1,7 @@
1
+ class <%= @model.classify %> < ActiveRecord::Base
2
+ authenticates_with_sorcery!
3
+ attr_accessible :username, :email, :password, :password_confirmation
4
+ validates_length_of :password, :minimum => 5, :message => "password must be at least 5 characters long", :if => :password
5
+ validates_confirmation_of :password, :message => "should match confirmation", :if => :password
6
+ validates_uniqueness_of :username, :email
7
+ end
@@ -0,0 +1,11 @@
1
+ <%= Rails.application.class.parent %>::Application.routes.draw do
2
+
3
+ get "pages/home"
4
+ root :to => 'pages#home'
5
+
6
+ resources :<%= "#{@model}_sessions" %>
7
+ resources :<%= @models %>
8
+
9
+ match 'login' => '<%= "#{@model}_sessions" %>#new', :as => :login
10
+ match 'logout' => '<%= "#{@model}_sessions" %>#destroy', :as => :logout
11
+ end
@@ -0,0 +1,398 @@
1
+ # The first thing you need to configure is which modules you need in your app.
2
+ # The default is nothing which will include only core features (password encryption, login/logout).
3
+ # Available submodules are: :user_activation, :http_basic_auth, :remember_me,
4
+ # :reset_password, :session_timeout, :brute_force_protection, :activity_logging, :external
5
+ Rails.application.config.sorcery.submodules = []
6
+
7
+ # Here you can configure each submodule's features.
8
+ Rails.application.config.sorcery.configure do |config|
9
+ # -- core --
10
+ # What controller action to call for non-authenticated users. You can also
11
+ # override the 'not_authenticated' method of course.
12
+ # Default: `:not_authenticated`
13
+ #
14
+ # config.not_authenticated_action =
15
+
16
+
17
+ # When a non logged in user tries to enter a page that requires login, save
18
+ # the URL he wanted to reach, and send him there after login, using 'redirect_back_or_to'.
19
+ # Default: `true`
20
+ #
21
+ # config.save_return_to_url =
22
+
23
+
24
+ # Set domain option for cookies; Useful for remember_me submodule.
25
+ # Default: `nil`
26
+ #
27
+ # config.cookie_domain =
28
+
29
+
30
+ # -- session timeout --
31
+ # How long in seconds to keep the session alive.
32
+ # Default: `3600`
33
+ #
34
+ # config.session_timeout =
35
+
36
+
37
+ # Use the last action as the beginning of session timeout.
38
+ # Default: `false`
39
+ #
40
+ # config.session_timeout_from_last_action =
41
+
42
+
43
+ # -- http_basic_auth --
44
+ # What realm to display for which controller name. For example {"My App" => "Application"}
45
+ # Default: `{"application" => "Application"}`
46
+ #
47
+ # config.controller_to_realm_map =
48
+
49
+
50
+ # -- activity logging --
51
+ # will register the time of last user login, every login.
52
+ # Default: `true`
53
+ #
54
+ # config.register_login_time =
55
+
56
+
57
+ # will register the time of last user logout, every logout.
58
+ # Default: `true`
59
+ #
60
+ # config.register_logout_time =
61
+
62
+
63
+ # will register the time of last user action, every action.
64
+ # Default: `true`
65
+ #
66
+ # config.register_last_activity_time =
67
+
68
+
69
+ # -- external --
70
+ # What providers are supported by this app, i.e. [:twitter, :facebook, :github, :google, :liveid] .
71
+ # Default: `[]`
72
+ #
73
+ # config.external_providers =
74
+
75
+
76
+ # You can change it by your local ca_file. i.e. '/etc/pki/tls/certs/ca-bundle.crt'
77
+ # Path to ca_file. By default use a internal ca-bundle.crt.
78
+ # Default: `'path/to/ca_file'`
79
+ #
80
+ # config.ca_file =
81
+
82
+
83
+ # Twitter wil not accept any requests nor redirect uri containing localhost,
84
+ # make sure you use 0.0.0.0:3000 to access your app in development
85
+ #
86
+ # config.twitter.key = ""
87
+ # config.twitter.secret = ""
88
+ # config.twitter.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=twitter"
89
+ # config.twitter.user_info_mapping = {:email => "screen_name"}
90
+ #
91
+ # config.facebook.key = ""
92
+ # config.facebook.secret = ""
93
+ # config.facebook.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=facebook"
94
+ # config.facebook.user_info_mapping = {:email => "name"}
95
+ #
96
+ # config.github.key = ""
97
+ # config.github.secret = ""
98
+ # config.github.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=github"
99
+ # config.github.user_info_mapping = {:email => "name"}
100
+ #
101
+ # config.google.key = ""
102
+ # config.google.secret = ""
103
+ # config.google.callback_url = "http://0.0.0.0:3000/oauth/callback?provider=google"
104
+ # config.google.user_info_mapping = {:email => "email", :username => "name"}
105
+ #
106
+ # To use liveid in development mode you have to replace mydomain.com with
107
+ # a valid domain even in development. To use a valid domain in development
108
+ # simply add your domain in your /etc/hosts file in front of 127.0.0.1
109
+ #
110
+ # config.liveid.key = ""
111
+ # config.liveid.secret = ""
112
+ # config.liveid.callback_url = "http://mydomain.com:3000/oauth/callback?provider=liveid"
113
+ # config.liveid.user_info_mapping = {:username => "name"}
114
+
115
+
116
+ # --- user config ---
117
+ config.user_config do |user|
118
+ # -- core --
119
+ # specify username attributes, for example: [:username, :email].
120
+ # Default: `[:username]`
121
+ #
122
+ user.username_attribute_names = [:username, :email]
123
+
124
+
125
+ # change *virtual* password attribute, the one which is used until an encrypted one is generated.
126
+ # Default: `:password`
127
+ #
128
+ # user.password_attribute_name =
129
+
130
+
131
+ # downcase the username before trying to authenticate, default is false
132
+ # Default: `false`
133
+ #
134
+ # user.downcase_username_before_authenticating =
135
+
136
+
137
+ # change default email attribute.
138
+ # Default: `:email`
139
+ #
140
+ # user.email_attribute_name =
141
+
142
+
143
+ # change default crypted_password attribute.
144
+ # Default: `:crypted_password`
145
+ #
146
+ # user.crypted_password_attribute_name =
147
+
148
+
149
+ # what pattern to use to join the password with the salt
150
+ # Default: `""`
151
+ #
152
+ # user.salt_join_token =
153
+
154
+
155
+ # change default salt attribute.
156
+ # Default: `:salt`
157
+ #
158
+ # user.salt_attribute_name =
159
+
160
+
161
+ # how many times to apply encryption to the password.
162
+ # Default: `nil`
163
+ #
164
+ # user.stretches =
165
+
166
+
167
+ # encryption key used to encrypt reversible encryptions such as AES256.
168
+ # WARNING: If used for users' passwords, changing this key will leave passwords undecryptable!
169
+ # Default: `nil`
170
+ #
171
+ # user.encryption_key =
172
+
173
+
174
+ # use an external encryption class.
175
+ # Default: `nil`
176
+ #
177
+ # user.custom_encryption_provider =
178
+
179
+
180
+ # encryption algorithm name. See 'encryption_algorithm=' for available options.
181
+ # Default: `:bcrypt`
182
+ #
183
+ # user.encryption_algorithm =
184
+
185
+
186
+ # make this configuration inheritable for subclasses. Useful for ActiveRecord's STI.
187
+ # Default: `false`
188
+ #
189
+ # user.subclasses_inherit_config =
190
+
191
+
192
+ # -- user_activation --
193
+ # the attribute name to hold activation state (active/pending).
194
+ # Default: `:activation_state`
195
+ #
196
+ # user.activation_state_attribute_name =
197
+
198
+
199
+ # the attribute name to hold activation code (sent by email).
200
+ # Default: `:activation_token`
201
+ #
202
+ # user.activation_token_attribute_name =
203
+
204
+
205
+ # the attribute name to hold activation code expiration date.
206
+ # Default: `:activation_token_expires_at`
207
+ #
208
+ # user.activation_token_expires_at_attribute_name =
209
+
210
+
211
+ # how many seconds before the activation code expires. nil for never expires.
212
+ # Default: `nil`
213
+ #
214
+ # user.activation_token_expiration_period =
215
+
216
+
217
+ # your mailer class. Required.
218
+ # Default: `nil`
219
+ #
220
+ # user.user_activation_mailer =
221
+
222
+
223
+ # when true sorcery will not automatically
224
+ # email activation details and allow you to
225
+ # manually handle how and when email is sent.
226
+ # Default: `false`
227
+ #
228
+ # user.activation_mailer_disabled =
229
+
230
+
231
+ # activation needed email method on your mailer class.
232
+ # Default: `:activation_needed_email`
233
+ #
234
+ # user.activation_needed_email_method_name =
235
+
236
+
237
+ # activation success email method on your mailer class.
238
+ # Default: `:activation_success_email`
239
+ #
240
+ # user.activation_success_email_method_name =
241
+
242
+
243
+ # do you want to prevent or allow users that did not activate by email to login?
244
+ # Default: `true`
245
+ #
246
+ # user.prevent_non_active_users_to_login =
247
+
248
+
249
+ # -- reset_password --
250
+ # reset password code attribute name.
251
+ # Default: `:reset_password_token`
252
+ #
253
+ # user.reset_password_token_attribute_name =
254
+
255
+
256
+ # expires at attribute name.
257
+ # Default: `:reset_password_token_expires_at`
258
+ #
259
+ # user.reset_password_token_expires_at_attribute_name =
260
+
261
+
262
+ # when was email sent, used for hammering protection.
263
+ # Default: `:reset_password_email_sent_at`
264
+ #
265
+ # user.reset_password_email_sent_at_attribute_name =
266
+
267
+
268
+ # mailer class. Needed.
269
+ # Default: `nil`
270
+ #
271
+ # user.reset_password_mailer =
272
+
273
+
274
+ # reset password email method on your mailer class.
275
+ # Default: `:reset_password_email`
276
+ #
277
+ # user.reset_password_email_method_name =
278
+
279
+
280
+ # when true sorcery will not automatically
281
+ # email password reset details and allow you to
282
+ # manually handle how and when email is sent
283
+ # Default: `false`
284
+ #
285
+ # user.reset_password_mailer_disabled =
286
+
287
+
288
+ # how many seconds before the reset request expires. nil for never expires.
289
+ # Default: `nil`
290
+ #
291
+ # user.reset_password_expiration_period =
292
+
293
+
294
+ # hammering protection, how long to wait before allowing another email to be sent.
295
+ # Default: `5 * 60`
296
+ #
297
+ # user.reset_password_time_between_emails =
298
+
299
+
300
+ # -- brute_force_protection --
301
+ # Failed logins attribute name.
302
+ # Default: `:failed_logins_count`
303
+ #
304
+ # user.failed_logins_count_attribute_name =
305
+
306
+
307
+ # This field indicates whether user is banned and when it will be active again.
308
+ # Default: `:lock_expires_at`
309
+ #
310
+ # user.lock_expires_at_attribute_name =
311
+
312
+
313
+ # How many failed logins allowed.
314
+ # Default: `50`
315
+ #
316
+ # user.consecutive_login_retries_amount_limit =
317
+
318
+
319
+ # How long the user should be banned. in seconds. 0 for permanent.
320
+ # Default: `60 * 60`
321
+ #
322
+ # user.login_lock_time_period =
323
+
324
+ # Unlock token attribute name
325
+ # Default: `:unlock_token`
326
+ #
327
+ # user.unlock_token_attribute_name =
328
+
329
+ # Unlock token mailer method
330
+ # Default: `:send_unlock_token_email`
331
+ #
332
+ # user.unlock_token_email_method_name =
333
+
334
+ # when true sorcery will not automatically
335
+ # send email with unlock token
336
+ # Default: `false`
337
+ #
338
+ # user.unlock_token_mailer_disabled = true
339
+
340
+ # Unlock token mailer class
341
+ # Default: `nil`
342
+ #
343
+ # user.unlock_token_mailer = UserMailer
344
+
345
+ # -- activity logging --
346
+ # Last login attribute name.
347
+ # Default: `:last_login_at`
348
+ #
349
+ # user.last_login_at_attribute_name =
350
+
351
+
352
+ # Last logout attribute name.
353
+ # Default: `:last_logout_at`
354
+ #
355
+ # user.last_logout_at_attribute_name =
356
+
357
+
358
+ # Last activity attribute name.
359
+ # Default: `:last_activity_at`
360
+ #
361
+ # user.last_activity_at_attribute_name =
362
+
363
+
364
+ # How long since last activity is he user defined logged out?
365
+ # Default: `10 * 60`
366
+ #
367
+ # user.activity_timeout =
368
+
369
+
370
+ # -- external --
371
+ # Class which holds the various external provider data for this user.
372
+ # Default: `nil`
373
+ #
374
+ # user.authentications_class =
375
+
376
+
377
+ # User's identifier in authentications class.
378
+ # Default: `:user_id`
379
+ #
380
+ # user.authentications_user_id_attribute_name =
381
+
382
+
383
+ # Provider's identifier in authentications class.
384
+ # Default: `:provider`
385
+ #
386
+ # user.provider_attribute_name =
387
+
388
+
389
+ # User's external unique identifier in authentications class.
390
+ # Default: `:uid`
391
+ #
392
+ # user.provider_uid_attribute_name =
393
+ end
394
+
395
+ # This line must come after the 'user config' block.
396
+ # Define which model authenticates with sorcery.
397
+ config.user_class = "User"
398
+ end
@@ -0,0 +1,79 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title><%= content_for?(:title) ? yield(:title) : "Bootup" %></title>
8
+ <%= csrf_meta_tags %>
9
+
10
+ <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
11
+ <!--[if lt IE 9]>
12
+ <script src="http://html5shim.googlecode.com/svn/trunk/html5.js" type="text/javascript"></script>
13
+ <![endif]-->
14
+
15
+ <%= stylesheet_link_tag "application", :media => "all" %>
16
+ <%= javascript_include_tag "application" %>
17
+
18
+ <!-- For third-generation iPad with high-resolution Retina display: -->
19
+ <!-- Size should be 144 x 144 pixels -->
20
+ </head>
21
+ <body>
22
+
23
+ <div class="navbar navbar-fixed-top">
24
+ <div class="navbar-inner">
25
+ <div class="container">
26
+ <a class="btn btn-navbar" data-target=".nav-collapse" data-toggle="collapse">
27
+ <span class="icon-bar"></span>
28
+ <span class="icon-bar"></span>
29
+ <span class="icon-bar"></span>
30
+ </a>
31
+ <% if current_user -%>
32
+ <% link = user_path(current_user) -%>
33
+ <% else -%>
34
+ <% link = root_path -%>
35
+ <% end -%>
36
+ <a class="brand" href="<%= link %>">Bootup</a>
37
+ <div class="container nav-collapse">
38
+ <ul class="nav pull-right">
39
+ <% if current_user -%>
40
+ <li><%= link_to "Edit Profile", edit_user_path(current_user.id) %></li>
41
+ <li><%= link_to "Logout", :logout %></li>
42
+ <% else -%>
43
+ <li><%= link_to "Register", new_user_path %></li>
44
+ <li><%= link_to "Login", :login %></li>
45
+ <% end -%>
46
+ </ul>
47
+ </div><!--/.nav-collapse -->
48
+ </div>
49
+ </div>
50
+ </div>
51
+
52
+ <div class="container">
53
+ <div class="row">
54
+ <br><br><br>
55
+ <% flash.each do |name, msg| %>
56
+ <% unless msg.blank? -%>
57
+ <div class="alert alert-<%= name == :notice ? "success" : "error" %>">
58
+ <a class="close" data-dismiss="alert">&#215;</a>
59
+ <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
60
+ </div>
61
+ <% end %>
62
+ <% end -%>
63
+ <div class="span12">
64
+ <%= yield %>
65
+ </div>
66
+ </div><!--/row-->
67
+
68
+ <footer class="center">
69
+ <p>&copy; Company 2012</p>
70
+ </footer>
71
+
72
+ </div> <!-- /container -->
73
+
74
+ <!-- Javascripts
75
+ ================================================== -->
76
+ <!-- Placed at the end of the document so the pages load faster -->
77
+
78
+ </body>
79
+ </html>
@@ -0,0 +1,2 @@
1
+ <h1>Landing Page</h1>
2
+ <p>Generated by Bootup.</p>
@@ -0,0 +1,12 @@
1
+ <%= form_tag user_sessions_path, :method => :post do %>
2
+ <div class="form-inputs">
3
+ <%= label_tag :email %>
4
+ <%= text_field_tag :email %>
5
+ <%= label_tag :password %>
6
+ <%= password_field_tag :password %>
7
+ </div>
8
+ <div class="form-inputs">
9
+ <hr>
10
+ <%= submit_tag " Login ", class: "btn btn-primary" %>
11
+ </div>
12
+ <% end %>
@@ -0,0 +1,2 @@
1
+ <h1>UserSessions#create</h1>
2
+ <p>Find me in app/views/user_sessions/create.html.erb</p>
@@ -0,0 +1,2 @@
1
+ <h1>UserSessions#destroy</h1>
2
+ <p>Find me in app/views/user_sessions/destroy.html.erb</p>
@@ -0,0 +1,5 @@
1
+ <h1>Login</h1>
2
+ <hr>
3
+
4
+ <%= render 'form' %>
5
+
@@ -0,0 +1,15 @@
1
+ <%= simple_form_for(@user) do |f| %>
2
+ <%= f.error_notification %>
3
+
4
+ <div class="form-inputs">
5
+ <%= f.input :username %>
6
+ <%= f.input :email %>
7
+ <%= f.input :password %>
8
+ <%= f.input :password_confirmation %>
9
+ </div>
10
+
11
+ <div class="form-actions">
12
+ <%= f.button :submit, class: "btn btn-primary" %>
13
+ <%= link_to 'Back', root_path, class: "btn" %>
14
+ </div>
15
+ <% end %>
@@ -0,0 +1,6 @@
1
+ <h1>Editing user</h1>
2
+
3
+ <%= render 'form' %>
4
+
5
+ <%= link_to 'Show', @user %> |
6
+ <%= link_to 'Back', users_path %>
@@ -0,0 +1,29 @@
1
+ <h1>Listing users</h1>
2
+
3
+ <table>
4
+ <tr>
5
+ <th>Username</th>
6
+ <th>Email</th>
7
+ <th>Crypted password</th>
8
+ <th>Salt</th>
9
+ <th></th>
10
+ <th></th>
11
+ <th></th>
12
+ </tr>
13
+
14
+ <% @users.each do |user| %>
15
+ <tr>
16
+ <td><%= user.username %></td>
17
+ <td><%= user.email %></td>
18
+ <td><%= user.crypted_password %></td>
19
+ <td><%= user.salt %></td>
20
+ <td><%= link_to 'Show', user %></td>
21
+ <td><%= link_to 'Edit', edit_user_path(user) %></td>
22
+ <td><%= link_to 'Destroy', user, method: :delete, data: { confirm: 'Are you sure?' } %></td>
23
+ </tr>
24
+ <% end %>
25
+ </table>
26
+
27
+ <br />
28
+
29
+ <%= link_to 'New User', new_user_path %>
@@ -0,0 +1,4 @@
1
+ <h1>New user</h1>
2
+ <hr>
3
+ <%= render 'form' %>
4
+
@@ -0,0 +1,2 @@
1
+ <h1>Welcome <%= @user.username %></h1>
2
+ <hr>
@@ -1,7 +1,8 @@
1
1
  development:
2
2
  adapter: postgresql
3
3
  database: <%= app_name %>_development
4
- username: rahul
4
+ username: <%= @username unless @username.blank? %>
5
+ pasword: <%= @password unless @password.blank? %>
5
6
  encoding: utf8
6
7
  pool: 5
7
8
  timeout: 5000
@@ -9,7 +10,8 @@ development:
9
10
  test:
10
11
  adapter: postgresql
11
12
  database: <%= app_name %>_test
12
- username: rahul
13
+ username: <%= @username unless @username.blank? %>
14
+ pasword: <%= @password unless @password.blank? %>
13
15
  encoding: utf8
14
16
  pool: 5
15
17
  timeout: 5000
@@ -17,7 +19,7 @@ test:
17
19
  production:
18
20
  adapter: postgresql
19
21
  database: <%= app_name %>_production
20
- username: rahul
22
+ username:
21
23
  encoding: utf8
22
24
  pool: 5
23
25
  timeout: 5000
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bootup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-27 00:00:00.000000000 Z
12
+ date: 2012-11-28 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Helps create a new rails app quickly
15
15
  email:
@@ -29,10 +29,33 @@ files:
29
29
  - lib/bootup/version.rb
30
30
  - lib/generators/bootup/USAGE
31
31
  - lib/generators/bootup/bootup_generator.rb
32
+ - lib/generators/bootup/templates/.gitignore
32
33
  - lib/generators/bootup/templates/Gemfile.erb
33
34
  - lib/generators/bootup/templates/Guardfile
34
35
  - lib/generators/bootup/templates/application.css
35
36
  - lib/generators/bootup/templates/application.js
37
+ - lib/generators/bootup/templates/authentication/controllers/application_controller.rb
38
+ - lib/generators/bootup/templates/authentication/controllers/pages_controller.rb
39
+ - lib/generators/bootup/templates/authentication/controllers/user_sessions_controller.rb.erb
40
+ - lib/generators/bootup/templates/authentication/controllers/users_controller.rb.erb
41
+ - lib/generators/bootup/templates/authentication/migrate/20121128071307_sorcery_core.rb
42
+ - lib/generators/bootup/templates/authentication/models/.gitkeep
43
+ - lib/generators/bootup/templates/authentication/models/sorcery_core.rb.erb
44
+ - lib/generators/bootup/templates/authentication/models/user_mongoid.rb.erb
45
+ - lib/generators/bootup/templates/authentication/models/user_others.rb.erb
46
+ - lib/generators/bootup/templates/authentication/routes.rb.erb
47
+ - lib/generators/bootup/templates/authentication/sorcery.rb
48
+ - lib/generators/bootup/templates/authentication/views/layouts/application.html.erb
49
+ - lib/generators/bootup/templates/authentication/views/pages/home.html.erb
50
+ - lib/generators/bootup/templates/authentication/views/user_sessions/_form.html.erb
51
+ - lib/generators/bootup/templates/authentication/views/user_sessions/create.html.erb
52
+ - lib/generators/bootup/templates/authentication/views/user_sessions/destroy.html.erb
53
+ - lib/generators/bootup/templates/authentication/views/user_sessions/new.html.erb
54
+ - lib/generators/bootup/templates/authentication/views/users/_form.html.erb
55
+ - lib/generators/bootup/templates/authentication/views/users/edit.html.erb
56
+ - lib/generators/bootup/templates/authentication/views/users/index.html.erb
57
+ - lib/generators/bootup/templates/authentication/views/users/new.html.erb
58
+ - lib/generators/bootup/templates/authentication/views/users/show.html.erb
36
59
  - lib/generators/bootup/templates/database.yml.erb
37
60
  - lib/generators/bootup/templates/spec_helper.rb
38
61
  homepage: https://github.com/recklessrahul/bootup