forked from jfqd/radiant-ssl_requirement-extension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ssl_requirement_extension.rb
66 lines (56 loc) · 1.57 KB
/
ssl_requirement_extension.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
require_dependency 'application_controller'
require 'fileutils'
class SslRequirementExtension < Radiant::Extension
version "0.4"
description "Add ssl requirement to admin pages."
url "http://github.com/jfqd/radiant-ssl_requirement-extension"
def activate
# add ssl requirement to admin area
if respond_to?(:tab) # 0.9
controllers = [ApplicationController, Admin::ResourceController, Admin::PagesController]
else
controllers = [ApplicationController]
end
controllers.each do |c|
c.class_eval {
include SslRequirement
def ssl_required?
local_request? || RAILS_ENV == 'test' || RAILS_ENV == 'development' ? false : true
end
}
end
src = File.dirname(__FILE__) + '/ssl_requirement.yml'
dest = RAILS_ROOT + '/config/ssl_requirement.yml'
FileUtils.cp(src, dest) unless RAILS_ENV == 'test'
reader = CompatabilityReader.new
components = reader.read(dest)
components.each do |c|
if class_exists?(c.controller)
klass = Module.const_get(c.controller)
if c.ssl_required
klass.class_eval {
def ssl_required?
true
end
}
else
klass.class_eval {
def ssl_required?
false
end
}
end
end
end
end
def deactivate
# will never happen
end
private
def class_exists?(class_name)
klass = Module.const_get(class_name)
return klass.is_a?(Class)
rescue NameError
return false
end
end