orange 0.1.10 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/orange-core/middleware/database.rb +1 -1
- data/lib/orange-core/packet.rb +14 -0
- data/lib/orange-core/resources/parser.rb +22 -6
- data/lib/orange-more/administration/middleware/access_control.rb +7 -8
- data/lib/orange-more/administration/resources/user_resource.rb +1 -1
- data/lib/orange-more/administration/views/openid_login.haml +2 -2
- data/lib/orange-more/debugger/middleware/debugger.rb +1 -1
- data/lib/orange-more/pages/resources/page_resource.rb +1 -1
- data/spec/orange-core/packet_spec.rb +26 -2
- metadata +4 -4
@@ -20,7 +20,7 @@ module Orange::Middleware
|
|
20
20
|
path = packet['route.path'] || packet.request.path_info
|
21
21
|
if @options[:migration_url] && @options[:migration_url] == path
|
22
22
|
orange.migrate_db!
|
23
|
-
after = packet.
|
23
|
+
after = packet.flash('redirect_to') || '/'
|
24
24
|
packet.reroute(after)
|
25
25
|
end
|
26
26
|
pass packet
|
data/lib/orange-core/packet.rb
CHANGED
@@ -87,9 +87,23 @@ module Orange
|
|
87
87
|
# Access to the rack session
|
88
88
|
# @return [Hash] the session information made available by Rack
|
89
89
|
def session
|
90
|
+
env['rack.session']["flash"] ||= {}
|
90
91
|
env['rack.session']
|
91
92
|
end
|
92
93
|
|
94
|
+
# Access to the rack session flash
|
95
|
+
# @return [String] the string stored in the flash
|
96
|
+
def flash(key = nil, val = nil)
|
97
|
+
env['rack.session']["flash"] ||= {}
|
98
|
+
if key.nil? && val.nil?
|
99
|
+
env['rack.session']["flash"]
|
100
|
+
elsif val.nil?
|
101
|
+
env['rack.session']["flash"].delete(key)
|
102
|
+
else
|
103
|
+
env['rack.session']["flash"][key] = val
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
93
107
|
# Generate headers for finalization
|
94
108
|
# @return [Hash] the header information stored in the orange.env, combined with the defaults
|
95
109
|
# set as DEFAULT_HEADERS
|
@@ -20,8 +20,11 @@ module Orange
|
|
20
20
|
out = YAML::load(string)
|
21
21
|
end
|
22
22
|
|
23
|
-
def haml(file,
|
23
|
+
def haml(file, packet_binding, *vars, &block)
|
24
24
|
opts = vars.extract_options!
|
25
|
+
if packet_binding.is_a? Orange::Packet
|
26
|
+
context = packet_binding['route.context'].to_s
|
27
|
+
end
|
25
28
|
temp = opts.delete(:template)
|
26
29
|
opts[:resource_name] = opts[:resource].orange_name.to_s if
|
27
30
|
opts[:resource] && opts[:resource].respond_to?(:orange_name)
|
@@ -33,23 +36,36 @@ module Orange
|
|
33
36
|
string ||= read_if_exists('templates', file)
|
34
37
|
@template_dirs.each do |templates_dir|
|
35
38
|
string ||= read_if_exists(templates_dir, file)
|
36
|
-
end
|
39
|
+
end unless string
|
37
40
|
end
|
41
|
+
|
42
|
+
if context
|
43
|
+
#Check for context specific overrides
|
44
|
+
string ||= read_if_exists('views', resource, context+"."+file) if resource
|
45
|
+
string ||= read_if_exists('views', context+"."+file)
|
46
|
+
@view_dirs.each do |views_dir|
|
47
|
+
string ||= read_if_exists(views_dir, resource, context+"."+file) if resource
|
48
|
+
string ||= read_if_exists(views_dir, context+"."+file)
|
49
|
+
end unless string
|
50
|
+
end
|
51
|
+
|
52
|
+
# Check for standard views
|
38
53
|
string ||= read_if_exists('views', resource, file) if resource
|
39
54
|
string ||= read_if_exists('views', file)
|
40
55
|
@view_dirs.each do |views_dir|
|
41
56
|
string ||= read_if_exists(views_dir, resource, file) if resource
|
42
57
|
string ||= read_if_exists(views_dir, file)
|
43
|
-
end
|
58
|
+
end unless string
|
59
|
+
|
60
|
+
# Check for default resource views
|
44
61
|
string ||= read_if_exists('views', 'default_resource', file)
|
45
62
|
@view_dirs.each do |views_dir|
|
46
63
|
string ||= read_if_exists(views_dir, 'default_resource', file) if resource
|
47
|
-
|
48
|
-
end
|
64
|
+
end unless string
|
49
65
|
raise LoadError, "Couldn't find haml file '#{file}'" unless string
|
50
66
|
|
51
67
|
haml_engine = Haml::Engine.new(string)
|
52
|
-
out = haml_engine.render(
|
68
|
+
out = haml_engine.render(packet_binding, opts, &block)
|
53
69
|
end
|
54
70
|
|
55
71
|
def read_if_exists(*args)
|
@@ -38,7 +38,7 @@ module Orange::Middleware
|
|
38
38
|
return ret unless ret.blank? # unless handle_openid returns false, exit immediately
|
39
39
|
end
|
40
40
|
unless access_allowed?(packet)
|
41
|
-
packet.
|
41
|
+
packet.flash['user.after_login'] = packet.request.path
|
42
42
|
packet.reroute(@login)
|
43
43
|
end
|
44
44
|
|
@@ -75,8 +75,7 @@ module Orange::Middleware
|
|
75
75
|
if packet.request.path.gsub(/\/$/, '') == @logout
|
76
76
|
packet.session['user.id'] = nil
|
77
77
|
packet['user.id'] = nil
|
78
|
-
after = packet.
|
79
|
-
'/' : packet.session['user.after_login']
|
78
|
+
after = packet.flash('user.after_login') || '/'
|
80
79
|
packet.reroute(after)
|
81
80
|
return false
|
82
81
|
end
|
@@ -112,9 +111,7 @@ module Orange::Middleware
|
|
112
111
|
end
|
113
112
|
|
114
113
|
|
115
|
-
after = packet.
|
116
|
-
packet.session['user.after_login'] : '/'
|
117
|
-
packet.session['user.after_login'] = false
|
114
|
+
after = packet.flash('user.after_login') || '/'
|
118
115
|
|
119
116
|
# Save id into session if we have one.
|
120
117
|
packet.session['user.id'] = packet['user.id']
|
@@ -123,7 +120,7 @@ module Orange::Middleware
|
|
123
120
|
packet.reroute(after)
|
124
121
|
false
|
125
122
|
else
|
126
|
-
packet.
|
123
|
+
packet.flash['error'] = resp.status
|
127
124
|
packet.reroute(@login)
|
128
125
|
false
|
129
126
|
end
|
@@ -131,8 +128,10 @@ module Orange::Middleware
|
|
131
128
|
else
|
132
129
|
packet[:status] = 401
|
133
130
|
packet[:headers] = {}
|
131
|
+
id = packet.request.params["openid_identifier"]
|
132
|
+
id = "http://#{id}" unless id =~ /^https?:\/\//
|
134
133
|
packet.add_header('WWW-Authenticate', Rack::OpenID.build_header(
|
135
|
-
:identifier =>
|
134
|
+
:identifier => id,
|
136
135
|
:required => [:email, "http://axschema.org/contact/email"]
|
137
136
|
)
|
138
137
|
)
|
@@ -29,7 +29,7 @@ module Orange
|
|
29
29
|
sites = params.delete 'sites'
|
30
30
|
obj.update(params)
|
31
31
|
obj.orange_sites.destroy
|
32
|
-
sites.each{|k,v| s = OrangeSite.first(:id => k);
|
32
|
+
sites.each{|k,v| s = OrangeSite.first(:id => k); obj.orange_sites << s if s} if sites
|
33
33
|
obj.save
|
34
34
|
end
|
35
35
|
|
@@ -5,8 +5,8 @@
|
|
5
5
|
%h2 Wait a minute...
|
6
6
|
%p You'll need to log in before you can continue. Use your OpenID.
|
7
7
|
%p (You can use a Google account to log in. Put https://www.google.com/accounts/o8/id in the box below.)
|
8
|
-
- if(
|
9
|
-
.error=
|
8
|
+
- if(flash['error'])
|
9
|
+
.error= flash('error')
|
10
10
|
%form{:action => '', :method => 'POST'}
|
11
11
|
%input{:type => 'text', :name => 'openid_identifier'}
|
12
12
|
%input{:type => 'submit', :value => 'Log in'}
|
@@ -9,7 +9,7 @@ module Orange::Middleware
|
|
9
9
|
# Passes packet then parses the return
|
10
10
|
def packet_call(packet)
|
11
11
|
if orange.options[:development_mode]
|
12
|
-
packet.
|
12
|
+
packet.flash['redirect_to'] = packet.request.path
|
13
13
|
packet.add_css('debug_bar.css', :module => '_debugger_')
|
14
14
|
end
|
15
15
|
pass packet
|
@@ -63,7 +63,7 @@ module Orange
|
|
63
63
|
|
64
64
|
# Saves updates to an object specified by packet['route.resource_id'], then reroutes to main
|
65
65
|
# @param [Orange::Packet] packet the packet being routed
|
66
|
-
def onSave(packet, params = {})
|
66
|
+
def onSave(packet, m, params = {})
|
67
67
|
params[:published] = false
|
68
68
|
m.update(params)
|
69
69
|
m.orange_site = packet['site']
|
@@ -55,8 +55,32 @@ describe Orange::Packet do
|
|
55
55
|
end
|
56
56
|
|
57
57
|
it "should give access to the rack.session env" do
|
58
|
-
p= Orange::Packet.new(Orange::Core.new, {'rack.session' => 'banana'})
|
59
|
-
p.session.should
|
58
|
+
p= Orange::Packet.new(Orange::Core.new, {'rack.session' => {'foo' => 'banana'}})
|
59
|
+
p.session.should have_key 'foo'
|
60
|
+
p.session.should have_key 'flash'
|
61
|
+
end
|
62
|
+
|
63
|
+
it "should give always have a flash" do
|
64
|
+
p= Orange::Packet.new(Orange::Core.new, {'rack.session' => {}})
|
65
|
+
p.session.should have_key 'flash'
|
66
|
+
p.flash.should == {}
|
67
|
+
end
|
68
|
+
|
69
|
+
it "should destruct a flash value upon reading" do
|
70
|
+
p= Orange::Packet.new(Orange::Core.new, {'rack.session' => {}})
|
71
|
+
p.session.should have_key 'flash'
|
72
|
+
p.session["flash"]["foo"] = "bar"
|
73
|
+
p.flash("foo").should == "bar"
|
74
|
+
p.flash("foo").should be_nil
|
75
|
+
p.session["flash"].should_not have_key("foo")
|
76
|
+
p.flash("foo", "bar")
|
77
|
+
p.flash("foo").should == "bar"
|
78
|
+
p.flash("foo").should be_nil
|
79
|
+
p.session["flash"].should_not have_key("foo")
|
80
|
+
p.flash["foo"] = "bar"
|
81
|
+
p.flash("foo").should == "bar"
|
82
|
+
p.flash("foo").should be_nil
|
83
|
+
p.flash.should_not have_key("foo")
|
60
84
|
end
|
61
85
|
|
62
86
|
it "should give headers by combining :headers with defaults" do
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- David Haslem
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-05-06 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|