hector-identity-ee 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+