vanilla 1.9.12 → 1.9.13

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ if Object.const_defined?(:Gem)
25
25
 
26
26
  # Change these as appropriate
27
27
  s.name = "vanilla"
28
- s.version = "1.9.12"
28
+ s.version = "1.9.13"
29
29
  s.summary = "A bliki-type web content thing."
30
30
  s.author = "James Adam"
31
31
  s.email = "james@lazyatom.com.com"
data/config.ru CHANGED
@@ -12,7 +12,7 @@ require 'vanilla/authentication/warden'
12
12
  app.authenticator = Vanilla::Authentication::Warden.new(app)
13
13
  use Warden::Manager do |manager|
14
14
  manager.default_strategies :vanilla
15
- manager.failure_app = lambda{|e| [401, {"Content-Type" => "text/plain"}, ["Fail App"]]}
15
+ manager.failure_app = Vanilla::Authentication::Warden::FailApp.new
16
16
  end
17
17
 
18
18
  use Rack::Static, :urls => ["/public"], :root => File.join(File.dirname(__FILE__))
@@ -1,4 +1,5 @@
1
1
  require 'warden'
2
+ require 'md5'
2
3
 
3
4
  module Vanilla
4
5
  module Authentication
@@ -31,12 +32,27 @@ module Vanilla
31
32
 
32
33
  def authenticate!
33
34
  if env['vanilla.app'].config[:credentials][params["name"]] == MD5.md5(params["password"]).to_s
35
+ # clear these so they don't interfere with the request
36
+ env['vanilla.app'].request.params.delete(:name)
37
+ env['vanilla.app'].request.params.delete(:password)
34
38
  success!(params["name"])
35
39
  else
36
- redirect!("/login")
40
+ fail! "Sorry, you couldn't be logged in with those details"
37
41
  end
38
42
  end
39
43
  end
44
+
45
+ class FailApp
46
+ def call(env)
47
+ [401, {"Content-Type" => "text/html"}, [login_form(env)]]
48
+ end
49
+
50
+ private
51
+
52
+ def login_form(env)
53
+ env['vanilla.app'].soup["system"].login_template.gsub("MESSAGE", env['warden'].message)
54
+ end
55
+ end
40
56
  end
41
57
  end
42
- end
58
+ end
@@ -0,0 +1,8 @@
1
+ require 'vanilla/dynasnip'
2
+
3
+ class Logout < Dynasnip
4
+ def handle(*args)
5
+ app.request.logout
6
+ "Logged out"
7
+ end
8
+ end
@@ -2,8 +2,6 @@ require 'vanilla/dynasnip'
2
2
  require 'vanilla/dynasnips/login'
3
3
 
4
4
  class NewSnip < Dynasnip
5
- # include Login::Helper
6
-
7
5
  snip_name :new
8
6
 
9
7
  def handle(*arg)
@@ -27,6 +27,20 @@ system.main_template = <<-HTML
27
27
  </html>
28
28
  HTML
29
29
 
30
+ system.login_template = <<-HTML
31
+ <html>
32
+ <head><link rel="stylesheet" type="text/css" media="screen" href="/system/css.css" /></head>
33
+ <body id="login">
34
+ <form action='' method='post'>
35
+ <h1>Login</h1><p class="message">MESSAGE</p>
36
+ <label>Name: <input type="text" name="name"></input></label>
37
+ <label>Password: <input type="password" name="password"></input></label>
38
+ <button>login</button>
39
+ </form>
40
+ </body>
41
+ </html>
42
+ HTML
43
+
30
44
  system.css = <<-CSS
31
45
  body {
32
46
  font-family: Helvetica;
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vanilla
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.12
4
+ version: 1.9.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Adam
@@ -136,7 +136,7 @@ files:
136
136
  - lib/vanilla/dynasnips/kind.rb
137
137
  - lib/vanilla/dynasnips/link_to.rb
138
138
  - lib/vanilla/dynasnips/link_to_current_snip.rb
139
- - lib/vanilla/dynasnips/login.rb
139
+ - lib/vanilla/dynasnips/logout.rb
140
140
  - lib/vanilla/dynasnips/new.rb
141
141
  - lib/vanilla/dynasnips/notes.rb
142
142
  - lib/vanilla/dynasnips/pre.rb
@@ -1,40 +0,0 @@
1
- require 'vanilla/dynasnip'
2
- require 'yaml'
3
- require 'md5'
4
-
5
- class Login < Dynasnip
6
- def get(*args)
7
- if app.request.authenticated?
8
- login_controls
9
- else
10
- render(self, 'template')
11
- end
12
- end
13
-
14
- def post(*args)
15
- if app.request.authenticate!
16
- login_controls
17
- else
18
- "login fail!"
19
- end
20
- end
21
-
22
- def delete(*args)
23
- app.request.logout
24
- "Logged out"
25
- end
26
-
27
- attribute :template, <<-EHTML
28
- <form action='/login' method='post'>
29
- <label>Name: <input type="text" name="name"></input></label>
30
- <label>Password: <input type="password" name="password"></input></label>
31
- <button>login</button>
32
- </form>
33
- EHTML
34
-
35
- private
36
-
37
- def login_controls
38
- "logged in as #{link_to app.request.user}; <a href='/login?_method=delete'>logout</a>"
39
- end
40
- end