seivan-generators 0.3 → 0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,6 +22,8 @@ Feature: Seivan Authentication Generator
22
22
  | match 'signup' => 'users#new', :as => :signup |
23
23
  | match 'user/edit' => 'users#edit', :as => :edit_user |
24
24
  And I should see "include ControllerAuthentication" in file "app/controllers/application_controller.rb"
25
+ And I should see "conditions = ['username = ? or email = ?', login, login]" in file "app/models/user.rb"
26
+ And I should see "user = User.where(conditions).first" in file "app/models/user.rb"
25
27
  And I should see "gem "mocha", :group => :test" in file "Gemfile"
26
28
  And I should see "gem "bcrypt-ruby", :require => "bcrypt"" in file "Gemfile"
27
29
 
@@ -14,4 +14,5 @@ Feature: Seivan Config Generator
14
14
  When I run "rails g seivan:config FooBar"
15
15
  Then I should see "FOO_BAR_CONFIG" in file "config/initializers/load_foo_bar_config.rb"
16
16
  And I should see "config/foo_bar_config.yml" in file "config/initializers/load_foo_bar_config.rb"
17
+ And I should see "default: &default" in file "config/foo_bar_config.yml"
17
18
  And I should see file "config/foo_bar_config.yml"
@@ -8,18 +8,35 @@ class <%= user_class_name %> < ActiveRecord::Base
8
8
  attr_accessor :password
9
9
  before_save :prepare_password
10
10
 
11
- validates_presence_of :username
12
- validates_uniqueness_of :username, :email, :allow_blank => true
13
- validates_format_of :username, :with => /^[-\w\._@]+$/i, :allow_blank => true, :message => "should only contain letters, numbers, or .-_@"
14
- validates_format_of :email, :with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i
15
- validates_presence_of :password, :on => :create
16
- validates_confirmation_of :password
17
- validates_length_of :password, :minimum => 4, :allow_blank => true
11
+ validates :email,
12
+ :format => {:with => /^[-a-z0-9_+\.]+\@([-a-z0-9]+\.)+[a-z0-9]{2,4}$/i,
13
+ :allow_blank => true,
14
+ :allow_nil => true },
15
+ :presence => { :if => lambda {self.username.nil?} },
16
+ :uniqueness => true
17
+
18
+ validates :username,
19
+ :format => {:with => /[A-Za-z0-9]+/, :allow_blank => true, :allow_nil => true},
20
+ :presence => { :if => lambda {self.email.nil?} },
21
+ :length => {:minimum => 3, :allow_blank => true},
22
+ :uniqueness => true
23
+
24
+ validates :role,
25
+ :inclusion => { :in => %w(admin moderator writer user guest) }
26
+
27
+ validates :password,
28
+ :length => {:minimum => 3},
29
+ :presence => true
30
+
31
+
32
+
18
33
 
19
34
  # login can be either username or email address
20
- def self.authenticate(login, pass)
21
- <%= user_singular_name %> = find_by_username(login) || find_by_email(login)
22
- return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.matching_password?(pass)
35
+ def self.authenticate(params)
36
+ login = params[:login]
37
+ conditions = ['username = ? or email = ?', login, login]
38
+ <%= user_singular_name %> = <%= user_class_name %>.where(conditions).first
39
+ return <%= user_singular_name %> if <%= user_singular_name %> && <%= user_singular_name %>.matching_password?(params[:password])
23
40
  end
24
41
 
25
42
  def matching_password?(pass)
@@ -1,3 +1,5 @@
1
+ default: &default
2
+
1
3
  development:
2
4
  domain: localhost:3000
3
5
 
@@ -1,9 +1,6 @@
1
1
  %head
2
2
  %meta{ :charset => "utf-8" }/
3
3
 
4
- -#
5
- Always force latest IE rendering engine (even in intranet) & Chrome Frame
6
- Remove this if you use the .htaccess
7
4
  %meta{ :content => "IE=edge,chrome=1", "http-equiv" => "X-UA-Compatible" }/
8
5
 
9
6
  %title
@@ -20,8 +17,6 @@
20
17
  -# %link{ :href => "/apple-touch-icon.png", :rel => "apple-touch-icon" }/
21
18
 
22
19
  = render :partial => 'layouts/stylesheets'
23
-
24
- -# All JavaScript at the bottom, except for Modernizr which enables HTML5 elements & feature detects
25
- = javascript_include_tag 'modernizr-1.5.min'
20
+
26
21
 
27
22
  = csrf_meta_tag
@@ -6,7 +6,7 @@
6
6
  -# asynchronous google analytics: mathiasbynens.be/notes/async-analytics-snippet
7
7
  -# Generate a rails g seivan:config google and write the credentials in config/google.yml
8
8
  :javascript
9
- var _gaq = [['_setAccount', '#{GOOGLE[:account_id]}'], ['_trackPageview']];
9
+ var _gaq = [['_setAccount', '#{APP_CONFIG[:account_id]}'], ['_trackPageview']];
10
10
  (function(d, t) {
11
11
  var g = d.createElement(t),
12
12
  s = d.getElementsByTagName(t)[0];
metadata CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
8
- version: "0.3"
7
+ - 4
8
+ version: "0.4"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Seivan Heidari
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2010-10-28 00:00:00 +02:00
16
+ date: 2010-10-31 00:00:00 +02:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency