Commit e34ffc64349091f9c78d595f66ad15faef95fdd6

Authored by Caio Almeida
2 parents 18406b23 ba577a75

Merge branch 'master' of gitlab.com:noosfero/noosfero

plugins/oauth_client/Gemfile
1 1 gem 'omniauth', '~> 1.2.2'
2 2 gem 'omniauth-facebook', '~> 2.0.0'
  3 +gem 'omniauth-twitter', '~> 1.0.1'
3 4 gem "omniauth-google-oauth2", '~> 0.2.6'
4 5 gem "omniauth-oauth2", '~> 1.3.1'
  6 +gem "omniauth-github", '~> 1.1.2'
... ...
plugins/oauth_client/README.md
... ... @@ -33,6 +33,20 @@ Facebook
33 33  
34 34 [Create Facebook application](https://developers.facebook.com/docs/facebook-login/v2.1)
35 35  
  36 +Github
  37 +--------
  38 +
  39 +[Create Github application](https://github.com/settings/developers)
  40 +
  41 +Twitter
  42 +--------
  43 +
  44 +- Specially on twitter you need to request user's email address, see more
  45 +in https://dev.twitter.com/rest/reference/get/account/verify_credentials
  46 +
  47 +[Create Twitter application](https://apps.twitter.com/)
  48 +
  49 +
36 50 Callback
37 51 ========
38 52  
... ...
plugins/oauth_client/features/create_provider.feature 0 → 100644
... ... @@ -0,0 +1,20 @@
  1 +Feature: Create Twitter provider
  2 + As a environment admin
  3 + I want to be able to create a new twitter provider
  4 + So that users can login wth different strategies
  5 +
  6 +Background:
  7 + Given "OauthProvider" plugin is enabled
  8 + And I am logged in as admin
  9 + And I go to /admin/plugins
  10 + And I check "Oauth Client Plugin"
  11 + And I press "Save changes"
  12 +
  13 +Scenario: Create a twitter provider
  14 + Given I go to /admin/plugin/oauth_client/new
  15 + And I fill in "oauth_client_plugin_provider_name" with "myid"
  16 + And I fill in "oauth_client_plugin_provider[name]" with "google"
  17 + And I fill in "oauth_client_plugin_provider_client_secret" with "mysecret"
  18 + And I check "oauth_client_plugin_provider[enabled]"
  19 + And I select "twitter" from "oauth_client_plugin_provider_strategy"
  20 + Then I should see "To use this provider you need to request the user email in your app"
... ...
plugins/oauth_client/lib/oauth_client_plugin.rb
... ... @@ -31,13 +31,20 @@ class OauthClientPlugin < Noosfero::Plugin
31 31  
32 32 PROVIDERS = {
33 33 :facebook => {
34   - :name => 'Facebook'
  34 + :name => 'Facebook',
  35 + :info_fields => 'name,email'
35 36 },
36 37 :google_oauth2 => {
37 38 :name => 'Google'
38 39 },
39 40 :noosfero_oauth2 => {
40 41 :name => 'Noosfero'
  42 + },
  43 + :github => {
  44 + :name => 'Github'
  45 + },
  46 + :twitter => {
  47 + :name => 'Twitter'
41 48 }
42 49 }
43 50  
... ... @@ -62,8 +69,9 @@ class OauthClientPlugin < Noosfero::Plugin
62 69 provider_id = request.params['id']
63 70 provider_id ||= request.session['omniauth.params']['id'] if request.session['omniauth.params']
64 71 provider = environment.oauth_providers.find(provider_id)
  72 + strategy.options.merge! consumer_key: provider.client_id, consumer_secret: provider.client_secret
65 73 strategy.options.merge! client_id: provider.client_id, client_secret: provider.client_secret
66   - strategy.options.merge! provider.options.symbolize_keys
  74 + strategy.options.merge! options
67 75  
68 76 request.session[:provider_id] = provider_id
69 77 }
... ... @@ -95,4 +103,8 @@ class OauthClientPlugin < Noosfero::Plugin
95 103 }
96 104 end
97 105  
  106 + def js_files
  107 + ["script.js"]
  108 + end
  109 +
98 110 end
... ...
plugins/oauth_client/public/script.js 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +$(document).ready(function(){
  2 + select_box_event();
  3 +});
  4 +
  5 +var toggle_info_message = function(){
  6 + var selected_option = $("#oauth_client_plugin_provider_strategy option:selected");
  7 + if (selected_option.length){
  8 + if (selected_option.val() === "twitter"){
  9 + $(".remember-enable-email").removeClass("hidden");
  10 + } else {
  11 + $(".remember-enable-email").addClass("hidden");
  12 + }
  13 + }
  14 +};
  15 +
  16 +var select_box_event = function(){
  17 + var select_box = $("#oauth_client_plugin_provider_strategy");
  18 + select_box.on("change",function(){
  19 + toggle_info_message();
  20 + });
  21 +};
... ...
plugins/oauth_client/public/style.css
... ... @@ -16,3 +16,7 @@
16 16 .oauth-login .provider .developer {
17 17 display: none;
18 18 }
  19 +
  20 +.remember-enable-email.hidden {
  21 + display: none;
  22 +}
... ...
plugins/oauth_client/views/oauth_client_plugin_admin/edit.html.erb
... ... @@ -15,6 +15,10 @@
15 15 <%= labelled_form_field _('Strategy'), f.select(:strategy, OauthClientPlugin::PROVIDERS) %>
16 16 </div>
17 17  
  18 + <div class="remember-enable-email hidden">
  19 + <span class="error"><%=_('To use this provider you need to request the user email in your app')%></span>
  20 + </div>
  21 +
18 22 <div class="client-id">
19 23 <%= labelled_form_field _('Client Id'), f.text_field(:client_id) %>
20 24 </div>
... ...
plugins/work_assignment/lib/work_assignment_plugin/email_contact.rb
... ... @@ -50,13 +50,13 @@ class WorkAssignmentPlugin::EmailContact
50 50 mail(options)
51 51 end
52 52  
53   - def build_mail_message(email_contact, uploaded_files)
  53 + def self.build_mail_message(email_contact, uploaded_files)
54 54 message = ""
55 55 if uploaded_files && uploaded_files.first && uploaded_files.first.parent && uploaded_files.first.parent.parent
56 56 article = uploaded_files.first.parent.parent
57 57 message = article.default_email + "<br>"
58 58 uploaded_files.each do |file|
59   - url = url_for(file.url)
  59 + url = Rails.application.routes.url_helpers.url_for(file.url)
60 60 message += "<br><a href='#{url}'>#{url}</a>"
61 61 end
62 62 end
... ...
plugins/work_assignment/lib/work_assignment_plugin/helper.rb
... ... @@ -16,7 +16,7 @@ module WorkAssignmentPlugin::Helper
16 16 end
17 17  
18 18 def display_author_folder(author_folder, user)
19   - return if author_folder.children.empty?
  19 + return if author_folder.children(true).empty?
20 20 content_tag('tr',
21 21 content_tag('td', link_to_last_submission(author_folder, user)) +
22 22 content_tag('td', time_format(author_folder.children.last.created_at)) +
... ...
plugins/work_assignment/test/functional/content_viewer_controller_test.rb
... ... @@ -35,6 +35,14 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
35 35 assert_response :success
36 36 end
37 37  
  38 + should 'display users submissions' do
  39 + folder = work_assignment.find_or_create_author_folder(@person)
  40 + submission = UploadedFile.create!(:uploaded_data => fixture_file_upload('/files/rails.png', 'image/png'), :profile => organization, :parent => folder)
  41 + get :view_page, :profile => @organization.identifier, :page => work_assignment.path
  42 + assert_response :success
  43 + assert_match /rails.png/, @response.body
  44 + end
  45 +
38 46 should "display 'Upload files' when create children of image gallery" do
39 47 login_as(profile.identifier)
40 48 f = Gallery.create!(:name => 'gallery', :profile => profile)
... ...
po/pt/noosfero.po
... ... @@ -13,8 +13,8 @@ msgid &quot;&quot;
13 13 msgstr ""
14 14 "Project-Id-Version: 1.3~rc2-8-g01ea9f7\n"
15 15 "POT-Creation-Date: 2015-11-04 12:36-0300\n"
16   -"PO-Revision-Date: 2016-03-14 15:58+0000\n"
17   -"Last-Translator: Eduardo Vital <vitaldu@gmail.com>\n"
  16 +"PO-Revision-Date: 2016-06-20 20:14+0000\n"
  17 +"Last-Translator: Gabriel Silva <gabriel93.silva@gmail.com>\n"
18 18 "Language-Team: Portuguese "
19 19 "<https://hosted.weblate.org/projects/noosfero/noosfero/pt/>\n"
20 20 "Language: pt\n"
... ... @@ -22,7 +22,7 @@ msgstr &quot;&quot;
22 22 "Content-Type: text/plain; charset=UTF-8\n"
23 23 "Content-Transfer-Encoding: 8bit\n"
24 24 "Plural-Forms: nplurals=2; plural=n != 1;\n"
25   -"X-Generator: Weblate 2.5\n"
  25 +"X-Generator: Weblate 2.7-dev\n"
26 26  
27 27 #: app/models/approve_comment.rb:17
28 28 msgid "Anonymous"
... ... @@ -4141,7 +4141,7 @@ msgstr &quot;%s não pôde ser desabilitado&quot;
4141 4141  
4142 4142 #: app/controllers/admin/organizations_controller.rb:52
4143 4143 msgid "%s removed"
4144   -msgstr "% foi removido"
  4144 +msgstr "%s foi removido"
4145 4145  
4146 4146 #: app/controllers/admin/organizations_controller.rb:54
4147 4147 msgid "%s could not be removed"
... ...