gennaro 0.2.1 → 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 (29) hide show
  1. checksums.yaml +4 -4
  2. data/bin/gennaro +1 -1
  3. data/lib/gennaro/gennaro.rb +1 -0
  4. data/lib/gennaro/version.rb +1 -1
  5. data/templates/authentication/Gemfile +1 -0
  6. data/templates/authentication/Rakefile +5 -1
  7. data/templates/authentication/app/controllers/application.rb +22 -0
  8. data/templates/authentication/app/controllers/users.rb +68 -48
  9. data/templates/authentication/app/helpers/application.rb +20 -0
  10. data/templates/authentication/app/helpers/cookie.rb +5 -8
  11. data/templates/authentication/app/helpers/user.rb +11 -1
  12. data/templates/authentication/app/models/user.rb +4 -28
  13. data/templates/authentication/app/views/user/login.erb +16 -0
  14. data/templates/authentication/app/views/user/logout.erb +9 -0
  15. data/templates/authentication/app/views/user/lost_password.erb +15 -0
  16. data/templates/authentication/app/views/user/password_recovery.erb +17 -0
  17. data/templates/authentication/app/views/user/signup.erb +17 -0
  18. data/templates/authentication/app/views/user/template/footer.rb +2 -0
  19. data/templates/authentication/app/views/user/template/header.erb +8 -0
  20. data/templates/authentication/config.ru +5 -0
  21. data/templates/authentication/views/user/login.erb +16 -0
  22. data/templates/authentication/views/user/logout.erb +9 -0
  23. data/templates/authentication/views/user/lost_password.erb +15 -0
  24. data/templates/authentication/views/user/new_password.erb +16 -0
  25. data/templates/authentication/views/user/password_recovery.erb +17 -0
  26. data/templates/authentication/views/user/signup.erb +17 -0
  27. data/templates/authentication/views/user/template/footer.erb +2 -0
  28. data/templates/authentication/views/user/template/header.erb +8 -0
  29. metadata +19 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4d5143a79ab2cf7e6e3ccb6dea61bd0b7290de0
4
- data.tar.gz: 462d31e7772aac3b15b27a2f7631b638f8101e7c
3
+ metadata.gz: 80405acaeb5e87ed31dc20a59b3cb045fb0b0636
4
+ data.tar.gz: b0354be72a53234219c5e458982514ea2b9d1549
5
5
  SHA512:
6
- metadata.gz: 7a5f52841341d2b93d7c48b14e0eb44811bb0ea4afa1cc25dd1e07483d5970f4f00086eb208145106f663f0e74a1e59714fce38d33c3ba76adb6eeecfc75f9d1
7
- data.tar.gz: 2b9cecbeca7b065ae60cbad34e2d54a7da2d399efd84c79a13d48732f605366b188d9e8b378ca2d82408c04fb6f8ce39d9f8aad52a8bee8f3cbc48f8f9b4f652
6
+ metadata.gz: d00251c816c985f2da759a2663ce5ce296c086c153e9975707333670e06f61e0ccc5021b68efeb11e63ec50e6388523dfd04c085180bcd238f7dd976cc8e5a2b
7
+ data.tar.gz: 78f08cfa769fece813ea53603a2353d2ee27b823a01c77a141e49f035aa115a36d203c9e83e4ad2e56b9ae58645e19121c59e4b66d254884bcc39911e6d596c6
data/bin/gennaro CHANGED
@@ -57,5 +57,5 @@ else
57
57
  gennaro = Gennaro.new template, options[:classname], options[:path], options[:force]
58
58
  gennaro.generate!
59
59
  gennaro.replace_tags!
60
- puts "All done. Execute 'cd #{gennaro.path} && bundle install && rake test'"
60
+ puts "All done. Execute 'cd #{gennaro.path} && bundle install && rake'"
61
61
  end
@@ -41,6 +41,7 @@ class Gennaro
41
41
  s = File.read f
42
42
  File.open(f, ?w) { |f|
43
43
  s.gsub! '${ClassName}', @classname
44
+ s.gsub! '${AppName}', @appname
44
45
  s.gsub! '${GenerateString}', get_random_string(36)
45
46
  f.write s
46
47
  }
