padrino-admin 0.9.26 → 0.9.27
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/padrino-admin/generators/admin_app.rb +0 -1
- data/lib/padrino-admin/generators/templates/account/couchrest.rb.tt +14 -23
- data/lib/padrino-admin/generators/templates/account/datamapper.rb.tt +2 -3
- data/lib/padrino-admin/generators/templates/app.rb.tt +6 -5
- data/lib/padrino-admin/generators/templates/slim/app/layouts/application.slim.tt +1 -1
- data/test/generators/test_account_model_generator.rb +38 -0
- data/test/generators/test_admin_app_generator.rb +10 -3
- data/test/generators/test_admin_page_generator.rb +1 -6
- data/test/test_admin_application.rb +1 -1
- metadata +12 -10
@@ -1,5 +1,4 @@
|
|
1
|
-
class Account < CouchRest::
|
2
|
-
include CouchRest::Validation
|
1
|
+
class Account < CouchRest::Model::Base
|
3
2
|
use_database COUCHDB
|
4
3
|
|
5
4
|
attr_accessor :password, :password_confirmation
|
@@ -22,9 +21,9 @@ class Account < CouchRest::ExtendedDocument
|
|
22
21
|
validates_length_of :password, :within => 4..40, :if => :password_required
|
23
22
|
validates_confirmation_of :password, :if => :password_required
|
24
23
|
validates_length_of :email, :within => 3..100
|
25
|
-
validates_with_method :email, :method => :email_is_unique
|
26
24
|
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
|
27
25
|
validates_format_of :role, :with => /[A-Za-z]/
|
26
|
+
validate :unique_email_validator
|
28
27
|
|
29
28
|
# Callbacks
|
30
29
|
before_save :encrypt_password, :if => :password_required
|
@@ -33,17 +32,8 @@ class Account < CouchRest::ExtendedDocument
|
|
33
32
|
# This method is for authentication purpose
|
34
33
|
#
|
35
34
|
def self.authenticate(email, password)
|
36
|
-
|
37
|
-
account
|
38
|
-
account && account.has_password?(password) ? account : nil
|
39
|
-
end
|
40
|
-
|
41
|
-
##
|
42
|
-
# This method is used to retrieve the first record by id without raise errors if not found.
|
43
|
-
#
|
44
|
-
def self.find_by_id(id)
|
45
|
-
id_array = self.by_id :key => id
|
46
|
-
id_array[0]
|
35
|
+
account = find_by_email(email)
|
36
|
+
account if account && account.has_password?(password)
|
47
37
|
end
|
48
38
|
|
49
39
|
def has_password?(password)
|
@@ -59,14 +49,15 @@ class Account < CouchRest::ExtendedDocument
|
|
59
49
|
crypted_password.blank? || password.present?
|
60
50
|
end
|
61
51
|
|
62
|
-
def
|
63
|
-
account = Account.
|
64
|
-
|
65
|
-
|
66
|
-
if
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
52
|
+
def unique_email_validator
|
53
|
+
account = Account.find_by_email(email)
|
54
|
+
|
55
|
+
# didn't find email in the database
|
56
|
+
return if account.nil?
|
57
|
+
|
58
|
+
# account with same email in database is this account
|
59
|
+
return if has_key?('_id') && self['_id'] == account['_id']
|
60
|
+
|
61
|
+
errors.add(:email, "is not unique")
|
71
62
|
end
|
72
63
|
end
|
@@ -7,9 +7,8 @@ class Account
|
|
7
7
|
property :id, Serial
|
8
8
|
property :name, String
|
9
9
|
property :surname, String
|
10
|
-
property :email, String
|
11
|
-
|
12
|
-
property :crypted_password, String, :length => 60
|
10
|
+
property :email, String
|
11
|
+
property :crypted_password, String
|
13
12
|
property :role, String
|
14
13
|
|
15
14
|
# Validations
|
@@ -6,17 +6,18 @@ class Admin < Padrino::Application
|
|
6
6
|
##
|
7
7
|
# Application configuration options
|
8
8
|
#
|
9
|
-
# set :raise_errors, true # Raise exceptions (will stop application) (default
|
10
|
-
# set :
|
9
|
+
# set :raise_errors, true # Raise exceptions (will stop application) (default for test)
|
10
|
+
# set :dump_errors, true # Exception backtraces are written to STDERR (default for production/development)
|
11
|
+
# set :show_exceptions, true # Shows a stack trace in browser (default for development)
|
12
|
+
# set :logging, true # Logging in STDOUT for development and file for production (default only for development)
|
11
13
|
# set :public, "foo/bar" # Location for static assets (default root/public)
|
12
14
|
# set :reload, false # Reload application files (default in development)
|
13
15
|
# set :default_builder, "foo" # Set a custom form builder (default 'StandardFormBuilder')
|
14
16
|
# set :locale_path, "bar" # Set path for I18n translations (default your_app/locales)
|
15
|
-
# disable :sessions #
|
16
|
-
# disable :flash # Disables rack-flash (enabled by default if
|
17
|
+
# disable :sessions # Disabled sessions by default (enable if needed)
|
18
|
+
# disable :flash # Disables rack-flash (enabled by default if Rack::Flash is defined)
|
17
19
|
# layout :my_layout # Layout can be in views/layouts/foo.ext or views/foo.ext (default :application)
|
18
20
|
#
|
19
|
-
set :session_secret, "<%= @session_secret %>"
|
20
21
|
set :login_page, "/admin/sessions/new"
|
21
22
|
disable :store_location
|
22
23
|
|
@@ -12,7 +12,7 @@ html lang="en" xmlns="http://www.w3.org/1999/xhtml"
|
|
12
12
|
#user-navigation
|
13
13
|
ul.wat-cf
|
14
14
|
li==link_to pat(:profile), url(:accounts, :edit, :id => current_account.id)
|
15
|
-
li==
|
15
|
+
li==button_to pat(:logout), url(:sessions, :destroy), :method => :delete, :class => :button_to
|
16
16
|
#main-navigation
|
17
17
|
ul.wat-cf
|
18
18
|
-project_modules.each do |project_module|
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../helper')
|
2
|
+
|
3
|
+
class TestAccountModelGenerator < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@apptmp = "#{Dir.tmpdir}/padrino-tests/#{UUID.new.generate}"
|
6
|
+
`mkdir -p #{@apptmp}`
|
7
|
+
end
|
8
|
+
|
9
|
+
def teardown
|
10
|
+
`rm -rf #{@apptmp}`
|
11
|
+
end
|
12
|
+
|
13
|
+
# COUCHREST
|
14
|
+
context 'account model using couchrest' do
|
15
|
+
setup do
|
16
|
+
silence_logger { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=couchrest') }
|
17
|
+
silence_logger { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
18
|
+
|
19
|
+
@model = "#{@apptmp}/sample_project/app/models/account.rb"
|
20
|
+
end
|
21
|
+
|
22
|
+
should 'be a couchrest model instance' do
|
23
|
+
assert_match_in_file(/class Account < CouchRest::Model::Base/m, @model)
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'not require additional validations' do
|
27
|
+
assert_no_match_in_file(/include CouchRest::Validation/m, @model)
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'no longer have validates_with_method' do
|
31
|
+
assert_no_match_in_file(/validates_with_method/m, @model)
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'validate report errors using ActiveModel errors method' do
|
35
|
+
assert_match_in_file(/errors\.add\(:email, "is not unique"\)/m, @model)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -58,7 +58,7 @@ class TestAdminAppGenerator < Test::Unit::TestCase
|
|
58
58
|
assert_match_in_file 'Padrino.mount("Admin").to("/admin")', "#{@apptmp}/sample_project/config/apps.rb"
|
59
59
|
assert_match_in_file 'class Admin < Padrino::Application', "#{@apptmp}/sample_project/admin/app.rb"
|
60
60
|
assert_match_in_file 'role.project_module :accounts, "/accounts"', "#{@apptmp}/sample_project/admin/app.rb"
|
61
|
-
assert_match_in_file '
|
61
|
+
assert_match_in_file 'button_to pat(:logout)', "#{@apptmp}/sample_project/admin/views/layouts/application.haml"
|
62
62
|
end
|
63
63
|
|
64
64
|
should 'correctly generate a new padrino admin application with erb renderer' do
|
@@ -90,7 +90,7 @@ class TestAdminAppGenerator < Test::Unit::TestCase
|
|
90
90
|
assert_match_in_file 'Padrino.mount("Admin").to("/admin")', "#{@apptmp}/sample_project/config/apps.rb"
|
91
91
|
assert_match_in_file 'class Admin < Padrino::Application', "#{@apptmp}/sample_project/admin/app.rb"
|
92
92
|
assert_match_in_file 'role.project_module :accounts, "/accounts"', "#{@apptmp}/sample_project/admin/app.rb"
|
93
|
-
assert_match_in_file '
|
93
|
+
assert_match_in_file 'button_to pat(:logout)', "#{@apptmp}/sample_project/admin/views/layouts/application.erb"
|
94
94
|
end
|
95
95
|
|
96
96
|
should 'correctly generate a new padrino admin application with slim renderer' do
|
@@ -122,7 +122,7 @@ class TestAdminAppGenerator < Test::Unit::TestCase
|
|
122
122
|
assert_match_in_file 'Padrino.mount("Admin").to("/admin")', "#{@apptmp}/sample_project/config/apps.rb"
|
123
123
|
assert_match_in_file 'class Admin < Padrino::Application', "#{@apptmp}/sample_project/admin/app.rb"
|
124
124
|
assert_match_in_file 'role.project_module :accounts, "/accounts"', "#{@apptmp}/sample_project/admin/app.rb"
|
125
|
-
assert_match_in_file '
|
125
|
+
assert_match_in_file 'button_to pat(:logout)', "#{@apptmp}/sample_project/admin/views/layouts/application.slim"
|
126
126
|
end
|
127
127
|
|
128
128
|
should 'not conflict with existing seeds file' do
|
@@ -143,5 +143,12 @@ class TestAdminAppGenerator < Test::Unit::TestCase
|
|
143
143
|
assert_match_in_file '# Old Seeds Content', "#{@apptmp}/sample_project/db/seeds.rb"
|
144
144
|
assert_match_in_file 'Account.create(', "#{@apptmp}/sample_project/db/seeds.rb"
|
145
145
|
end
|
146
|
+
|
147
|
+
should "navigate completely inside an app with activerecord" do
|
148
|
+
silence_logger { generate(:project, 'sample_project', "--root=#{@apptmp}", "-d=activerecord", "-e=haml", "--dev") }
|
149
|
+
silence_logger { generate(:admin_app, "--root=#{@apptmp}/sample_project") }
|
150
|
+
# bundle(:install, :gemfile => "#{@apptmp}/sample_project/Gemfile", :path => "#{@apptmp}/bundle")
|
151
|
+
# cli(:rake, '-T', "-c=#{@apptmp}/sample_project")
|
152
|
+
end
|
146
153
|
end
|
147
154
|
end
|
@@ -58,12 +58,7 @@ class TestAdminPageGenerator < Test::Unit::TestCase
|
|
58
58
|
|
59
59
|
should "store and apply session_secret" do
|
60
60
|
silence_logger { generate(:project, 'sample_project', "--root=#{@apptmp}", '-d=datamapper','-e=haml') }
|
61
|
-
|
62
|
-
assert_match_in_file(/session_secret:.+/, "#{@apptmp}/sample_project/.components")
|
63
|
-
session_secret = YAML.load_file("#{@apptmp}/sample_project/.components")[:session_secret]
|
64
|
-
assert_not_equal "", session_secret
|
65
|
-
assert_match_in_file(/#{session_secret}/, "#{@apptmp}/sample_project/app/app.rb")
|
66
|
-
assert_match_in_file(/#{session_secret}/, "#{@apptmp}/sample_project/admin/app.rb")
|
61
|
+
assert_match_in_file(/set :session_secret, '[0-9A-z]*'/, "#{@apptmp}/sample_project/config/apps.rb")
|
67
62
|
end
|
68
63
|
|
69
64
|
should 'correctly generate a new padrino admin application with erb renderer' do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 27
|
10
|
+
version: 0.9.27
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Padrino Team
|
@@ -18,7 +18,7 @@ autorequire:
|
|
18
18
|
bindir: bin
|
19
19
|
cert_chain: []
|
20
20
|
|
21
|
-
date: 2011-
|
21
|
+
date: 2011-05-06 00:00:00 Z
|
22
22
|
dependencies:
|
23
23
|
- !ruby/object:Gem::Dependency
|
24
24
|
name: padrino-core
|
@@ -28,12 +28,12 @@ dependencies:
|
|
28
28
|
requirements:
|
29
29
|
- - "="
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
hash:
|
31
|
+
hash: 13
|
32
32
|
segments:
|
33
33
|
- 0
|
34
34
|
- 9
|
35
|
-
-
|
36
|
-
version: 0.9.
|
35
|
+
- 27
|
36
|
+
version: 0.9.27
|
37
37
|
type: :runtime
|
38
38
|
version_requirements: *id001
|
39
39
|
- !ruby/object:Gem::Dependency
|
@@ -44,12 +44,12 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
hash:
|
47
|
+
hash: 13
|
48
48
|
segments:
|
49
49
|
- 0
|
50
50
|
- 9
|
51
|
-
-
|
52
|
-
version: 0.9.
|
51
|
+
- 27
|
52
|
+
version: 0.9.27
|
53
53
|
type: :runtime
|
54
54
|
version_requirements: *id002
|
55
55
|
description: Admin View for Padrino applications
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- lib/padrino-admin/utils/crypt.rb
|
160
160
|
- padrino-admin.gemspec
|
161
161
|
- test/fixtures/data_mapper.rb
|
162
|
+
- test/generators/test_account_model_generator.rb
|
162
163
|
- test/generators/test_admin_app_generator.rb
|
163
164
|
- test/generators/test_admin_page_generator.rb
|
164
165
|
- test/helper.rb
|
@@ -200,6 +201,7 @@ specification_version: 3
|
|
200
201
|
summary: Admin Dashboard for Padrino
|
201
202
|
test_files:
|
202
203
|
- test/fixtures/data_mapper.rb
|
204
|
+
- test/generators/test_account_model_generator.rb
|
203
205
|
- test/generators/test_admin_app_generator.rb
|
204
206
|
- test/generators/test_admin_page_generator.rb
|
205
207
|
- test/helper.rb
|