omniauth-zimbraadmin 0.0.3.3 → 0.0.3.22

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bdea3f0e3115ccf48af1f2c8f213406f265f1841
4
- data.tar.gz: 514fe34e663ecdc0d412b1f0d03ba19cf1184e1c
3
+ metadata.gz: 6302a7098ae528cdd6e2cc9e24b4faf2f5a9d034
4
+ data.tar.gz: 80b381e1e2a38b4a25a260fbe46c585f9d92c4cf
5
5
  SHA512:
6
- metadata.gz: 68fc79a9c4fe862a9c844cc0b1c8c3f1d96f9bcf8d5dc495f842a3d32d5a0b396ab3dfebaf1b4de3491d72b7b4a7d5133c1395caa33fb43115c494a150f9e9be
7
- data.tar.gz: e240f2be30df92bd0202eac377d2323277784f437012521a2724b68668f7e483255b8e910184b5d6fdd0fce6d15b7b556e35b628d5712cc880dc91eaa65d9f9b
6
+ metadata.gz: aed9841d02b29cc6789147dbc9aadb91bb181a7c74f42aee8cba72ac36ab9ec0181cce30d6f85269e79a9f2c3b63928653af6ca7a51d288dc6e63669495eae99
7
+ data.tar.gz: 77265213f8e7eec8b9ecf35e6f8168f35ad3bc31ce1f71a5e71e175cd16bdcf99b3db523326f353fe517d655d24b4545a31a8f94034cfc1123e42e4a4fd39185
data/README.md CHANGED
@@ -1,24 +1,54 @@
1
- # Omniauth::Zimbra
1
+ # Omniauth::ZimbraAdmin
2
2
 
