citygate 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.
@@ -11,31 +11,3 @@
11
11
  *= require_self
12
12
  *= require_tree .
13
13
  */
14
-
15
- @import 'bootstrap';
16
-
17
- body {
18
- background-color: #cccccc;
19
- }
20
-
21
- header nav ul {
22
- list-style: none;
23
- margin: 0 0 2em;
24
- padding: 0;
25
- }
26
- header nav ul li {
27
- display: inline;
28
- }
29
- #flash_notice, #flash_alert {
30
- padding: 5px 8px;
31
- margin: 10px 0;
32
- }
33
- #flash_notice {
34
- background-color: #CFC;
35
- border: solid 1px #6C6;
36
- }
37
- #flash_alert {
38
- background-color: #FCC;
39
- border: solid 1px #C66;
40
- }
41
-
@@ -0,0 +1,22 @@
1
+ body
2
+ background-color: #FFF
3
+
4
+
5
+ h1
6
+ color: #000
7
+ font-size: 15em
8
+
9
+
10
+ #flash_notice, #flash_alert
11
+ padding: 5px 8px
12
+ margin: 10px 0
13
+
14
+
15
+ #flash_notice
16
+ background-color: #CFC
17
+ border: solid 1px #6C6
18
+
19
+
20
+ #flash_alert
21
+ background-color: #FCC
22
+ border: solid 1px #C66
@@ -1,4 +1,3 @@
1
1
  class Admin::ApplicationController < ActionController::Base
2
2
  protect_from_forgery
3
- before_filter :authenticate_user!
4
3
  end
@@ -1,6 +1,8 @@
1
1
  class Admin::UsersController < Admin::ApplicationController
2
+ before_filter :authenticate_user!
3
+
2
4
  def index
3
- @user = User.find(current_user)
5
+ @users = User.paginate(per_page: 15, page: params[:page])
4
6
  end
5
7
 
6
8
  def show
@@ -0,0 +1,4 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+
4
+ end
@@ -1,4 +1,4 @@
1
- class HomeController < Citygate::CitygateController
1
+ class HomeController < ApplicationController
2
2
  def index
3
3
  @users = User.all
4
4
  end
@@ -19,7 +19,10 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
19
19
  if @user.persisted?
20
20
  flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => kind
21
21
  session["devise.#{kind.downcase}_data"] = request.env["omniauth.auth"]
22
- sign_in_and_redirect @user, :event => :authentication
22
+ sign_in_and_redirect @user, :event => :authentication
23
+ else
24
+ session["devise.#{kind.downcase}_data"] = request.env["omniauth.auth"]
25
+ redirect_to new_user_registration_url
23
26
  end
24
27
  end
25
28
 
@@ -1,8 +1,7 @@
1
- class UsersController < Citygate::CitygateController
1
+ class UsersController < ApplicationController
2
2
  before_filter :authenticate_user!
3
3
 
4
4
  def show
5
5
  @user = User.find(params[:id])
6
-
7
6
  end
8
7
  end
@@ -2,4 +2,5 @@ class Authorization < ActiveRecord::Base
2
2
 
3
3
  belongs_to :user
4
4
 
5
+ attr_accessible :provider, :uid, :user_id, :token, :secret, :name, :link, :image_url
5
6
  end