@@ -10,6 +10,6 @@
10
10
 
11
11
  class Gennaro
12
12
  def self.version
13
- '0.2.1'
13
+ '0.3'
14
14
  end
15
15
  end
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
+ gem 'thin'
3
4
  gem 'sinatra'
4
5
  gem 'bcrypt-ruby'
5
6
  gem 'data_mapper'
@@ -1,11 +1,15 @@
1
1
  #! /usr/bin/env ruby
2
2
  require 'rake'
3
3
 
4
- task :default => :test
4
+ task :default => [ :test, :run ]
5
5
 
6
6
  task :test do
7
7
  FileUtils.cd 'spec' do
8
8
  sh 'rspec user_spec.rb --backtrace --color --format doc'
9
9
  end
10
10
  File.delete 'db/spec.db' if File.exists? 'db/spec.db'
11
+ end
12
+
13
+ task :run do
14
+ sh 'thin -R config.ru -p 4567 start'
11
15
  end
@@ -0,0 +1,22 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ class ${ClassName}
12
+ before do
13
+ @title = '${ClassName}'
14
+ @language = request.env['HTTP_ACCEPT_LANGUAGE']
15
+ @current_url = "http://#{request.env['HTTP_HOST']}#{request.env['REQUEST_URI']}"
16
+ @domain = "http://#{request.env['HTTP_HOST']}"
17
+ end
18
+
19
+ get '/' do
20
+ 'Hello, world!'
21
+ end
22
+ end
@@ -9,78 +9,98 @@
9
9
  #++
10
10
 
11
11
  class ${ClassName}
12
- post '/user/login/?' do
13
- if logged_in?
14
- return 'You are already logged in.'
15
- end
16
-
17
- if User.login params[:username], params[:password]
18
- 'Login successful.'
19
- else
20
- 'Login failed.'
21
- end
12
+ get '/user/login/?' do
13
+ erb :'user/login'
22
14
  end
23
15
 
24
- post '/user/logout/?' do
16
+ get '/user/logout/?' do
25
17
  if logged_in?
26
18
  current_user.logout!
27
- 'Logout successful.'
19
+ delete_login!
20
+ @success = 'Logout successful.'
28
21
  else
29
- 'You are not logged in.'
22
+ @error = 'You are not logged in.'
30
23
  end
24
+
25
+ erb :'user/logout'
31
26
  end
32
27
 
33
- post '/user/signup/?' do
34
- if logged_in?
35
- return 'You are already logged in.'
28
+ get '/user/signup/?' do
29
+ erb :'user/signup'
30
+ end
31
+
32
+ get '/user/lost_password/?' do
33
+ erb :'user/lost_password'
34
+ end
35
+
36
+ get '/user/password_recovery/?' do
37
+ erb :'user/password_recovery'
38
+ end
39
+
40
+ post '/user/login/?' do
41
+ if not fields? :username, :password
42
+ @error = 'You have to complete all the required fields.'
43
+ elsif logged_in?
44
+ @error = 'You are already logged in.'
45
+ else
46
+ session = User.login params[:username], params[:password]
47
+ if session
48
+ set_login! session
49
+ @success = 'Login successful.'
50
+ else
51
+ @error = 'Login failed.'
52
+ end
36
53
  end
37
54
 
38
- if User.exists? params[:username]
39
- 'The username you have chosen is already taken.'
55
+ erb :'user/login'
56
+ end
57
+
58
+ post '/user/signup/?' do
59
+ if not fields? :username, :email, :password
60
+ @error = 'You have to complete all the required fields.'
61
+ elsif logged_in?
62
+ @error = 'You are already logged in.'
63
+ elsif User.exists? params[:username]
64
+ @error = 'The username you have chosen is already taken.'
40
65
  else
41
- user = User.new params[:username], params[:email], params[:password], User.user
66
+ user = User.signup params[:username], params[:email], params[:password], User.user
42
67
  if user.errors.any?
43
- user.errors.first
68
+ @error = user.errors.first
44
69
  else
