Commit 80b76bb045b89e5552e1bef767ab1abe6f1f8a22
1 parent
6996df35
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
oauth_provider: added noosfero client
Showing
4 changed files
with
45 additions
and
4 deletions
Show diff stats
plugins/oauth_client/lib/oauth_client_plugin.rb
| 1 | +require 'omniauth/strategies/noosfero_oauth2' | |
| 2 | + | |
| 1 | 3 | class OauthClientPlugin < Noosfero::Plugin |
| 2 | 4 | |
| 3 | 5 | def self.plugin_name |
| ... | ... | @@ -39,6 +41,9 @@ class OauthClientPlugin < Noosfero::Plugin |
| 39 | 41 | }, |
| 40 | 42 | :google_oauth2 => { |
| 41 | 43 | :name => 'Google' |
| 44 | + }, | |
| 45 | + :noosfero_oauth2 => { | |
| 46 | + :name => 'Noosfero' | |
| 42 | 47 | } |
| 43 | 48 | } |
| 44 | 49 | ... | ... |
plugins/oauth_client/lib/omniauth/strategies/noosfero_oauth2.rb
0 → 100644
| ... | ... | @@ -0,0 +1,30 @@ |
| 1 | +require 'omniauth/strategies/oauth2' | |
| 2 | + | |
| 3 | +module OmniAuth | |
| 4 | + module Strategies | |
| 5 | + class NoosferoOauth2 < OmniAuth::Strategies::OAuth2 | |
| 6 | + option :name, :noosfero_oauth2 | |
| 7 | + | |
| 8 | + option :client_options, { | |
| 9 | + :site => "http://noosfero.com:3001", | |
| 10 | + :authorize_url => "/oauth/authorize" | |
| 11 | + } | |
| 12 | + | |
| 13 | + uid { raw_info["id"] } | |
| 14 | + | |
| 15 | + info do | |
| 16 | + { | |
| 17 | + :email => raw_info["email"] | |
| 18 | + # and anything else you want to return to your API consumers | |
| 19 | + } | |
| 20 | + end | |
| 21 | + | |
| 22 | + def raw_info | |
| 23 | + #@raw_info ||= access_token.get('/api/v1/me.json').parsed | |
| 24 | + #FIXME | |
| 25 | + #raise access_token.inspect | |
| 26 | + User['vfcosta'].attributes | |
| 27 | + end | |
| 28 | + end | |
| 29 | + end | |
| 30 | +end | ... | ... |
plugins/oauth_client/views/auth/_noosfero_oauth2.html.erb
0 → 100644
| ... | ... | @@ -0,0 +1 @@ |
| 1 | +<a class="noosfero_oauth2" href="/plugin/oauth_client/noosfero_oauth2"><%= _('Login with Noosfero') %></a> | ... | ... |
plugins/oauth_provider/lib/oauth_provider_plugin.rb
| ... | ... | @@ -13,17 +13,22 @@ class OauthProviderPlugin < Noosfero::Plugin |
| 13 | 13 | # Currently supported options are :active_record, :mongoid2, :mongoid3, :mongo_mapper |
| 14 | 14 | orm :active_record |
| 15 | 15 | |
| 16 | - domain = Domain.find_by_name(request.host) | |
| 17 | - environment = domain ? domain.environment : Environment.default | |
| 18 | - | |
| 19 | 16 | # This block will be called to check whether the resource owner is authenticated or not. |
| 20 | 17 | resource_owner_authenticator do |
| 18 | + domain = Domain.find_by_name(request.host) | |
| 19 | + environment = domain ? domain.environment : Environment.default | |
| 21 | 20 | environment.users.find_by_id(session[:user]) || redirect_to('/account/login') |
| 22 | 21 | end |
| 23 | 22 | |
| 24 | 23 | # If you want to restrict access to the web interface for adding oauth authorized applications, you need to declare the block below. |
| 25 | 24 | admin_authenticator do |
| 26 | - environment.users.find_by_id(session[:user]) || redirect_to('/account/login') | |
| 25 | + domain = Domain.find_by_name(request.host) | |
| 26 | + environment = domain ? domain.environment : Environment.default | |
| 27 | + user = environment.users.find_by_id(session[:user]) | |
| 28 | + unless user && user.person.is_admin?(environment) | |
| 29 | + redirect_to('/account/login') | |
| 30 | + end | |
| 31 | + user | |
| 27 | 32 | end |
| 28 | 33 | |
| 29 | 34 | # Authorization Code expiration time (default 10 minutes). | ... | ... |