@@ -0,0 +1,10 @@
1
+ <div id="users">
2
+ <% @users.each do |user| %>
3
+ <div class="user">
4
+ <span class="email"><%= user.email %></span>
5
+ <%= content_tag(:span, user.name) if user.name %>
6
+ </div>
7
+ <% end %>
8
+
9
+ <%= will_paginate @users %>
10
+ </div>
@@ -0,0 +1,2 @@
1
+ <p>User: <%= @user.name %></p>
2
+ <p>Email: <%= @user.email if @user.email %></p>
@@ -1,5 +1,8 @@
1
- <h3>Home</h3>
2
- <% @users.each do |user| %>
3
- <p>User: <%= link_to user.name, admin_user_path(user) %></p>
4
- <% end %>
5
- <p>fim.</p>
1
+ <header>
2
+ <h1>NORMAL PANEL</h1>
3
+ <nav>
4
+ <ul class="hmenu">
5
+ <%= render 'shared/navigation' %>
6
+ </ul>
7
+ </nav>
8
+ </header>
@@ -1,32 +0,0 @@
1
- !!!
2
- %html
3
- %head
4
- %title Citygate
5
- %meta{:charset => "utf-8"}
6
- %meta{"http-equiv" => "X-UA-Compatible", :content => "IE=edge,chrome=1"}
7
- %meta{:name => "viewport", :content => "width=device-width, initial-scale=1, maximum-scale=1"}
8
- = stylesheet_link_tag "citygate/application", :media => "all"
9
- = javascript_include_tag "citygate/application"
10
- = csrf_meta_tags
11
- %body{:class => params[:controller]}
12
- #container.container
13
- %header
14
- .navbar.navbar-fixed-top
15
- .navbar-inner
16
- .container
17
- %ul.nav
18
- %li.active
19
- <a href="/">Home</a>
20
- %li
21
- <a href="#">Link</a>
22
- %li
23
- <a href="#">Link</a>
24
- %h1 Admin PANEL
25
- %nav
26
- %ul.hmenu
27
- = render 'shared/navigation'
28
- - flash.each do |name, msg|
29
- = content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String)
30
- #main{:role => "main"}
31
- = yield
32
- %footer
@@ -0,0 +1,32 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %title Citygate
5
+ %meta{:charset => "utf-8"}
6
+ %meta{"http-equiv" => "X-UA-Compatible", :content => "IE=edge,chrome=1"}
7
+ %meta{:name => "viewport", :content => "width=device-width, initial-scale=1, maximum-scale=1"}
8
+ = stylesheet_link_tag "citygate/application", :media => "all"
9
+ = javascript_include_tag "citygate/application"
10
+ = csrf_meta_tags
11
+ %body{:class => params[:controller]}
12
+ #container.container
13
+ %header
14
+ .navbar.navbar-fixed-top
15
+ .navbar-inner
16
+ .container
17
+ %ul.nav
18
+ %li.active
19
+ <a href="/">Home</a>
20
+ %li
21
+ <a href="#">Link</a>
22
+ %li
23
+ <a href="#">Link</a>
24
+ %h1 Admin PANEL
25
+ %nav
26
+ %ul.hmenu
27
+ = render 'shared/navigation'
28
+ - flash.each do |name, msg|
29
+ = content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String)
30
+ #main{:role => "main"}
31
+ = yield
32
+ %footer
@@ -1,27 +1 @@
1
-
2
- <% content_for :content do %>
3
-
4
-
5
- <div id="container" class="container">
6
- <header>
7
- <h1>NORMAL PANEL</h1>
8
- <nav>
9
- <ul class="hmenu">
10
- <%= render 'shared/navigation' %>
11
- </ul>
12
- </nav>
13
- <% flash.each do |name, msg| %>
14
- <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
15
- <% end %>
16
- </header>
17
- <div id="main" role="main">
18
- <%= yield %>
19
- </div>
20
- <footer></footer>
21
- </div>
22
-
23
- <% end -%>
24
-
25
- <%= render :file => 'layouts/application' %>
26
-
27
-
1
+ <%= render :file => "layouts/citygate_layout", :layout => "layouts/application" %>
@@ -0,0 +1,11 @@
1
+ <% content_for :head do %>
2
+ <%= stylesheet_link_tag 'citygate/application' %>
3
+ <% end %>
4
+
5
+ <%= render 'shared/navigation' %>
6
+
7
+ <% flash.each do |name, msg| %>
8
+ <%= content_tag :div, msg, :id => "flash_#{name}" if msg.is_a?(String) %>
9
+ <% end %>
10
+
11
+ <%= yield %>
@@ -1,13 +1,15 @@
1
- <% if user_signed_in? %>
2
- <li><%= link_to('Logout', destroy_user_session_path, :method=>'delete') %></li>
3
- <li><%= link_to('Edit account', edit_user_registration_path) %></li>
4
- <% else %>
5
- <li><%= link_to('Login', new_user_session_path) %></li>
6
- <li><%= link_to('Sign up', new_user_registration_path) %></li>
7
- <% User.omniauth_providers.each do |provider| %>
8
- <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(User.new,provider) %>
9
- <% end -%>
10
- <% end %>
1
+ <ul id="citygate-navigation">
2
+ <% if user_signed_in? %>
3
+ <li><%= link_to('Edit account', edit_user_registration_path) %></li>
11
4
 
5
+ <li><%= link_to('Log out', destroy_user_session_path, :method=>'delete') %></li>
6
+ <% else %>
7
+ <li><%= link_to('Log in', new_user_session_path) %></li>
12
8
 
9
+ <li><%= link_to('Sign up', new_user_registration_path) %></li>
13
10
 
