blogaze 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.
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: