blogaze 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/README.md +1 -2
  2. data/bin/blogaze +0 -0
  3. data/blogaze.gemspec +1 -0
  4. data/lib/blogaze/bin/create.rb +1 -1
  5. data/lib/blogaze/bin/default.rb +8 -3
  6. data/lib/blogaze/controllers/admin/init.rb +2 -2
  7. data/lib/blogaze/controllers/admin/pages.rb +1 -0
  8. data/lib/blogaze/controllers/admin/users.rb +69 -0
  9. data/lib/blogaze/controllers/init.rb +33 -27
  10. data/lib/blogaze/controllers/sessions.rb +2 -2
  11. data/lib/blogaze/models/user.rb +9 -1
  12. data/lib/blogaze/tasks/db.rake +1 -1
  13. data/{proto → lib/blogaze}/themes/default/admin/comments/index.xhtml +0 -0
  14. data/{proto → lib/blogaze}/themes/default/admin/index.xhtml +1 -0
  15. data/{proto → lib/blogaze}/themes/default/admin/pages/edit.xhtml +0 -0
  16. data/{proto → lib/blogaze}/themes/default/admin/pages/index.xhtml +0 -0
  17. data/{proto → lib/blogaze}/themes/default/admin/pages/new.xhtml +0 -0
  18. data/{proto → lib/blogaze}/themes/default/admin/posts/edit.xhtml +0 -0
  19. data/{proto → lib/blogaze}/themes/default/admin/posts/index.xhtml +0 -0
  20. data/{proto → lib/blogaze}/themes/default/admin/posts/new.xhtml +0 -0
  21. data/{proto → lib/blogaze}/themes/default/admin/settings/index.xhtml +0 -0
  22. data/lib/blogaze/themes/default/admin/users/edit.xhtml +22 -0
  23. data/lib/blogaze/themes/default/admin/users/index.xhtml +19 -0
  24. data/{proto → lib/blogaze}/themes/default/index.xhtml +0 -0
  25. data/{proto → lib/blogaze}/themes/default/layouts/admin.xhtml +0 -0
  26. data/{proto → lib/blogaze}/themes/default/layouts/default.xhtml +1 -1
  27. data/{proto → lib/blogaze}/themes/default/pages/notfound.xhtml +0 -0
  28. data/{proto → lib/blogaze}/themes/default/pages/page.xhtml +0 -0
  29. data/{proto → lib/blogaze}/themes/default/posts/view.xhtml +0 -0
  30. data/{proto → lib/blogaze}/themes/default/sessions/new.xhtml +0 -0
  31. data/{proto → lib/blogaze}/themes/default/users/new.xhtml +0 -0
  32. data/{proto → lib/blogaze}/themes/default.rb +0 -0
  33. data/lib/blogaze/version.rb +1 -1
  34. data/lib/blogaze.rb +2 -0
  35. data/proto/app.rb +0 -1
  36. metadata +39 -20
data/README.md CHANGED
@@ -28,5 +28,4 @@ Todo
28
28
 
29
29
  Things that still need to be done.
30
30
 
31
- 1. User manager
32
- 2. Profile manager
31
+ 1. Profile manager
data/bin/blogaze CHANGED
File without changes
data/blogaze.gemspec CHANGED
@@ -22,4 +22,5 @@ Gem::Specification.new do |gem|
22
22
  gem.add_dependency 'maruku', ['~> 0.6.1']
23
23
  gem.add_dependency 'time-lord', ['~> 0.2.5']
24
24
  gem.add_dependency 'shebang', ['~> 0.1']
25
+ gem.add_dependency 'bcrypt-ruby', ['~> 3.0.1']
25
26
  end
@@ -52,7 +52,7 @@ module Blogaze
52
52
  puts
53
53
  puts "The default admin account is:"
54
54
  puts " Username: admin"
55
- puts " Password: myadmin"
55
+ puts " Password: admin"
56
56
  puts
57
57
  end
58
58
  end
@@ -21,9 +21,6 @@ module Blogaze
21
21
  #
22
22
  def initialize
23
23
  super