11
+ <% User.omniauth_providers.each do |provider| %>
12
+ <li><%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(User.new, provider) %></li>
13
+ <% end -%>
14
+ <% end %>
15
+ </ul>
@@ -0,0 +1,3 @@
1
+ <p>User: <%= @user.name %></p>
2
+
3
+ <p>Email: <%= @user.email if @user.email %></p>
@@ -9,8 +9,6 @@ Devise.setup do |config|
9
9
  # Configure the class responsible to send e-mails.
10
10
  # config.mailer = "Devise::Mailer"
11
11
 
12
- # Automatically apply schema changes in tableless databases
13
- config.apply_schema = false
14
12
 
15
13
  # ==> ORM configuration
16
14
  # Load and configure the ORM. Supports :active_record (default) and
@@ -111,10 +109,6 @@ Devise.setup do |config|
111
109
  # If true, extends the user's remember period when remembered via cookie.
112
110
  # config.extend_remember_period = false
113
111
 
114
- # If true, uses the password salt as remember token. This should be turned
115
- # to false if you are not using database authenticatable.
116
- config.use_salt_as_remember_token = true
117
-
118
112
  # Options to be passed to the created cookie. For instance, you can set
119
113
  # :secure => true in order to force SSL only cookies.
120
114
  # config.rememberable_options = {}
data/config/routes.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  Rails.application.routes.draw do
2
2
  root :to => "home#index"
3
+ match 'user_root' => 'home#index'
3
4
 
4
5
  devise_for :users, :controllers => { :omniauth_callbacks => "users/omniauth_callbacks" }
5
-
6
+ resources :users, :only => [:show]
7
+
6
8
  namespace "admin" do
7
9
  resources :users
8
10
  end
@@ -8,5 +8,13 @@ module AppControllerHelpers
8
8
  def stored_location_for(resource_or_scope)
9
9
  root_url
10
10
  end
11
+
12
+ def after_sign_in_path_for(resource)
13
+ # This should work, but session is lost. See https://github.com/plataformatec/devise/issues/1357
14
+ # return_to = session[:return_to]
15
+ # session[:return_to] = nil
16
+ return_to = request.env['omniauth.origin']
17
+ stored_location_for(resource) || return_to || root_path
18
+ end
11
19
  end
12
20
  end
@@ -1,21 +1,23 @@
1
- require "citygate"
2
1
  require "rails"
3
2
 
3
+ require "rubygems"
4
+ require "devise"
5
+ require "devise"
6
+ require "devise_invitable"
7
+ require "devise-encryptable"
8
+ require 'omniauth'
9
+ require 'omniauth-facebook'
10
+ require 'omniauth-openid'
11
+ require 'uuidtools'
12
+ require 'will_paginate'
13
+
14
+ require "citygate"
4
15
 
5
16
  module Citygate
6
17
  def self.root
7
18
  File.expand_path '../../..', __FILE__
8
19
  end
9
-
20
+
10
21
  class Engine < ::Rails::Engine
11
- require "#{File.join(Citygate.root,'lib/app_controller_helpers')}"
12
-
13
- #isolate_namespace Citygate
14
- initializer 'myengine.app_controller' do |app|
15
- ActiveSupport.on_load(:action_controller) do
16
- extend AppControllerHelpers::ClassMethods
17
- include AppControllerHelpers::InstanceMethods
18
- end
19
- end
20
22
  end
21
23
  end
@@ -1,3 +1,3 @@
1
1
  module Citygate
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/citygate.rb CHANGED
@@ -1,5 +1,10 @@
1
1
  require "citygate/engine"
2
2
 
3
3
  module Citygate
4
-
4
+ require "#{File.join(Citygate.root,'lib/app_controller_helpers')}"
5
+
6
+ ActiveSupport.on_load(:action_controller) do
7
+ extend AppControllerHelpers::ClassMethods
8
+ include AppControllerHelpers::InstanceMethods
9
+ end
5
10
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: citygate
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.2
5
+ version: 0.0.3
6
6
  platform: ruby
7
7
  authors:
8
8
  - Group Buddies
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-05-11 00:00:00 +01:00
13
+ date: 2012-05-18 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -25,36 +25,36 @@ dependencies:
25
25
  type: :runtime
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
28
- name: jquery-rails
28
+ name: haml
29
29
  prerelease: false
30
30
  requirement: &id002 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: "0"
35
+ version: 3.1.4
36
36
  type: :runtime
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
39
- name: haml
39
+ name: devise
40
40
  prerelease: false
41
41
  requirement: &id003 !ruby/object:Gem::Requirement
42
42
  none: false
