omniauth-heroku 0.0.4 → 0.1.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.
- data/README.md +63 -3
- data/lib/omniauth/strategies/heroku.rb +0 -19
- data/omniauth-heroku.gemspec +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -1,18 +1,78 @@
|
|
1
1
|
# OmniAuth Heroku
|
2
2
|
|
3
|
-
OmniAuth strategy for authenticating to Heroku.
|
3
|
+
[OmniAuth](https://github.com/intridea/omniauth) strategy for authenticating to Heroku.
|
4
4
|
|
5
5
|
Heroku's support for OAuth is still private/experimental.
|
6
6
|
|
7
7
|
|
8
|
-
##
|
8
|
+
## Configuration
|
9
|
+
|
10
|
+
OmniAuth works as a Rack middleware. Mount this Heroku adapter with:
|
9
11
|
|
10
12
|
```ruby
|
11
13
|
use OmniAuth::Builder do
|
12
|
-
provider :heroku, ENV['
|
14
|
+
provider :heroku, ENV['HEROKU_ID'], ENV['HEROKU_SECRET']
|
15
|
+
end
|
16
|
+
```
|
17
|
+
|
18
|
+
Your Heroku OAuth client should be set to receive callbacks on `/auth/heroku/callback`.
|
19
|
+
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
|
23
|
+
Initiate the OAuth flow sending users to `/auth/heroku`.
|
24
|
+
|
25
|
+
Once the authorization flow is complete and the user is bounced back to your application, check `env["omniauth.auth"]["credentials"]`. It contains both a refresh token and an access token (identified just as `"token"`) to the account.
|
26
|
+
|
27
|
+
We recommend using this access token together with [Heroku.rb](https://github.com/heroku/heroku.rb) to make API calls on behalf of the user.
|
28
|
+
|
29
|
+
|
30
|
+
## Example - Rails
|
31
|
+
|
32
|
+
Under `config/initializers/omniauth.rb`:
|
33
|
+
|
34
|
+
```ruby
|
35
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
36
|
+
provider :heroku, ENV['HEROKU_ID'], ENV['HEROKU_SECRET']
|
13
37
|
end
|
14
38
|
```
|
15
39
|
|
40
|
+
Then add to `config/routes.rb`:
|
41
|
+
|
42
|
+
```ruby
|
43
|
+
Example::Application.routes.draw do
|
44
|
+
get "login" => "sessions#new"
|
45
|
+
get "/auth/:provider/callback" => "sessions#create"
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
Controller support:
|
50
|
+
|
51
|
+
```ruby
|
52
|
+
class SessionsController < ApplicationController
|
53
|
+
def new
|
54
|
+
redirect_to "/auth/heroku"
|
55
|
+
end
|
56
|
+
|
57
|
+
def create
|
58
|
+
access_token = request.env['omniauth.auth']['credentials']['token']
|
59
|
+
heroku_api = Heroku::API.new(:api_key => access_token)
|
60
|
+
@apps = api.get_apps.body
|
61
|
+
end
|
62
|
+
end
|
63
|
+
```
|
64
|
+
|
65
|
+
And view:
|
66
|
+
|
67
|
+
```erb
|
68
|
+
<h1>Your Heroku apps:</h1>
|
69
|
+
|
70
|
+
<ul>
|
71
|
+
<% @apps.each do |app| %>
|
72
|
+
<li><%= app["name"] %></li>
|
73
|
+
<% end %>
|
74
|
+
</ul>
|
75
|
+
```
|
16
76
|
|
17
77
|
## Meta
|
18
78
|
|
@@ -10,25 +10,6 @@ module OmniAuth
|
|
10
10
|
:authorize_url => "#{BaseAuthUrl}/oauth/authorize",
|
11
11
|
:token_url => "#{BaseAuthUrl}/oauth/token"
|
12
12
|
}
|
13
|
-
|
14
|
-
def request_phase
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
uid { raw_info['id'] }
|
19
|
-
|
20
|
-
info do
|
21
|
-
{ 'email' => raw_info['email'] }
|
22
|
-
end
|
23
|
-
|
24
|
-
extra do
|
25
|
-
{ 'raw_info' => raw_info }
|
26
|
-
end
|
27
|
-
|
28
|
-
def raw_info
|
29
|
-
access_token.options[:mode] = :header
|
30
|
-
@raw_info ||= access_token.get('/account').parsed
|
31
|
-
end
|
32
13
|
end
|
33
14
|
end
|
34
15
|
end
|
data/omniauth-heroku.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |gem|
|
|
9
9
|
gem.files = `git ls-files`.split("\n")
|
10
10
|
gem.name = "omniauth-heroku"
|
11
11
|
gem.require_paths = ["lib"]
|
12
|
-
gem.version = "0.0
|
12
|
+
gem.version = "0.1.0"
|
13
13
|
|
14
14
|
gem.add_dependency 'omniauth', '~> 1.0'
|
15
15
|
gem.add_dependency 'omniauth-oauth2', '~> 1.0'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-02-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: omniauth
|
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
77
|
version: '0'
|
78
78
|
requirements: []
|
79
79
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.8.
|
80
|
+
rubygems_version: 1.8.24
|
81
81
|
signing_key:
|
82
82
|
specification_version: 3
|
83
83
|
summary: OmniAuth strategy for Heroku.
|