24
- puts "Commands"
25
- puts " blogaze create [NAME] - Create a Blogaze installation in [NAME] directory."
26
- puts
27
24
  end
28
25
 
29
26
  ##
@@ -33,6 +30,14 @@ module Blogaze
33
30
  help
34
31
  end
35
32
 
33
+ def help
34
+ puts @option_parser
35
+ puts
36
+ puts "Commands"
37
+ puts " create [NAME] Create a Blogaze installation in [NAME] directory."
38
+ puts
39
+ end
40
+
36
41
  protected
37
42
 
38
43
  ##
@@ -9,14 +9,14 @@
9
9
  module Blogaze
10
10
  module Controllers
11
11
  module Admin
12
- class Controller < ::Blogaze::Controller
12
+ class Controller < ::Blogaze::Controllers::Controller
13
13
  layout 'admin'
14
14
  helper :blue_form
15
15
 
16
16
  def initialize
17
17
  super
18
18
 
19
- if !@userinfo.respond_to?('group') or !@userinfo.group.is_admin
19
+ if !@userinfo.respond_to?('group') or @userinfo.group.is_admin != 1
20
20
  redirect '/login'
21
21
  end
22
22
  end
@@ -16,6 +16,7 @@ module Blogaze
16
16
  # Page listing
17
17
  #
18
18
  def index
19
+ @title = "Pages - Admin - #{@settings[:title]}"
19
20
  @pages = ::Blogaze::Models::Page.order(:title.asc).all
20
21
  respond(view_file('admin/pages/index'))
21
22
  end
@@ -0,0 +1,69 @@
1
+ #
2
+ # Blogaze
3
+ # Copyright (C) 2011-2013 Jack Polgar
4
+ #
5
+ # Blogaze is released under the BSD 3-clause license.
6
+ # @license http://opensource.org/licenses/BSD-3-Clause
7
+ #
8
+
9
+ module Blogaze
10
+ module Controllers
11
+ module Admin
12
+ class Users < Controller
13
+ map '/admin/users'
14
+
15
+ before :edit, :save do
16
+ @title = "Edit User - Users - Admin - #{@settings[:title]}"
17
+ @groups = {}
18
+ ::Blogaze::Models::Group.all.each do |group|
19
+ @groups[group.id] = group.name
20
+ end
21
+ end
22
+
23
+ ##
24
+ # Lists users
25
+ #
26
+ def index
27
+ @title = "Users - Admin - #{@settings[:title]}"
28
+ @users = ::Blogaze::Models::User.all
29
+ respond(view_file('admin/users/index'))
30
+ end
31
+
32
+ ##
33
+ # Edit user form
34
+ #
35
+ def edit(id)
36
+ @user = ::Blogaze::Models::User[id]
37
+ respond(view_file('admin/users/edit'))
38
+ end
39
+
40
+ ##
41
+ # Save user
42
+ #
43
+ def save(id)
44
+ @user = ::Blogaze::Models::User[id]
45
+ @user.username = request[:username]
46
+ @user.email = request[:email]
47
+ @user.group_id = request[:group_id]
48
+
49
+ if @user.valid?
50
+ @user.save
51
+ flash[:success] = "User saved successfully"
52
+ redirect Users.r('/')
53
+ end
54
+
55
+ respond(view_file('admin/users/edit'))
56
+ end
57
+
58
+ ##
59
+ # Delete user
60
+ #
61
+ def delete(id)
62
+ ::Blogaze::Models::User[id].delete
63
+ flash[:success] = "User deleted successfully"
64
+ redirect Users.r('/')
65
+ end
66
+ end # Users
67
+ end # Admin
68
+ end # Controllers
69
+ end # Blogaze
@@ -7,40 +7,46 @@
7
7
  #
8
8
 
9
9
  module Blogaze
10
- class Controller < Ramaze::Controller
11
- layout :default
12
- helper :xhtml, :maruku, :blue_form, :formatting
13
- engine :etanni
10
+ module Controllers
11
+ class Controller < Ramaze::Controller
12
+ layout :default
13
+ helper :xhtml, :maruku, :blue_form, :formatting
14
+ engine :etanni
14
15
 
15
- def initialize
16
- super
16
+ def initialize
17
+ super
17
18
 