45
- 'Sign up successful.'
70
+ @success = 'Sign up successful.'
46
71
  end
47
72
  end
73
+
74
+ erb :'user/signup'
48
75
  end
49
76
 
50
77
  post '/user/lost_password/?' do
51
- if logged_in?
52
- return 'You are already logged in.'
53
- end
54
-
55
- if User.exists? params[:username]
56
- User.lost_password params[:username]
78
+ if not fields? :username
79
+ @error = 'You have to complete all the required fields.'
80
+ elsif logged_in?
81
+ @error = 'You are already logged in.'
82
+ elsif User.exists? params[:username]
83
+ passcode = User.lost_password params[:username]
84
+ # send a mail or what you want
85
+ @success = 'You should receive a mail with the instructions to recover your password.'
57
86
  else
58
- 'The given username doesn\'t exists.'
87
+ @error = 'The given username doesn\'t exists.'
59
88
  end
89
+
90
+ erb :'user/lost_password'
60
91
  end
61
92
 
62
93
  post '/user/password_recovery/?' do
63
- if logged_in?
64
- return 'You are already logged in.'
65
- end
66
-
67
- if User.password_recovery params[:username], params[:passcode], params[:password]
68
- 'Password set successful.'
94
+ if not fields? :username, :passcode, :password
95
+ @error = 'You have to complete all the required fields.'
96
+ elsif logged_in?
97
+ @error = 'You are already logged in.'
98
+ elsif User.password_recovery params[:username], params[:passcode], params[:password]
99
+ @success = 'Password set successful.'
69
100
  else
70
- 'Error setting the password.'
71
- end
72
- end
73
-
74
- post '/user/new_password/?' do
75
- unless logged_in?
76
- return 'You need to log in.'
101
+ @error = 'Error setting the password.'
77
102
  end
78
103
 
79
- user = current_user.new_password params[:curr_password], params[:password]
80
- if user
81
- 'Your new password has been set.'
82
- else
83
- 'Error setting your new password.'
84
- end
104
+ erb :'user/password_recovery'
85
105
  end
86
- end
106
+ end
@@ -0,0 +1,20 @@
1
+ #--
2
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
3
+ # Version 2, December 2004
4
+ #
5
+ # DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
6
+ # TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
7
+ #
8
+ # 0. You just DO WHAT THE FUCK YOU WANT TO.
9
+ #++
10
+
11
+ class ${ClassName}
12
+ helpers do
13
+ def fields?(*args)
14
+ args.each { |a|
15
+ return false unless params.include? a.to_s
16
+ }
17
+ true
18
+ end
19
+ end
20
+ end
@@ -18,19 +18,16 @@ class ${ClassName}
18
18
  }
19
19
  end
20
20
 
21
- def delete_cookie(key)
22
- response.set_cookie key, {
23
- :value => '',
24
- :expires => Time.now
25
- }
21
+ def get_cookie(key)
22
+ request.cookies[key]
26
23
  end
27
24
 
28
25
  def cookie_exists?(key)
29
- request.cookies.include? key
26
+ !!get_cookie(key)
30
27
  end
31
28
 
32
- def get_cookie(key)
33
- cookie_exists?(key) ? request.cookies[key] : nil
29
+ def delete_cookie(key)
30
+ set_cookie key, '', '/', Time.now
34
31
  end
35
32
  end
36
33
  end
@@ -12,7 +12,7 @@ class ${ClassName}
12
12
  helpers do
13
13
  def current_user
14
14
  guest = Guest.new
15
- return guest unless cookie_exists? 'userid'
15
+ return guest unless cookie_exists? 'sessid'
16
16
  User.first(:session => get_cookie('sessid')) || guest
17
17
  end
18
18
 
@@ -20,5 +20,15 @@ class ${ClassName}
20
20
  current_user.is_a? User
21
21
  end
22
22
  alias_method :logged?, :logged_in?
23
+
24
+ def set_login(session)
25
+ set_cookie 'sessid', session
26
+ end
27
+ alias_method :set_login!, :set_login
28
+
29
+ def delete_login
30
+ delete_cookie 'sessid'
31
+ end
32
+ alias_method :delete_login!, :delete_login
23
33
  end
