volt-user_templates 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/README.md +67 -0
- data/Rakefile +1 -0
- data/VERSION +1 -0
- data/app/user_templates/config/dependencies.rb +2 -0
- data/app/user_templates/config/routes.rb +1 -0
- data/app/user_templates/controllers/account_controller.rb +16 -0
- data/app/user_templates/controllers/login_controller.rb +47 -0
- data/app/user_templates/controllers/menu_controller.rb +13 -0
- data/app/user_templates/controllers/signup_controller.rb +39 -0
- data/app/user_templates/tasks/user_template_tasks.rb +26 -0
- data/app/user_templates/views/account/index.html +26 -0
- data/app/user_templates/views/login/forgot.html +21 -0
- data/app/user_templates/views/login/index.html +39 -0
- data/app/user_templates/views/mailers/forgot.email +41 -0
- data/app/user_templates/views/menu/index.html +25 -0
- data/app/user_templates/views/signup/index.html +27 -0
- data/lib/volt/user-templates.rb +4 -0
- data/volt-user_templates.gemspec +25 -0
- metadata +107 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 8b5ea73fe65c14ed0de4064bfc68ee1dca8ed22e
|
4
|
+
data.tar.gz: 536c392da63960d6d8c99e4ede4bcb63c04f1ccc
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3a85ff6c08000e56d0dd23b838965cbdfd4b085f5e36030186463f9e64472bac3c636824c15bfcd479c5969e34b4781862b44d83d46ce51724b608326df24768
|
7
|
+
data.tar.gz: 1fdbdd5caf3ecb191ba11343e2896d7f3d17874f3d7f1cb663197f041bff55e9aa4dcd3c0c5ff87e66d7a065cfd662d57f3b95e933dffe6bbc7a34c1b992b3e4
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# Volt User Templates
|
2
|
+
|
3
|
+
Volt user templates provide out of the box templates for users to signup, login, and logout. (Forgot password coming soon)
|
4
|
+
|
5
|
+
## Install
|
6
|
+
|
7
|
+
volt-user_templates now ships with volt, but if you have removed it, you can add it back with the following:
|
8
|
+
|
9
|
+
In your Gemfile, put:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'volt-user_templates'
|
13
|
+
```
|
14
|
+
|
15
|
+
Then in any component you want to use the templates in, add the following to config/dependencies.rb
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
component 'user_templates'
|
19
|
+
```
|
20
|
+
|
21
|
+
## Use
|
22
|
+
|
23
|
+
You can use volt-user-template two different ways.
|
24
|
+
|
25
|
+
1) You can add routes for it's templates
|
26
|
+
|
27
|
+
Add the following to your main components route file:
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
client '/signup', component: 'user_templates', controller: 'signup'
|
31
|
+
client '/forgot', component: 'user_templates', controller: 'login', action: 'forgot'
|
32
|
+
client '/login', component: 'user_templates', controller: 'login', action: 'index'
|
33
|
+
```
|
34
|
+
|
35
|
+
Now you can link to /signup and /login
|
36
|
+
|
37
|
+
2) You can include the templates as tags:
|
38
|
+
|
39
|
+
### Login
|
40
|
+
|
41
|
+
```html
|
42
|
+
<:user_templates:login post-login-url="/" />
|
43
|
+
```
|
44
|
+
|
45
|
+
The login template takes an optional post-login-url that will be redirected to after a successful login.
|
46
|
+
|
47
|
+
### Signup
|
48
|
+
|
49
|
+
```html
|
50
|
+
<:user_templates:signup post-signup-url="/" />
|
51
|
+
```
|
52
|
+
|
53
|
+
Signup takes an optional post-signup-url that will be redirected to after signup.
|
54
|
+
|
55
|
+
### Forgot
|
56
|
+
|
57
|
+
```html
|
58
|
+
<:user_templates:login:forgot post-forgot-url="/login" />
|
59
|
+
```
|
60
|
+
|
61
|
+
### Logout
|
62
|
+
|
63
|
+
volt-user_templates provides a nav bar tag that provides a login/logout link and shows the users name.
|
64
|
+
|
65
|
+
```html
|
66
|
+
<:user_templates:menu />
|
67
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
@@ -0,0 +1 @@
|
|
1
|
+
# Component routes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module UserTemplates
|
2
|
+
class AccountController < Volt::ModelController
|
3
|
+
before_action :require_login
|
4
|
+
|
5
|
+
def index
|
6
|
+
self.model = Volt.fetch_current_user.then(&:buffer)
|
7
|
+
end
|
8
|
+
|
9
|
+
def save
|
10
|
+
model.save! do
|
11
|
+
flash._notices << 'Account settings saved'
|
12
|
+
redirect_to '/'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module UserTemplates
|
2
|
+
class LoginController < Volt::ModelController
|
3
|
+
reactive_accessor :errors
|
4
|
+
reactive_accessor :login
|
5
|
+
reactive_accessor :password
|
6
|
+
reactive_accessor :reset_email
|
7
|
+
|
8
|
+
def do_login
|
9
|
+
Volt.login(login, password).then do |res|
|
10
|
+
# Successful login, clear out the form
|
11
|
+
self.errors = nil
|
12
|
+
self.login = ''
|
13
|
+
self.password = ''
|
14
|
+
|
15
|
+
after_login
|
16
|
+
|
17
|
+
nil
|
18
|
+
end.fail do |errors|
|
19
|
+
# Login fail
|
20
|
+
self.errors = errors
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def after_login
|
25
|
+
redirect_to(attrs.post_login_url || '/')
|
26
|
+
end
|
27
|
+
|
28
|
+
def forgot_url
|
29
|
+
url_for(component: 'user_templates', controller: 'login', action: 'forgot')
|
30
|
+
end
|
31
|
+
|
32
|
+
def send_reset_email
|
33
|
+
UserTemplateTasks.send_reset_email(reset_email).then do
|
34
|
+
self.reset_email = ''
|
35
|
+
flash._notices << 'Reset email sent.'
|
36
|
+
redirect_to(attrs.post_forgot_url || '/login')
|
37
|
+
end.fail do |err|
|
38
|
+
flash._errors << err.to_s
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def use_username?
|
43
|
+
Volt.config.public.try(:auth).try(:use_username)
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module UserTemplates
|
2
|
+
class MenuController < Volt::ModelController
|
3
|
+
def show_name
|
4
|
+
Volt.fetch_current_user.then do |user|
|
5
|
+
user._name || user._email || user._username
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def is_active?
|
10
|
+
url.path.split('/')[1] == 'login'
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module UserTemplates
|
2
|
+
class SignupController < Volt::ModelController
|
3
|
+
def index
|
4
|
+
self.model = store._users.buffer
|
5
|
+
end
|
6
|
+
|
7
|
+
def signup
|
8
|
+
# Get login and password to login
|
9
|
+
login = model.send(:"_#{User.login_field}")
|
10
|
+
password = model._password
|
11
|
+
|
12
|
+
save!.then do |result|
|
13
|
+
flash._notices << "Signup successful"
|
14
|
+
|
15
|
+
# On a successful signup, then login
|
16
|
+
Volt.login(login, password).then do
|
17
|
+
after_signup
|
18
|
+
end.fail do |errors|
|
19
|
+
# Show the error (probably only the server goes down)
|
20
|
+
flash._errors << errors.to_s
|
21
|
+
end
|
22
|
+
end.fail do |err|
|
23
|
+
puts "ERR: #{err.inspect}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def after_signup
|
28
|
+
post_signup_url = attrs.post_signup_url || '/'
|
29
|
+
|
30
|
+
# Redirect to post signup url
|
31
|
+
redirect_to post_signup_url
|
32
|
+
end
|
33
|
+
|
34
|
+
def use_username?
|
35
|
+
Volt.config.public.try(:auth).try(:use_username)
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'digest'
|
2
|
+
|
3
|
+
class UserTemplateTasks < Volt::Task
|
4
|
+
def password_reset_token(user_id)
|
5
|
+
Digest::SHA256.hexdigest("#{user_id}||#{Volt.config.app_secret}")
|
6
|
+
end
|
7
|
+
|
8
|
+
def send_reset_email(email)
|
9
|
+
# Find user by e-mail
|
10
|
+
Volt.skip_permissions do
|
11
|
+
store._users.where(email: email).fetch_first do |user|
|
12
|
+
if user
|
13
|
+
reset_token = password_reset_token(user.id)
|
14
|
+
|
15
|
+
reset_url = "http://#{Volt.config.domain}/#{reset_token}"
|
16
|
+
|
17
|
+
Mailer.deliver('user_templates/mailers/forgot',
|
18
|
+
{to: email, name: user._name, reset_url: reset_url}
|
19
|
+
)
|
20
|
+
else
|
21
|
+
raise "There is no account with the e-mail of #{email}."
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<:Title>
|
2
|
+
Your Account
|
3
|
+
|
4
|
+
<:Body>
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-6 col-md-offset-3">
|
7
|
+
<div class="span4 offset4 well">
|
8
|
+
<legend>Basic Info</legend>
|
9
|
+
|
10
|
+
<form e-submit="save">
|
11
|
+
<:fields:text value="{{ _name }}" />
|
12
|
+
<:fields:textarea value="{{ _bio }}" />
|
13
|
+
<button class="btn btn-info btn-block">Save</button>
|
14
|
+
</form>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
<hr />
|
18
|
+
<div class="span4 offset4 well">
|
19
|
+
<legend>Update Password</legend>
|
20
|
+
<form e-submit="save">
|
21
|
+
<:fields:text type="password" value="{{ _password }}" />
|
22
|
+
<button class="btn btn-info btn-block">Save</button>
|
23
|
+
</form>
|
24
|
+
</div>
|
25
|
+
</div>
|
26
|
+
</div>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<:Title>
|
2
|
+
Forgot your Password
|
3
|
+
|
4
|
+
<:Body>
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-6 col-md-offset-3">
|
7
|
+
<div class="span4 offset4 well">
|
8
|
+
<legend>Forgot your Password</legend>
|
9
|
+
|
10
|
+
<p>We'll e-mail you a reset link.</p>
|
11
|
+
<form e-submit="send_reset_email">
|
12
|
+
<div class="form-group">
|
13
|
+
<label class="control-label">Email</label>
|
14
|
+
<input class="form-control" type="text" value="{{ reset_email }}" autofocus />
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<button class="btn btn-info btn-block">Reset Password</button>
|
18
|
+
</form>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</div>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<:Title>
|
2
|
+
Login
|
3
|
+
|
4
|
+
<:Body>
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-6 col-md-offset-3">
|
7
|
+
<div class="span4 offset4 well">
|
8
|
+
<legend>Please Login</legend>
|
9
|
+
|
10
|
+
<form e-submit="do_login">
|
11
|
+
{{ if errors.present? }}
|
12
|
+
<div class="alert alert-danger">{{ errors }}</div>
|
13
|
+
{{ end }}
|
14
|
+
|
15
|
+
<div class="form-group">
|
16
|
+
<label class="control-label">
|
17
|
+
{{ if use_username? }}
|
18
|
+
Username
|
19
|
+
{{ else }}
|
20
|
+
Email
|
21
|
+
{{ end }}
|
22
|
+
</label>
|
23
|
+
<input class="form-control" type="text" value="{{ login }}" autofocus />
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="form-group">
|
27
|
+
<label class="control-label">Password <small style="font-weight: normal;">(<a tabindex="-1" href="{{ forgot_url }}">forgot password</a>)</small></label>
|
28
|
+
<input class="form-control" type="password" value="{{ password }}">
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<button class="btn btn-info btn-block">Login</button>
|
32
|
+
</form>
|
33
|
+
|
34
|
+
<hr />
|
35
|
+
Don't have an account? <a href="/signup">Signup here</a>
|
36
|
+
</div>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<:Subject>
|
2
|
+
Reset your Password
|
3
|
+
|
4
|
+
<:Html>
|
5
|
+
<html>
|
6
|
+
<body>
|
7
|
+
<table cellspacing="0" cellpadding="0" border="0" style="color: #333; background: #fff; padding: 0; margin: 0; width: 100%; font: 15px/1.25em 'Helvetica Neue', Arial, Helvetica;">
|
8
|
+
<tbody>
|
9
|
+
<tr width="100%">
|
10
|
+
<td valign="top" align="left" style="background: #f0f0f0; font: 15px/1.25em 'Helvetica Neue', Arial, Helvetica;">
|
11
|
+
<table style="border: none; padding: 0 18px; margin: 50px auto; width: 500px;">
|
12
|
+
<tbody>
|
13
|
+
<tr width="100%" height="57">
|
14
|
+
<td valign="top" align="left" style="border-top-left-radius: 4px; border-top-right-radius: 4px; background: #337ab7; padding: 12px 18px; text-align: center; font-weight: bold; font-size: 28px; color: #fff; vertical-align: middle;">
|
15
|
+
{{ Volt.config.app_name }}
|
16
|
+
</td>
|
17
|
+
</tr>
|
18
|
+
<tr width="100%">
|
19
|
+
<td valign="top" align="left" style="border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; background:#fff; padding: 18px;">
|
20
|
+
<h1 style="font-size: 20px; margin: 0; color: #333;"> Hello {{ name }}, </h1>
|
21
|
+
<p style="font: 15px/1.25em 'Helvetica Neue', Arial, Helvetica; color: #333;"> We heard you needed to reset your password. Click the button below and you'll be redirected to a page where you can reset your password.</p>
|
22
|
+
<p style="font: 15px/1.25em 'Helvetica Neue', Arial, Helvetica; margin-bottom: 0; text-align: center; color: #333;">
|
23
|
+
<a href="{{ reset_url }}" style="border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; background: #5cb85c; color: #fff; cursor: pointer; display: block; font-weight: 700; font-size: 16px; line-height: 1.25em; margin: 24px auto 24px; padding: 10px 18px; text-decoration: none; width: 180px; text-align: center;"> Reset Password </a>
|
24
|
+
</p>
|
25
|
+
</td>
|
26
|
+
</tr>
|
27
|
+
</tbody>
|
28
|
+
</table>
|
29
|
+
</td>
|
30
|
+
</tr>
|
31
|
+
</tbody>
|
32
|
+
</table>
|
33
|
+
</body>
|
34
|
+
</html>
|
35
|
+
|
36
|
+
<:Text>
|
37
|
+
Hey {{ name }},
|
38
|
+
|
39
|
+
We heard you needed to reset your password. Go to the following url to reset your password:
|
40
|
+
|
41
|
+
{{ reset_url }}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<:Body>
|
2
|
+
|
3
|
+
{{ if Volt.current_user }}
|
4
|
+
<li class="dropdown">
|
5
|
+
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
6
|
+
<span class="glyphicon glyphicon-user"></span>
|
7
|
+
{{ show_name }}
|
8
|
+
<span class="caret"></span>
|
9
|
+
</a>
|
10
|
+
<ul class="dropdown-menu" role="menu">
|
11
|
+
<li>
|
12
|
+
<a href="/account">Account</a>
|
13
|
+
</li>
|
14
|
+
<li class="divider"></li>
|
15
|
+
<li><a e-click="Volt.logout">Logout</a></li>
|
16
|
+
</ul>
|
17
|
+
</li>
|
18
|
+
{{ else }}
|
19
|
+
<li class="{{ if is_active? }}active{{ end }}">
|
20
|
+
<a href="/login">
|
21
|
+
<span class="glyphicon glyphicon-user"></span>
|
22
|
+
Login
|
23
|
+
</a>
|
24
|
+
</li>
|
25
|
+
{{ end }}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<:Title>
|
2
|
+
Signup
|
3
|
+
|
4
|
+
<:Body>
|
5
|
+
<div class="row">
|
6
|
+
<div class="col-md-6 col-md-offset-3">
|
7
|
+
<div class="span4 offset4 well">
|
8
|
+
<legend>Signup</legend>
|
9
|
+
|
10
|
+
<form e-submit="signup">
|
11
|
+
{{ if use_username? }}
|
12
|
+
<:fields:text value="{{ _username }}" />
|
13
|
+
{{ else }}
|
14
|
+
<:fields:text value="{{ _email }}" />
|
15
|
+
{{ end}}
|
16
|
+
<:fields:text type="password" value="{{ _password }}" />
|
17
|
+
<hr />
|
18
|
+
<:fields:text value="{{ _name }}" label="Full Name" />
|
19
|
+
|
20
|
+
<button class="btn btn-info btn-block">Signup</button>
|
21
|
+
<hr />
|
22
|
+
Already have an account? <a href="/login">Login here</a>
|
23
|
+
|
24
|
+
</form>
|
25
|
+
</div>
|
26
|
+
</div>
|
27
|
+
</div>
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
|
5
|
+
version = File.read(File.expand_path('../VERSION', __FILE__)).strip
|
6
|
+
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.name = "volt-user_templates"
|
10
|
+
spec.version = version
|
11
|
+
spec.authors = ["Ryan Stout"]
|
12
|
+
spec.email = ["ryan@agileproductions.com"]
|
13
|
+
spec.summary = %q{Volt user templates provide out of the box templates for users to signup, login, and logout. }
|
14
|
+
spec.homepage = ""
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0")
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency "volt-fields", "~> 0.1.0"
|
23
|
+
spec.add_dependency "volt-mailer", "~> 0.1.0"
|
24
|
+
spec.add_development_dependency "rake"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,107 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: volt-user_templates
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Stout
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: volt-fields
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.1.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.1.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: volt-mailer
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.1.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.1.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- ryan@agileproductions.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- Gemfile
|
64
|
+
- README.md
|
65
|
+
- Rakefile
|
66
|
+
- VERSION
|
67
|
+
- app/user_templates/config/dependencies.rb
|
68
|
+
- app/user_templates/config/routes.rb
|
69
|
+
- app/user_templates/controllers/account_controller.rb
|
70
|
+
- app/user_templates/controllers/login_controller.rb
|
71
|
+
- app/user_templates/controllers/menu_controller.rb
|
72
|
+
- app/user_templates/controllers/signup_controller.rb
|
73
|
+
- app/user_templates/tasks/user_template_tasks.rb
|
74
|
+
- app/user_templates/views/account/index.html
|
75
|
+
- app/user_templates/views/login/forgot.html
|
76
|
+
- app/user_templates/views/login/index.html
|
77
|
+
- app/user_templates/views/mailers/forgot.email
|
78
|
+
- app/user_templates/views/menu/index.html
|
79
|
+
- app/user_templates/views/signup/index.html
|
80
|
+
- lib/volt/user-templates.rb
|
81
|
+
- volt-user_templates.gemspec
|
82
|
+
homepage: ''
|
83
|
+
licenses:
|
84
|
+
- MIT
|
85
|
+
metadata: {}
|
86
|
+
post_install_message:
|
87
|
+
rdoc_options: []
|
88
|
+
require_paths:
|
89
|
+
- lib
|
90
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: '0'
|
100
|
+
requirements: []
|
101
|
+
rubyforge_project:
|
102
|
+
rubygems_version: 2.4.5
|
103
|
+
signing_key:
|
104
|
+
specification_version: 4
|
105
|
+
summary: Volt user templates provide out of the box templates for users to signup,
|
106
|
+
login, and logout.
|
107
|
+
test_files: []
|