18
- # Get user info
19
- if session[:logged_in]
20
- @userinfo = ::Blogaze::Models::User[1]
21
- end
19
+ # Get user info
20
+ if session[:logged_in]
21
+ @userinfo = ::Blogaze::Models::User[session[:user_id]]
22
+ end
22
23
 
23
- # Get settings
24
- get_settings
24
+ # Get settings
25
+ get_settings
25
26
 
26
- Theme.use @settings[:theme]
27
- end
27
+ # Set theme
28
+ Theme.use @settings[:theme]
29
+ end
28
30
 
29
- def view_file(path)
30
- path = path.to_s if not path.is_a?(String)
31
- view_path = File.join(Theme.current.templates, "#{path}.xhtml")
32
- layout_path = File.join(Theme.current.templates + "/layouts/#{ancestral_trait[:layout]}.xhtml")
33
- return render_file(layout_path, :content => render_file(view_path))
34
- end
31
+ ##
32
+ # Renders the view with the set layout
33
+ #
34
+ def view_file(path)
35
+ path = path.to_s if not path.is_a?(String)
36
+ view_path = File.join(Theme.current.templates, "#{path}.xhtml")
37
+ layout_path = File.join(Theme.current.templates + "/layouts/#{ancestral_trait[:layout]}.xhtml")
38
+ return render_file(layout_path, :content => render_file(view_path))
39
+ end
35
40
 
36
- def get_settings
37
- @settings = {}
38
- Blogaze.database[:settings].all.each do |setting|
39
- @settings[setting[:setting].to_sym] = setting[:value]
41
+ def get_settings
42
+ @settings = {}
43
+ Blogaze.database[:settings].all.each do |setting|
44
+ @settings[setting[:setting].to_sym] = setting[:value]
45
+ end
40
46
  end
41
- end
42
- end
43
- end
47
+ end # Controller
48
+ end # Controllers
49
+ end # Blogaze
44
50
 
45
51
  # Here go your requires for subclasses of Controller:
46
52
  Dir.glob(File.dirname(__FILE__) + '/*.rb').each do |controller|
@@ -24,9 +24,9 @@ module Blogaze
24
24
  #
25
25
  def create
26
26
  @title = "Login - #{@settings[:title]}"
27
- @get_user = ::Blogaze::Models::User[:username => request[:username]]
27
+ @get_user = ::Blogaze::Models::User.where(:username => request[:username]).first
28
28
 
29
- if @get_user.respond_to?('password') and @get_user.password == Digest::SHA1.hexdigest(request[:password])
29
+ if @get_user and @get_user.check_password(request[:password])
30
30
  session[:logged_in] = true
31
31
  session[:user_id] = @get_user.id
32
32
  redirect Ramaze.options.prefix
@@ -14,6 +14,14 @@ module Blogaze
14
14
  one_to_many :post
15
15
  many_to_one :group
16
16
 
17
+ ##
18
+ # Check if the users password matches
19
+ # the supplied password.
20
+ #
21
+ def check_password(password)
22
+ BCrypt::Password.new(self.password) == password
23
+ end
24
+
17
25
  def validate
18
26
  super
19
27
 
@@ -32,7 +40,7 @@ module Blogaze
32
40
  end
33
41
 
34
42
  def before_create
35
- self.password = Digest::SHA1.hexdigest(self.password)
43
+ self.password = BCrypt::Password.create(self.password)
36
44
  self.group_id = 3
37
45
  end
38
46
 
@@ -33,7 +33,7 @@ namespace :db do
33
33
 
34
34
  # Admin user
35
35
  puts "Creating admin user"
36
- Blogaze.database[:users].insert(:username => 'Admin', :password => 'bc750014cb3cf5a86b4851b9ca33027537b3fb85', :email => 'admin@example.com', :group_id => '1')
36
+ Blogaze.database[:users].insert(:username => 'Admin', :password => '$2a$10$pWIXaTMi8eK5NPqRm2xpROEiTlFxj0H72Ebb5MaPK3OnAQqcWgfPe', :email => 'admin@example.com', :group_id => '1')
37
37
 
38
38
  # First post