43
43
  requirements:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
- version: 3.1.4
46
+ version: 2.0.4
47
47
  type: :runtime
48
48
  version_requirements: *id003
49
49
  - !ruby/object:Gem::Dependency
50
- name: devise
50
+ name: devise-encryptable
51
51
  prerelease: false
52
52
  requirement: &id004 !ruby/object:Gem::Requirement
53
53
  none: false
54
54
  requirements:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
- version: 2.0.4
57
+ version: 0.1.1
58
58
  type: :runtime
59
59
  version_requirements: *id004
60
60
  - !ruby/object:Gem::Dependency
@@ -69,80 +69,80 @@ dependencies:
69
69
  type: :runtime
70
70
  version_requirements: *id005
71
71
  - !ruby/object:Gem::Dependency
72
- name: bootstrap-sass
72
+ name: omniauth
73
73
  prerelease: false
74
74
  requirement: &id006 !ruby/object:Gem::Requirement
75
75
  none: false
76
76
  requirements:
77
77
  - - ~>
78
78
  - !ruby/object:Gem::Version
79
- version: 2.0.1
79
+ version: 1.0.2
80
80
  type: :runtime
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
83
- name: omniauth
83
+ name: omniauth-facebook
84
84
  prerelease: false
85
85
  requirement: &id007 !ruby/object:Gem::Requirement
86
86
  none: false
87
87
  requirements:
88
88
  - - ~>
89
89
  - !ruby/object:Gem::Version
90
- version: 1.0.2
90
+ version: 1.2.0
91
91
  type: :runtime
92
92
  version_requirements: *id007
93
93
  - !ruby/object:Gem::Dependency
94
- name: omniauth-facebook
94
+ name: omniauth-openid
95
95
  prerelease: false
96
96
  requirement: &id008 !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 1.2.0
101
+ version: 1.0.1
102
102
  type: :runtime
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
105
- name: omniauth-openid
105
+ name: uuidtools
106
106
  prerelease: false
107
107
  requirement: &id009 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
- - - ~>
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
- version: 1.0.1
112
+ version: 2.1.2
113
113
  type: :runtime
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
116
- name: thin
116
+ name: will_paginate
117
117
  prerelease: false
118
118
  requirement: &id010 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: 1.3.1
124
- type: :development
123
+ version: 3.0.3
124
+ type: :runtime
125
125
  version_requirements: *id010
126
126
  - !ruby/object:Gem::Dependency
127
- name: haml-rails
127
+ name: thin
128
128
  prerelease: false
129
129
  requirement: &id011 !ruby/object:Gem::Requirement
130
130
  none: false
131
131
  requirements:
132
132
  - - ">="
133
133
  - !ruby/object:Gem::Version
134
- version: 0.3.4
134
+ version: 1.3.1
135
135
  type: :development
136
136
  version_requirements: *id011
137
137
  - !ruby/object:Gem::Dependency
138
- name: rspec-rails
138
+ name: haml-rails
139
139
  prerelease: false
140
140
  requirement: &id012 !ruby/object:Gem::Requirement
141
141
  none: false
142
142
  requirements:
143
143
  - - ">="
144
144
  - !ruby/object:Gem::Version
145
- version: 2.8.1
145
+ version: 0.3.4
146
146
  type: :development
147
147
  version_requirements: *id012
148
148
  - !ruby/object:Gem::Dependency
@@ -233,6 +233,83 @@ dependencies:
233
233
  version: 0.6.1
234
234
  type: :development
235
235
  version_requirements: *id020