24
34
  end
@@ -30,8 +30,9 @@ class User
30
30
  property :updated_at, DateTime
31
31
 
32
32
  def password=(password)
33
- self.salt = BCrypt::Engine.generate_salt
34
- self.salted_password = BCrypt::Engine.hash_secret password, self.salt
33
+ salt = BCrypt::Engine.generate_salt
34
+ self.salt = salt
35
+ self.salted_password = BCrypt::Engine.hash_secret password, salt
35
36
  end
36
37
 
37
38
  def founder?
@@ -74,11 +75,6 @@ class User
74
75
  end
75
76
  alias_method :logout!, :logout
76
77
 
77
- def new_password(curr_password, password)
78
- return false unless self.salted_password == BCrypt::Engine.hash_secret(curr_password, self.salt)
79
- self.password = password
80
- end
81
-
82
78
  class << self
83
79
  def banned
84
80
  -1
@@ -127,7 +123,7 @@ class User
127
123
  user = User.first(:username => username)
128
124
  return false unless user
129
125
  if user.salted_password == BCrypt::Engine.hash_secret(password, user.salt)
130
- user.update(:session => BCrypt::Engine.generate_salt)
126
+ return user.update(:session => BCrypt::Engine.generate_salt) ? user.session : false
131
127
  else
132
128
  false
133
129
  end
@@ -136,19 +132,6 @@ class User
136
132
  alias_method :signin, :authentication
137
133
  alias_method :authenticate, :authentication
138
134
 
139
- def logout(username)
140
- user = User.first(:username => username)
141
- return false unless user
142
- user.update(:session => '')
143
- user.session.empty?
144
- end
145
- alias_method :logout!, :logout
146
-
147
- def logged?(username, session)
148
- User.count(:username => username, :session => session) == 1
149
- end
150
- alias_method :logged_in?, :logged?
151
-
152
135
  def lost_password(username)
153
136
  user = User.first(:username => username)
154
137
  return false unless user
@@ -168,12 +151,5 @@ class User
168
151
  :password => password
169
152
  })
170
153
  end
171
-
172
- def new_password(username, curr_password, password)
173
- user = User.first(:username => username)
174
- return false unless user
175
- return false unless user.salted_password == BCrypt::Engine.hash_secret(curr_password, user.salt)
176
- user.update(:password => password)
177
- end
178
154
  end
179
155
  end
