oa-webiso 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2010 Marshall Roch
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
data/lib/oa-webiso.rb ADDED
@@ -0,0 +1 @@
1
+ require 'omniauth/webiso'
@@ -0,0 +1,56 @@
1
+ require 'net/ldap'
2
+
3
+ module OmniAuth
4
+ module Strategies
5
+ class Webiso < Env
6
+ def initialize(app, options = {})
7
+ options[:name] ||= :webiso
8
+ super(app, options)
9
+ end
10
+
11
+ protected
12
+
13
+ def auth_hash
14
+ @extra_info = ldap_user_info
15
+ @user_info = {
16
+ 'first_name' => @extra_info['givenname'],
17
+ 'last_name' => @extra_info['sn']
18
+ }
19
+ OmniAuth::Utils.deep_merge(super, {
20
+ 'user_info' => @user_info,
21
+ 'extra' => { 'ldap_results' => @extra_info }
22
+ })
23
+ end
24
+
25
+ private
26
+
27
+ def ldap_user_info
28
+ options = {
29
+ :base => 'ou=Person, dc=cmu, dc=edu',
30
+ :attributes => [
31
+ 'givenName', 'sn', 'nickname', 'eduPersonSchoolCollegeName',
32
+ 'cmuStudentClass', 'mail', 'cmuPreferredMail'
33
+ ],
34
+ :filter => Net::LDAP::Filter.eq('cmuPersonPrincipalName', @uid),
35
+ :return_result => false,
36
+ :size => 1
37
+ }
38
+
39
+ results = {}
40
+
41
+ Net::LDAP.open(:host => 'ldap.andrew.cmu.edu', :port => 389) do |ldap|
42
+ ldap.search(options) do |entry|
43
+ entry.each do |attribute, values|
44
+ results[attribute.to_s] = values.first
45
+ end
46
+ end
47
+ end
48
+
49
+ results
50
+ rescue Net::LDAP::LdapError
51
+ return {}
52
+ end
53
+
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,8 @@
1
+ require 'omniauth/core'
2
+ require 'omniauth/env'
3
+
4
+ module OmniAuth
5
+ module Strategies
6
+ autoload :Webiso, 'omniauth/strategies/webiso'
7
+ end
8
+ end
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: oa-webiso
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Marshall Roch
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-06-19 00:00:00 -07:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: oa-core
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: oa-env
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: net-ldap
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :runtime
62
+ version_requirements: *id003
63
+ description: OmniAuth strategy for using WebISO at Carnegie Mellon
64
+ email:
65
+ - marshall@mroch.com
66
+ executables: []
67
+
68
+ extensions: []
69
+
70
+ extra_rdoc_files: []
71
+
72
+ files:
73
+ - lib/oa-webiso.rb
74
+ - lib/omniauth/strategies/webiso.rb
75
+ - lib/omniauth/webiso.rb
76
+ - LICENSE
77
+ has_rdoc: true
78
+ homepage: http://rubygems.org/gems/oa-webiso
79
+ licenses: []
80
+
81
+ post_install_message:
82
+ rdoc_options: []
83
+
84
+ require_paths:
85
+ - lib
86
+ required_ruby_version: !ruby/object:Gem::Requirement
87
+ none: false
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ hash: 3
92
+ segments:
93
+ - 0
94
+ version: "0"
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
104
+ requirements: []
105
+
106
+ rubyforge_project: oa-webiso
107
+ rubygems_version: 1.3.7
108
+ signing_key:
109
+ specification_version: 3
110
+ summary: OmniAuth strategy for using WebISO at Carnegie Mellon
111
+ test_files: []
112
+