236
+ - !ruby/object:Gem::Dependency
237
+ name: rspec-rails
238
+ prerelease: false
239
+ requirement: &id021 !ruby/object:Gem::Requirement
240
+ none: false
241
+ requirements:
242
+ - - ">="
243
+ - !ruby/object:Gem::Version
244
+ version: 2.8.1
245
+ type: :development
246
+ version_requirements: *id021
247
+ - !ruby/object:Gem::Dependency
248
+ name: email_spec
249
+ prerelease: false
250
+ requirement: &id022 !ruby/object:Gem::Requirement
251
+ none: false
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: 1.2.1
256
+ type: :development
257
+ version_requirements: *id022
258
+ - !ruby/object:Gem::Dependency
259
+ name: factory_girl
260
+ prerelease: false
261
+ requirement: &id023 !ruby/object:Gem::Requirement
262
+ none: false
263
+ requirements:
264
+ - - "="
265
+ - !ruby/object:Gem::Version
266
+ version: 2.6.4
267
+ type: :development
268
+ version_requirements: *id023
269
+ - !ruby/object:Gem::Dependency
270
+ name: cucumber-rails
271
+ prerelease: false
272
+ requirement: &id024 !ruby/object:Gem::Requirement
273
+ none: false
274
+ requirements:
275
+ - - ">="
276
+ - !ruby/object:Gem::Version
277
+ version: 1.3.0
278
+ type: :development
279
+ version_requirements: *id024
280
+ - !ruby/object:Gem::Dependency
281
+ name: capybara
282
+ prerelease: false
283
+ requirement: &id025 !ruby/object:Gem::Requirement
284
+ none: false
285
+ requirements:
286
+ - - ">="
287
+ - !ruby/object:Gem::Version
288
+ version: 1.1.2
289
+ type: :development
290
+ version_requirements: *id025
291
+ - !ruby/object:Gem::Dependency
292
+ name: database_cleaner
293
+ prerelease: false
294
+ requirement: &id026 !ruby/object:Gem::Requirement
295
+ none: false
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: 0.7.1
300
+ type: :development
301
+ version_requirements: *id026
302
+ - !ruby/object:Gem::Dependency
303
+ name: launchy
304
+ prerelease: false
305
+ requirement: &id027 !ruby/object:Gem::Requirement
306
+ none: false
307
+ requirements:
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: 2.0.5
311
+ type: :development
312
+ version_requirements: *id027
236
313
  description: Citygate is an Engine that provides user model with sign up and log in, admin backend for managing users.
237
314
  email:
238
315
  - zamith@groupbuddies.com
@@ -245,24 +322,27 @@ extra_rdoc_files: []
245
322
  files:
246
323
  - app/assets/javascripts/citygate/application.js
247
324
  - app/assets/stylesheets/citygate/application.css.scss
325
+ - app/assets/stylesheets/citygate/main.sass
248
326
  - app/controllers/admin/application_controller.rb
249
327
  - app/controllers/admin/users_controller.rb
250
- - app/controllers/citygate/citygate_controller.rb
328
+ - app/controllers/application_controller.rb
251
329
  - app/controllers/home_controller.rb
252
330
  - app/controllers/users/omniauth_callbacks_controller.rb
253
331
  - app/controllers/users_controller.rb
254
332
  - app/helpers/citygate/application_helper.rb
255
333
  - app/models/authorization.rb
256
334
  - app/models/user.rb
257
- - app/views/admin/users/index.html.haml
335
+ - app/views/admin/users/index.html.erb
336
+ - app/views/admin/users/show.html.erb
258
337
  - app/views/devise/_links.erb
259
338
  - app/views/devise/registrations/edit.html.haml
260
- - app/views/devise/registrations/new.html.haml
261
339
  - app/views/home/index.html.erb
262
340
  - app/views/layouts/admin/application.html.haml
341
+ - app/views/layouts/admin/citygate_admin_layout.html.erb
263
342
  - app/views/layouts/citygate.html.erb
343
+ - app/views/layouts/citygate_layout.html.erb
264
344
  - app/views/shared/_navigation.html.erb
265
- - app/views/users/show.html.haml
345
+ - app/views/users/show.html.erb
266
346
  - config/cucumber.yml
267
347
  - config/initializers/devise-lol.rb
268
348
  - config/initializers/devise.rb
@@ -1,10 +0,0 @@
1
- module Citygate
2
- class CitygateController < ApplicationController
3
-
4
- unloadable
5
-
6
- layout 'citygate'
7
-
8
- # Any methods to be inserted in the app's Application controller should be inserted into lib/app_controller_helpers.rb
9
- end
10
- end
@@ -1,4 +0,0 @@
1
- %p
2
- User: #{@user.name}
3
- %p
4
- Email: #{@user.email if @user.email}
@@ -1,21 +0,0 @@
1
- %h2 Sign up
2
- = form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f|
3
- = devise_error_messages!
4
- %p
5
- = f.label :name
6
- %br/
7
- = f.text_field :name
8
- %p
9
- = f.label :email
10
- %br/
11
- = f.email_field :email
12
- %p
13
- = f.label :password
14
- %br/
15
- = f.password_field :password
16
- %p
17
- = f.label :password_confirmation
18
- %br/
19
- = f.password_field :password_confirmation
20
- %p= f.submit "Sign up"
21
- = render "links"
@@ -1,4 +0,0 @@
1
- %p
2
- User: #{@user.name}
3
- %p
4
- Email: #{@user.email if @user.email}