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.
Files changed (2) hide show
  1. data/lib/hector/ee_identity_adapter.rb +68 -0
  2. 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
+