hector-identity-ee 1.0.0
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.
- data/lib/hector/ee_identity_adapter.rb +68 -0
- metadata +94 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
require "digest/sha1"
|
2
|
+
require "yaml"
|
3
|
+
|
4
|
+
begin
|
5
|
+
require "sequel"
|
6
|
+
rescue LoadError => e
|
7
|
+
if require "rubygems"
|
8
|
+
retry
|
9
|
+
else
|
10
|
+
raise e
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
module Hector
|
16
|
+
class ExpressionEngineIdentityAdapter
|
17
|
+
attr_reader :filename, :config, :db
|
18
|
+
|
19
|
+
def initialize(filename = nil)
|
20
|
+
@filename = filename || Hector.root.join("config/expression_engine.yml")
|
21
|
+
load_config
|
22
|
+
load_database
|
23
|
+
end
|
24
|
+
|
25
|
+
def authenticate(username, password)
|
26
|
+
yield identity(normalize(username)) == hash(password)
|
27
|
+
end
|
28
|
+
|
29
|
+
def remember(username, password)
|
30
|
+
Hector.logger.warn "Hector cannot manage ExpressionEngine members"
|
31
|
+
false
|
32
|
+
end
|
33
|
+
|
34
|
+
def forget(username)
|
35
|
+
Hector.logger.warn "Hector cannot manage ExpressionEngine members"
|
36
|
+
false
|
37
|
+
end
|
38
|
+
|
39
|
+
def normalize(username)
|
40
|
+
username.strip.downcase
|
41
|
+
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
def load_config
|
45
|
+
@config = YAML.load_file(filename)
|
46
|
+
rescue => e
|
47
|
+
Hector.logger.fatal "Could not load #{filename} (#{e.class.name})"
|
48
|
+
exit 1
|
49
|
+
end
|
50
|
+
|
51
|
+
def load_database
|
52
|
+
@db = Sequel.mysql2(config["database"])
|
53
|
+
rescue => e
|
54
|
+
Hector.logger.fatal "Could not connect to ExpressionEngine database: #{e.message} (#{e.class.name})"
|
55
|
+
exit 1
|
56
|
+
end
|
57
|
+
|
58
|
+
def identity(username)
|
59
|
+
query = { :hector_username => username }
|
60
|
+
query[:group_id] = config["groups"] if config["groups"]
|
61
|
+
(db[:exp_members].select(:password).first(query) || {})[:password]
|
62
|
+
end
|
63
|
+
|
64
|
+
def hash(password)
|
65
|
+
Digest::SHA1.hexdigest(password)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: hector-identity-ee
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 1
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
version: 1.0.0
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Ross Paffett
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-03-08 00:00:00 -05:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: sequel
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 3
|
30
|
+
- 21
|
31
|
+
- 0
|
32
|
+
version: 3.21.0
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: mysql2
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 0
|
45
|
+
- 2
|
46
|
+
- 6
|
47
|
+
version: 0.2.6
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
description: An identity adapter which allows users to log into a Hector IRC server using their ExpressionEngine credentials.
|
51
|
+
email:
|
52
|
+
- ross@rosspaffett.com
|
53
|
+
executables: []
|
54
|
+
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files: []
|
58
|
+
|
59
|
+
files:
|
60
|
+
- lib/hector/ee_identity_adapter.rb
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: http://github.com/raws/hector-identity-ee
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
none: false
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 0
|
85
|
+
version: "0"
|
86
|
+
requirements: []
|
87
|
+
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 1.3.7
|
90
|
+
signing_key:
|
91
|
+
specification_version: 3
|
92
|
+
summary: ExpressionEngine identity adapter for Hector
|
93
|
+
test_files: []
|
94
|
+
|