@@ -0,0 +1,16 @@
1
+ <%= erb :'template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="password" placeholder="password" name="password"><br>
11
+ <%= csrf_tag %>
12
+ <input type="submit" value="Login">
13
+ </form>
14
+ <% end %>
15
+
16
+ <%= erb :'template/footer' %>
@@ -0,0 +1,9 @@
1
+ <%= erb :'template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% end %>
8
+
9
+ <%= erb :'template/footer' %>
@@ -0,0 +1,15 @@
1
+ <%= erb :'template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <%= csrf_tag %>
11
+ <input type="submit" value="Request">
12
+ </form>
13
+ <% end %>
14
+
15
+ <%= erb :'template/footer' %>
@@ -0,0 +1,17 @@
1
+ <%= erb :'template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="password" placeholder="code" name="passcode"><br>
11
+ <input type="password" placeholder="new password" name="password"><br>
12
+ <%= csrf_tag %>
13
+ <input type="submit" value="Recover">
14
+ </form>
15
+ <% end %>
16
+
17
+ <%= erb :'template/footer' %>
@@ -0,0 +1,17 @@
1
+ <%= erb :'template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="email" placeholder="email" name="email" ><br>
11
+ <input type="password" placeholder="password" name="password"><br>
12
+ <%= csrf_tag %>
13
+ <input type="submit" value="Sign up">
14
+ </form>
15
+ <% end %>
16
+
17
+ <%= erb :'template/footer' %>
@@ -0,0 +1,2 @@
1
+ </body>
2
+ </html>
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <meta name="robots" content="index, follow">
6
+ <title><%= @title %></title>
7
+ </head>
8
+ <body>
@@ -0,0 +1,5 @@
1
+ require 'bundler'
2
+ Bundler.require
3
+
4
+ require './example'
5
+ run ${ClassName}
@@ -0,0 +1,16 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="password" placeholder="password" name="password"><br>
11
+ <%= csrf_tag %>
12
+ <input type="submit" value="Login">
13
+ </form>
14
+ <% end %>
15
+
16
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,9 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% end %>
8
+
9
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,15 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <%= csrf_tag %>
11
+ <input type="submit" value="Request">
12
+ </form>
13
+ <% end %>
14
+
15
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,16 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="password" placeholder="current password" name="curr_password"><br>
10
+ <input type="password" placeholder="new password" name="password" ><br>
11
+ <%= csrf_tag %>
12
+ <input type="submit" value="Send">
13
+ </form>
14
+ <% end %>
15
+
16
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,17 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="password" placeholder="code" name="passcode"><br>
11
+ <input type="password" placeholder="new password" name="password"><br>
12
+ <%= csrf_tag %>
13
+ <input type="submit" value="Recover">
14
+ </form>
15
+ <% end %>
16
+
17
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,17 @@
1
+ <%= erb :'user/template/header' %>
2
+
3
+ <% if defined? @error %>
4
+ <p class="error"><%= @error %></p>
5
+ <% elsif defined? @success %>
6
+ <p class="success"><%= @success %></p>
7
+ <% else %>
8
+ <form action="<%= @current_url %>" method="post">
9
+ <input type="text" placeholder="username" name="username"><br>
10
+ <input type="email" placeholder="email" name="email" ><br>
11
+ <input type="password" placeholder="password" name="password"><br>
12
+ <%= csrf_tag %>
13
+ <input type="submit" value="Sign up">
14
+ </form>
15
+ <% end %>
16
+
17
+ <%= erb :'user/template/footer' %>
@@ -0,0 +1,2 @@
1
+ </body>
2
+ </html>
@@ -0,0 +1,8 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <meta name="robots" content="index, follow">
6
+ <title><%= @title %></title>
7
+ </head>
8
+ <body>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gennaro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: '0.3'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Giovanni Capuano
@@ -50,16 +50,34 @@ files:
50
50
  - lib/gennaro/gennaro.rb
51
51
  - lib/gennaro/version.rb
52
52
  - lib/gennaro.rb
53
+ - templates/authentication/app/controllers/application.rb
53
54
  - templates/authentication/app/controllers/users.rb
55
+ - templates/authentication/app/helpers/application.rb
54
56
  - templates/authentication/app/helpers/cookie.rb
55
57
  - templates/authentication/app/helpers/csrf.rb
56
58
  - templates/authentication/app/helpers/user.rb
57
59
  - templates/authentication/app/models/guest.rb
58
60
  - templates/authentication/app/models/user.rb
61
+ - templates/authentication/app/views/user/login.erb
62
+ - templates/authentication/app/views/user/logout.erb
63
+ - templates/authentication/app/views/user/lost_password.erb
64
+ - templates/authentication/app/views/user/password_recovery.erb
65
+ - templates/authentication/app/views/user/signup.erb
66
+ - templates/authentication/app/views/user/template/footer.rb
67
+ - templates/authentication/app/views/user/template/header.erb
68
+ - templates/authentication/config.ru
59
69
  - templates/authentication/Gemfile
60
70
  - templates/authentication/Rakefile
61
71
  - templates/authentication/spec/spec.rb
62
72
  - templates/authentication/spec/user_spec.rb
73
+ - templates/authentication/views/user/login.erb
74
+ - templates/authentication/views/user/logout.erb
75
+ - templates/authentication/views/user/lost_password.erb
76
+ - templates/authentication/views/user/new_password.erb
77
+ - templates/authentication/views/user/password_recovery.erb
78
+ - templates/authentication/views/user/signup.erb
79
+ - templates/authentication/views/user/template/footer.erb
80
+ - templates/authentication/views/user/template/header.erb
63
81
  - templates/authentication/_class_name_.rb
64
82
  - spec/gennaro_spec.rb
65
83
  - bin/gennaro