omniauth-pam 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -6,14 +6,25 @@ Allows you to authenticate against PAM using OmniAuth.
6
6
 
7
7
  use OmniAuth:Strategies::PAM
8
8
 
9
- There are no configuration options. It's been tested under Debian 6.0 and Ruby 1.9.3-p0, but there's no reason why it won't work anywhere which doesn't have PAM correctly configured.
9
+ There are no configuration options. It's been tested under Debian 6.0 (Squeeze)
10
+ and Ruby 1.9.3, but there's no reason why it won't work anywhere which doesn't
11
+ have PAM correctly configured.
12
+ _Note: The above is assumed for Sinatra, check the OmniAuth docs for Rails, et. al. usage._
10
13
 
11
14
  Then navigate to '/auth/pam'.
12
15
 
13
- On Debian/Ubuntu you will need the `libpam0g-dev` package to compile the [rpam](https://github.com/canweriotnow/rpam-ruby19) gem.Others, I don't know.
16
+ On Debian/Ubuntu you will need the `libpam0g-dev` package to compile the [rpam][]
17
+ gem. YMMV with others.
14
18
 
15
- This strategy only supports Ruby 1.9. [Read here about 1.8 support](http://nickcharlton.net/post/pam-for-omniauth).
19
+ This strategy only supports Ruby 1.9. [Read here about 1.8 support][oldruby].
16
20
 
17
- ## Author / License
21
+ ## Credits
22
+
23
+ Originally hacked together by [Nick Charlton][nick], with modifications by
24
+ [Jaakko Kantojärvi][jaakko] for GitLab support. Licensed under the MIT license.
25
+
26
+ [rpam]: https://github.com/canweriotnow/rpam-ruby19
27
+ [oldruby]: http://nickcharlton.net/post/pam-for-omniauth
28
+ [nick]: https://github.com/nickcharlton
29
+ [jaakko]: https://github.com/raphendyr
18
30
 
19
- Copyright Nick Charlton 2012. Licensed under the MIT license.
data/lib/omniauth-pam.rb CHANGED
@@ -1,6 +1,7 @@
1
- # depends upon rpam
1
+ # depends upon rpam and etc
2
2
  require "rpam"
3
+ require "etc"
3
4
 
4
5
  # then the rest of the strategy
5
6
  require "omniauth-pam/version"
6
- require "omniauth/pam"
7
+ require "omniauth/strategies/pam"
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module PAM
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
@@ -6,6 +6,9 @@ module OmniAuth
6
6
  option :fields, [:username]
7
7
  option :uid_field, :username
8
8
 
9
+ # this map is used to return gecos in info
10
+ option :gecos_map, [:name, :location, :phone, :home_phone, :description]
11
+
9
12
  def request_phase
10
13
  OmniAuth::Form.build(
11
14
  :title => (options[:title] || "Authenticate"),
@@ -17,16 +20,38 @@ module OmniAuth
17
20
  end
18
21
 
19
22
  def callback_phase
20
- unless Rpam.auth(request['username'], request['password'])
23
+ rpam_opts = Hash.new
24
+ rpam_opts[:service] = options[:service] unless options[:service].nil?
25
+
26
+ unless Rpam.auth(request['username'], request['password'], rpam_opts)
21
27
  return fail!(:invalid_credentials)
22
28
  end
23
29
 
24
30
  super
25
31
  end
26
32
 
33
+ def parse_gecos
34
+ if options[:gecos_map].kind_of?(Array)
35
+ begin
36
+ gecos = Etc.getpwnam(uid).gecos.split(',')
37
+ Hash[options[:gecos_map].zip(gecos)].delete_if { |k, v| v.nil? }
38
+ rescue
39
+ end
40
+ end
41
+ end
42
+
27
43
  uid do
28
44
  request['username']
29
45
  end
46
+
47
+ info do
48
+ {
49
+ :nickname => uid,
50
+ :name => uid
51
+ }.merge!(parse_gecos)
52
+ end
30
53
  end
31
54
  end
32
55
  end
56
+
57
+ OmniAuth.config.add_camelization 'pam', 'PAM'
data/omniauth-pam.gemspec CHANGED
@@ -19,5 +19,6 @@ Gem::Specification.new do |s|
19
19
  s.require_paths = ["lib"]
20
20
 
21
21
  s.add_runtime_dependency "omniauth", '~> 1.0'
22
- s.add_runtime_dependency "rpam-ruby19"
22
+ s.add_runtime_dependency "rpam-ruby19", '~> 1.2.1'
23
+ s.add_runtime_dependency "etc"
23
24
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-pam
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 1
7
+ - 1
8
8
  - 0
9
- - 0
10
- version: 1.0.0
9
+ version: 1.1.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Nick Charlton
@@ -15,18 +14,16 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2012-01-15 00:00:00 +00:00
17
+ date: 2013-02-26 00:00:00 +00:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: omniauth
23
22
  prerelease: false
24
23
  requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
29
- hash: 15
30
27
  segments:
31
28
  - 1
32
29
  - 0
@@ -37,16 +34,28 @@ dependencies:
37
34
  name: rpam-ruby19
38
35
  prerelease: false
39
36
  requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 1
42
+ - 2
43
+ - 1
44
+ version: 1.2.1
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: etc
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
41
51
  requirements:
42
52
  - - ">="
43
53
  - !ruby/object:Gem::Version
44
- hash: 3
45
54
  segments:
46
55
  - 0
47
56
  version: "0"
48
57
  type: :runtime
49
- version_requirements: *id002
58
+ version_requirements: *id003
50
59
  description: A PAM strategy for OmniAuth.
51
60
  email:
52
61
  - hello@nickcharlton.net
@@ -63,7 +72,7 @@ files:
63
72
  - Rakefile
64
73
  - lib/omniauth-pam.rb
65
74
  - lib/omniauth-pam/version.rb
66
- - lib/omniauth/stategies/pam.rb
75
+ - lib/omniauth/strategies/pam.rb
67
76
  - omniauth-pam.gemspec
68
77
  has_rdoc: true
69
78
  homepage: https://github.com/nickcharlton/omniauth-pam
@@ -75,27 +84,23 @@ rdoc_options: []
75
84
  require_paths:
76
85
  - lib
77
86
  required_ruby_version: !ruby/object:Gem::Requirement
78
- none: false
79
87
  requirements:
80
88
  - - ">="
81
89
  - !ruby/object:Gem::Version
82
- hash: 3
83
90
  segments:
84
91
  - 0
85
92
  version: "0"
86
93
  required_rubygems_version: !ruby/object:Gem::Requirement
87
- none: false
88
94
  requirements:
89
95
  - - ">="
90
96
  - !ruby/object:Gem::Version
91
- hash: 3
92
97
  segments:
93
98
  - 0
94
99
  version: "0"
95
100
  requirements: []
96
101
 
97
102
  rubyforge_project: omniauth-pam
98
- rubygems_version: 1.6.2
103
+ rubygems_version: 1.3.6
99
104
  signing_key:
100
105
  specification_version: 3
101
106
  summary: A PAM strategy for OmniAuth.