39
39
  Blogaze.database[:posts].insert(:title => 'Welcome', :slug => 'welcome', :body => '**Welcome** to _Blogaze!_', :published_at => Time.now.to_i, :created_at => Time.now.to_i, :user_id => 1)
@@ -7,6 +7,7 @@
7
7
  <li>#{a 'Manage Posts', Blogaze::Controllers::Admin::Posts.r('/')}</li>
8
8
  <li>#{a 'Manage Comments', Blogaze::Controllers::Admin::Comments.r('/')}</li>
9
9
  <li>#{a 'Manage Pages', Blogaze::Controllers::Admin::Pages.r('/')}</li>
10
+ <li>#{a 'Manage Users', Blogaze::Controllers::Admin::Users.r('/')}</li>
10
11
  </ul>
11
12
  </div>
12
13
  </div>
@@ -0,0 +1,22 @@
1
+ <div id="page_content">
2
+ <h2 id="page-title">Edit User</h2>
3
+ <div class="content">
4
+ <?r if @user.errors.count > 0 ?>
5
+ <div class="message error">
6
+ <?r @user.errors.each do |k, v| ?>
7
+ #{k} #{v.first}<br />
8
+ <?r end ?>
9
+ </div>
10
+ <?r end ?>
11
+ <div class="edit-user-form tabular">
12
+ #{
13
+ form_for(@user, :method => :post, :action => '/admin/users/save/' + @user.id.to_s) do |f|
14
+ f.input_text 'Username', :username
15
+ f.input_text 'Email', :email
16
+ f.select 'Group', :group_id, :values => @groups, :size => 1, :selected => @user.group_id.to_i
17
+ f.submit "Save", :class => "submit-btn"
18
+ end
19
+ }
20
+ </div>
21
+ </div>
22
+ </div>
@@ -0,0 +1,19 @@
1
+ <div id="page_content">
2
+ <h2 id="page-title">Users</h2>
3
+ <table class="list">
4
+ <thead>
5
+ <tr>
6
+ <th>Username</th>
7
+ <th class="actions">Actions</th>
8
+ </tr>
9
+ </thead>
10
+ <tbody>
11
+ <?r @users.each do |user| ?>
12
+ <tr>
13
+ <td>#{a user.username, :edit, user.id}</td>
14
+ <td>#{a 'Edit', :edit, user.id}, #{a 'Delete', :delete, user.id}</td>
15
+ </tr>
16
+ <?r end ?>
17
+ </tbody>
18
+ </table>
19
+ </div>
File without changes
@@ -20,7 +20,7 @@
20
20
  <li><a href="/#{page.slug}">#{page.title}</a></li>
21
21
  <?r end ?>
22
22
  <?r if session[:logged_in] ?>
23
- <?r if @userinfo.group.is_admin ?>
23
+ <?r if @userinfo.group.is_admin == 1 ?>
24
24
  <li><a href="/admin">Admin</a></li>
25
25
  <?r end ?>
26
26
  <li><a href="/logout">Logout</a></li>
File without changes
@@ -7,5 +7,5 @@
7
7
  #
8
8
 
9
9
  module Blogaze
10
- VERSION = "0.0.2"
10
+ VERSION = "0.0.3"
11
11
  end
data/lib/blogaze.rb CHANGED
@@ -10,6 +10,7 @@ require 'ramaze'
10
10
  require 'sequel'
11
11
  require 'sequel/extensions/inflector'
12
12
  require 'time-lord'
13
+ require 'bcrypt'
13
14
  require "blogaze/version"
14
15
  require "blogaze/theme"
15
16
 
@@ -32,6 +33,7 @@ module Blogaze
32
33
 
33
34
  # Loads routes and controllers
34
35
  def start
36
+ require 'blogaze/themes/default'
35
37
  require 'blogaze/routes'
36
38
  require 'blogaze/controllers/init'
37
39
  end
data/proto/app.rb CHANGED
@@ -10,6 +10,5 @@ require 'blogaze'
10
10
 
11
11
  require __DIR__('config/config')
12
12
  require __DIR__('config/database')
13
- require __DIR__('themes/default')
14
13
 