3
- TODO: Write a gem description
3
+ OmniAuth strategy for authenticate against a [Zimbra Server](http://www.zimbra.com) as a `Global` or `Domain` admin using the [SOAP Api](https://wiki.zimbra.com/wiki/SOAP_API_Reference_Material_Beginning_with_ZCS_8).
4
+
5
+ You'll need access to the Zimbra Admin Port, `7071` or `9071` if using Proxy, for this to work.
6
+
7
+ By the default this Gem returns the following information after a succesfully login:
8
+
9
+ * Email address of the logged user as the `request.env["omniauth.auth"].uid`
10
+ * `request.env["omniauth.auth"].credentials.token` with the `ZM_AUTH_TOKEN` given by Zimbra.
4
11
 
5
12
  ## Installation
6
13
 
7
- Add this line to your application's Gemfile:
14
+ Add this lines to your application's Gemfile:
8
15
 
9
- gem 'omniauth-zimbra'
16
+ gem 'zimbra', :github => 'pbruna/ruby-zimbra', :branch => :master
17
+ gem 'omniauth-zimbraadmin'
10
18
 
11
19
  And then execute:
12
20
 
13
21
  $ bundle
14
22
 
15
- Or install it yourself as:
16
-
17
- $ gem install omniauth-zimbra
23
+ **Note:** You will need my version of the [zimbra gem](https://github.com/pbruna/ruby-zimbra) for the moment.
18
24
 
19
25
  ## Usage
20
26
 
21
- TODO: Write usage instructions here
27
+ Add :zimbraadmin provider to omniauth builder:
28
+
29
+ ```ruby
30
+ use OmniAuth::Builder do
31
+ provider :zimbraadmin, "https://zimbra.example.com:7071/service/admin/soap"
32
+ end
33
+ ```
34
+
35
+ Example for Rails with complete options:
36
+
37
+ ```ruby
38
+ endpoint = "https://mail.example.com:9071/service/admin/soap"
39
+
40
+ Rails.application.config.middleware.use OmniAuth::Builder do
41
+ provider :zimbraadmin, :endpoint => endpoint, :debug => true, :new_session_path => "/sessions/new",
42
+ :zimbra_attributes => ["zimbraId", "mail", "displayName", "zimbraMailAlias"]
43
+ end
44
+
45
+ OmniAuth.config.logger = Rails.logger
46
+ ```
47
+
48
+ About the options:
49
+
50
+ * `new_session_path`, is the path with the login form
51
+ * `zimbra_attributes`, extra Zimbra information that will be returned in the `extra` element of the Omniauth [Auth Hash Schema](https://github.com/intridea/omniauth/wiki/Auth-Hash-Schema)
22
52
 
23
53
  ## Contributing
24
54
 
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module ZimbraAdmin
3
- VERSION = "0.0.3.3"
3
+ VERSION = "0.0.3.22"
4
4
  end
5
5
  end
@@ -9,21 +9,37 @@ module OmniAuth
9
9
  args [:endpoint]
10
10
 
11
11
  option :title, "Zimbra Admin Auth"
12
+ option :name, "zimbraadmin"
13
+ option :fields, [:name, :email]
14
+ option :zimbra_attributes, %w( displayName )
12
15
  option :debug, false
16
+ option :new_session_path, "/sessions/new"
17
+ option :uid_field, :email
13
18
 
14
19
  def request_phase
15
- OmniAuth::Form.build(:title => options.title, :url => callback_path) do
16
- text_field 'Email', 'email'
17
- password_field 'Password', 'password'
18
- button "Sign In"
19
- end.to_response
20
+ redirect options[:new_session_path]
20
21
  end
21
-
22
+
22
23
  def callback_phase
23
- return fail!(:invalid_credentials) if !authentication_response
24
+ return fail!(:invalid_credentials) unless authentication_response
24
25
  super
25
26
  end
26
27
 
28
+ uid { username }
29
+
30
+ info do {
31
+ name: @authentication_response[:account_attrs]["displayName"]
32
+ }
33
+ end
34
+
35
+ credentials do
36
+ { :token => @authentication_response[:token] }
37
+ end
38
+
39
+ extra do
40
+ @authentication_response[:account_attrs]
41
+ end
42
+
27
43
  protected
28
44
 
29
45
  # by default we use static uri. If dynamic uri is required, override
@@ -31,34 +47,40 @@ module OmniAuth
31
47
  def endpoint
32
48
  options.endpoint
33
49
  end
34
-
50
+
35
51
  def debug
36
52
  options[:debug]
37
53
  end
38
54
 
39
55
  def username
40
- request['email']
56
+ request[:sessions]['email']
41
57
  end
42
58
 
43
59
  def password
44
- request['password']
60
+ request[:sessions]['password']
45
61
  end
46
62
 
47
63
  def authentication_response
48
64
  unless @authentication_response
49
65
  return unless username && password
50
-
51
- Zimbra.debug = debug
52
- Zimbra.admin_api_url = endpoint
53
- begin
54
- @authentication_response = Zimbra.reset_login(username, password)
55
- rescue Exception => e
56
- @authentication_response = false
57
- end
66
+ @authentication_response = login_and_data(username, password)
67
+ return unless @authentication_response
58
68
  end
59
-
60
69
  @authentication_response
61
70
  end
71
+
72
+ def login_and_data(username, password)
73
+ Zimbra.debug = debug
74
+ Zimbra.admin_api_url = endpoint
75
+ begin
76
+ token = Zimbra.reset_login(username, password)
77
+ account = Zimbra::Account.find_by_name username
78
+ account_attrs = account.get_attributes options[:zimbra_attributes]
79
+ {token: token, account: account, account_attrs: account_attrs}
80
+ rescue Exception => e
81
+ false
82
+ end
83
+ end
62
84
 
63
85
  end
64
86
  end
@@ -1,5 +1,5 @@
1
1
  require 'omniauth'
2
- require "omniauth-zimbra"
2
+ require "omniauth-zimbraadmin"
3
3
 
4
4
  require 'minitest/autorun'
5
5
  require 'minitest/reporters' # requires the gem
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-zimbraadmin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3.3
4
+ version: 0.0.3.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patricio Bruna
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-09 00:00:00.000000000 Z
11
+ date: 2015-04-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -101,7 +101,7 @@ files:
101
101
  - lib/omniauth-zimbraadmin.rb
102
102
  - lib/omniauth-zimbraadmin/version.rb
103
103
  - lib/omniauth/strategies/zimbra_admin.rb
104
- - omniauth-zimbra.gemspec
104
+ - omniauth-zimbraadmin.gemspec
105
105
  - test/test_helper.rb
106
106
  homepage: https://github.com/pbruna/omniauth-zimbra
107
107
  licenses: