hector-identity-ee 2.0.0 → 2.1.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 +29 -21
- metadata +30 -50
@@ -1,8 +1,7 @@
|
|
1
|
-
require "digest/sha1"
|
2
1
|
require "yaml"
|
3
2
|
|
4
3
|
begin
|
5
|
-
require "
|
4
|
+
require "mysql2"
|
6
5
|
rescue LoadError => e
|
7
6
|
if require "rubygems"
|
8
7
|
retry
|
@@ -11,19 +10,17 @@ rescue LoadError => e
|
|
11
10
|
end
|
12
11
|
end
|
13
12
|
|
14
|
-
|
15
13
|
module Hector
|
16
14
|
class ExpressionEngineIdentityAdapter
|
17
|
-
attr_reader :
|
15
|
+
attr_reader :config, :database
|
18
16
|
|
19
17
|
def initialize(filename = nil)
|
20
|
-
|
21
|
-
load_config
|
18
|
+
load_config(filename || Hector.root.join("config/expression_engine.yml"))
|
22
19
|
load_database
|
23
20
|
end
|
24
21
|
|
25
22
|
def authenticate(username, password)
|
26
|
-
yield identity(normalize(username)) ==
|
23
|
+
yield normalize(identity(normalize(username))) == normalize(password)
|
27
24
|
end
|
28
25
|
|
29
26
|
def remember(username, password)
|
@@ -36,37 +33,48 @@ module Hector
|
|
36
33
|
false
|
37
34
|
end
|
38
35
|
|
39
|
-
def normalize(username)
|
40
|
-
username.strip.downcase
|
41
|
-
end
|
42
|
-
|
43
36
|
protected
|
44
|
-
def load_config
|
37
|
+
def load_config(filename)
|
45
38
|
@config = YAML.load_file(filename)
|
46
39
|
rescue => e
|
47
|
-
Hector.logger.fatal "
|
40
|
+
Hector.logger.fatal "#{e.class.name} while loading #{filename}: #{e.message}"
|
48
41
|
exit 1
|
49
42
|
end
|
50
43
|
|
51
44
|
def load_database
|
52
|
-
@
|
45
|
+
@database = Mysql2::Client.new(connection_params)
|
53
46
|
rescue => e
|
54
|
-
Hector.logger.fatal "
|
47
|
+
Hector.logger.fatal "#{e.class.name} while connecting to ExpressionEngine database: #{e.message}"
|
55
48
|
exit 1
|
56
49
|
end
|
57
50
|
|
51
|
+
def connection_params
|
52
|
+
config["database"].inject({}) do |hash, (key, value)|
|
53
|
+
hash[key.to_sym] = value; hash
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
58
57
|
def identity(username)
|
59
|
-
|
60
|
-
|
61
|
-
(
|
58
|
+
sql = "SELECT hector_password FROM #{table(:members)} WHERE hector_username = '#{escape(username)}'"
|
59
|
+
sql << " AND group_id IN (#{config["groups"].join(",")})" if config["groups"]
|
60
|
+
(query(sql).first || {})["hector_password"]
|
62
61
|
end
|
63
62
|
|
64
63
|
def table(name)
|
65
|
-
|
64
|
+
"#{config["prefix"] || "exp"}_#{name}"
|
65
|
+
end
|
66
|
+
|
67
|
+
def escape(input)
|
68
|
+
database.escape(input)
|
69
|
+
end
|
70
|
+
|
71
|
+
def query(sql)
|
72
|
+
Hector.logger.debug(sql.inspect)
|
73
|
+
database.query(sql)
|
66
74
|
end
|
67
75
|
|
68
|
-
def
|
69
|
-
|
76
|
+
def normalize(input)
|
77
|
+
input.strip.downcase
|
70
78
|
end
|
71
79
|
end
|
72
80
|
end
|
metadata
CHANGED
@@ -1,78 +1,58 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hector-identity-ee
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.1.0
|
4
5
|
prerelease:
|
5
|
-
version: 2.0.0
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Ross Paffett
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
17
|
-
name: sequel
|
18
|
-
prerelease: false
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
20
|
-
none: false
|
21
|
-
requirements:
|
22
|
-
- - ">="
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: 3.26.0
|
25
|
-
type: :runtime
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-08-26 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
28
15
|
name: mysql2
|
29
|
-
|
30
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70292475371600 !ruby/object:Gem::Requirement
|
31
17
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version: 0.3.
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.3.7
|
36
22
|
type: :runtime
|
37
|
-
|
38
|
-
|
39
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70292475371600
|
25
|
+
description: An identity adapter which allows users to log into a Hector IRC server
|
26
|
+
using their ExpressionEngine credentials.
|
27
|
+
email:
|
40
28
|
- ross@rosspaffett.com
|
41
29
|
executables: []
|
42
|
-
|
43
30
|
extensions: []
|
44
|
-
|
45
31
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
files:
|
32
|
+
files:
|
48
33
|
- lib/hector/ee_identity_adapter.rb
|
49
|
-
has_rdoc: true
|
50
34
|
homepage: http://github.com/raws/hector-identity-ee
|
51
35
|
licenses: []
|
52
|
-
|
53
36
|
post_install_message:
|
54
37
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
38
|
+
require_paths:
|
57
39
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
41
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
47
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
version: '0'
|
70
52
|
requirements: []
|
71
|
-
|
72
53
|
rubyforge_project:
|
73
|
-
rubygems_version: 1.
|
54
|
+
rubygems_version: 1.8.7
|
74
55
|
signing_key:
|
75
56
|
specification_version: 3
|
76
57
|
summary: ExpressionEngine identity adapter for Hector
|
77
58
|
test_files: []
|
78
|
-
|