15
14
  Blogaze.start
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blogaze
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-25 00:00:00.000000000 Z
12
+ date: 2013-01-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ramaze
@@ -91,6 +91,22 @@ dependencies:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
93
  version: '0.1'
94
+ - !ruby/object:Gem::Dependency
95
+ name: bcrypt-ruby
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 3.0.1
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 3.0.1
94
110
  description: Blogaze is a simple blog powered by Ramaze and Sequel.
95
111
  email:
96
112
  - nrx@nirix.net
@@ -115,6 +131,7 @@ files:
115
131
  - lib/blogaze/controllers/admin/pages.rb
116
132
  - lib/blogaze/controllers/admin/posts.rb
117
133
  - lib/blogaze/controllers/admin/settings.rb
134
+ - lib/blogaze/controllers/admin/users.rb
118
135
  - lib/blogaze/controllers/init.rb
119
136
  - lib/blogaze/controllers/main_controller.rb
120
137
  - lib/blogaze/controllers/pages.rb
@@ -138,6 +155,26 @@ files:
138
155
  - lib/blogaze/tasks.rb
139
156
  - lib/blogaze/tasks/db.rake
140
157
  - lib/blogaze/theme.rb
158
+ - lib/blogaze/themes/default.rb
159
+ - lib/blogaze/themes/default/admin/comments/index.xhtml
160
+ - lib/blogaze/themes/default/admin/index.xhtml
161
+ - lib/blogaze/themes/default/admin/pages/edit.xhtml
162
+ - lib/blogaze/themes/default/admin/pages/index.xhtml
163
+ - lib/blogaze/themes/default/admin/pages/new.xhtml
164
+ - lib/blogaze/themes/default/admin/posts/edit.xhtml
165
+ - lib/blogaze/themes/default/admin/posts/index.xhtml
166
+ - lib/blogaze/themes/default/admin/posts/new.xhtml
167
+ - lib/blogaze/themes/default/admin/settings/index.xhtml
168
+ - lib/blogaze/themes/default/admin/users/edit.xhtml
169
+ - lib/blogaze/themes/default/admin/users/index.xhtml
170
+ - lib/blogaze/themes/default/index.xhtml
171
+ - lib/blogaze/themes/default/layouts/admin.xhtml
172
+ - lib/blogaze/themes/default/layouts/default.xhtml
173
+ - lib/blogaze/themes/default/pages/notfound.xhtml
174
+ - lib/blogaze/themes/default/pages/page.xhtml
175
+ - lib/blogaze/themes/default/posts/view.xhtml
176
+ - lib/blogaze/themes/default/sessions/new.xhtml
177
+ - lib/blogaze/themes/default/users/new.xhtml
141
178
  - lib/blogaze/version.rb
142
179
  - proto/Rakefile
143
180
  - proto/app.rb
@@ -151,24 +188,6 @@ files:
151
188
  - proto/public/js/jquery.js
152
189
  - proto/public/js/less.js
153
190
  - proto/start.rb
154
- - proto/themes/default.rb
155
- - proto/themes/default/admin/comments/index.xhtml
156
- - proto/themes/default/admin/index.xhtml
157
- - proto/themes/default/admin/pages/edit.xhtml
158
- - proto/themes/default/admin/pages/index.xhtml
159
- - proto/themes/default/admin/pages/new.xhtml
160
- - proto/themes/default/admin/posts/edit.xhtml
161
- - proto/themes/default/admin/posts/index.xhtml
162
- - proto/themes/default/admin/posts/new.xhtml
163
- - proto/themes/default/admin/settings/index.xhtml
164
- - proto/themes/default/index.xhtml
165
- - proto/themes/default/layouts/admin.xhtml
166
- - proto/themes/default/layouts/default.xhtml
167
- - proto/themes/default/pages/notfound.xhtml
168
- - proto/themes/default/pages/page.xhtml
169
- - proto/themes/default/posts/view.xhtml
170
- - proto/themes/default/sessions/new.xhtml
171
- - proto/themes/default/users/new.xhtml
172
191
  homepage: http://blogaze.org
173
192
  licenses: []
174
193
  post_install_message: