Commit 5063224a77188c41768b039730cb67ce4895e24a

Authored by Antonio Terceiro
2 parents 5755b947 6a9c0495
Exists in master and in 79 other branches add_sisp_to_chef, add_super_archives_plugin, api_for_colab, automates_core_packing, backup_not_prod, changes_in_buttons_on_content_panel, colab_automated_login, colab_spb_plugin_recipe, colab_widgets_settings, design_validation, dev_env_minimal, disable_email_dev, fix_breadcrumbs_position, fix_categories_software_link, fix_edit_institution, fix_edit_software_with_another_license, fix_get_license_info, fix_gitlab_assets_permission, fix_list_style_inside_article, fix_list_style_on_folder_elements, fix_members_pagination, fix_merge_request_url, fix_models_translations, fix_no_license, fix_software_api, fix_software_block_migration, fix_software_communities_translations, fix_software_communities_unit_test, fix_style_create_institution_admin_panel, fix_superarchives_imports, fix_sym_links_noosfero, focus_search_field_theme, gov-user-refactoring, gov-user-refactoring-rails4, header_fix, institution_modal_on_rating, kalibro-conf-refactoring, kalibro-processor-package, lxc_settings, margin_fix, mezuro_cookbook, prezento, refactor_download_block, refactor_software_communities, refactor_software_for_sisp, register_page, release-process, release-process-v2, remove-unused-images, remove_broken_theme, remove_secondary_email_from_user, remove_sisp_buttons, removing_super_archives_email, review_message, scope2method, signals_user_noosfero, sisp_catalog_header, sisp_colab_config, sisp_dev, sisp_dev_master, sisp_simple_version, software_as_organization, software_catalog_style_fix, software_communities_html_refactor, software_infos_api, spb_minimal_env, spb_to_rails4, spec_refactor, stable-4.1, stable-4.2, stable-4.x, temp_soft_comm_refactoring, theme_header, theme_javascript_refactory, thread_dropdown, thread_page, update_search_by_categories, update_software_api, update_softwares_boxes

Merge branch 'noosfero-token'

This implements creating an user in the Noosfero dabatase, an grabbing
its API key for use in the Colab Noosfero plugin
Rakefile
... ... @@ -136,6 +136,7 @@ task :bootstrap_common => 'config/local/ssh_config'
136 136  
137 137 unless ENV['nodeps']
138 138 task 'converge:integration' => 'converge:database'
  139 + task 'converge:integration' => 'converge:social'
139 140 task 'converge:social' => 'converge:database'
140 141 end
141 142  
... ...
cookbooks/colab/recipes/default.rb
... ... @@ -148,6 +148,10 @@ template '/etc/colab/plugins.d/noosfero.py' do
148 148 group 'colab'
149 149 mode 0640
150 150 notifies :restart, 'service[colab]'
  151 + get_private_token = lambda do
  152 + `psql --tuples-only --host database --user colab -c "select private_token from users where login = 'admin-noosfero'" noosfero`.strip
  153 + end
  154 + variables(:get_private_token => get_private_token)
151 155 end
152 156  
153 157 template '/etc/colab/plugins.d/spb.py' do
... ...
cookbooks/colab/templates/noosfero.py.erb
... ... @@ -10,6 +10,8 @@ verbose_name = 'Noosfero Plugin'
10 10  
11 11 upstream = 'http://<%= node['peers']['social'] %>:80/social/'
12 12  
  13 +private_token = '<%= @get_private_token.call %>'
  14 +
13 15 urls = {
14 16 'include': 'colab_noosfero.urls',
15 17 'namespace': 'noosfero', # TODO: do not allow to change namespace
... ...
cookbooks/noosfero/files/noosfero-create-api-user 0 → 100644
... ... @@ -0,0 +1,17 @@
  1 +#!/usr/bin/env ruby
  2 +
  3 +login = ARGV[0]
  4 +email = ARGV[1]
  5 +password = SecureRandom.random_number.to_s
  6 +
  7 +user = User.find_by_login(login)
  8 +exit(0) if user
  9 +
  10 +user = User.create!(
  11 + login: login,
  12 + email: email,
  13 + password: password,
  14 + password_confirmation: password
  15 +)
  16 +user.activate
  17 +user.generate_private_token_if_not_exist
... ...
cookbooks/noosfero/recipes/default.rb
... ... @@ -51,17 +51,24 @@ execute &#39;plugins:enable&#39; do
51 51 command '/usr/lib/noosfero/script/noosfero-plugins enable ' + plugins.join(' ')
52 52 end
53 53  
  54 +plugins_spb = [
  55 + 'software_communities',
  56 + 'gov_user',
  57 + 'spb_migrations',
  58 +]
  59 +
  60 +# HACK disable plugins_spb before migrating
  61 +# FIXME fix the plugins to not depend on other pugins
  62 +execute 'noosfero:plugins_spb:disable' do
  63 + command '/usr/lib/noosfero/script/noosfero-plugins disable ' + plugins_spb.join(' ')
  64 +end
  65 +
54 66 execute 'noosfero:migrate' do
55 67 command 'RAILS_ENV=production SCHEMA=/dev/null bundle exec rake db:migrate'
56 68 cwd '/usr/lib/noosfero'
57 69 user 'noosfero'
58 70 end
59 71  
60   -plugins_spb = [
61   - 'software_communities',
62   - 'gov_user',
63   - 'spb_migrations',
64   -]
65 72  
66 73 #FIXME: We did it, because we have to enable each plugin and migrate it separately.
67 74 plugins_spb.each do |plugin|
... ... @@ -127,6 +134,21 @@ cookbook_file &#39;/usr/lib/noosfero/config/noosfero.yml&#39; do
127 134 source 'noosfero.yml'
128 135 notifies :restart, 'service[noosfero]'
129 136 end
  137 +
  138 +cookbook_file "/usr/local/bin/noosfero-create-api-user" do
  139 + mode 0755
  140 +end
  141 +
  142 +execute 'create-admin-token-noosfero' do
  143 + command [
  144 + "RAILS_ENV=production bundle exec rails runner",
  145 + "/usr/local/bin/noosfero-create-api-user",
  146 + "admin-noosfero", # username
  147 + "noosfero@localhost.localdomain", # email
  148 + ].join(' ')
  149 + cwd '/usr/lib/noosfero'
  150 + user 'noosfero'
  151 +end
130 152 ###############################################
131 153 # SELinux: permission to access static files noosfero
132 154 ################################################
... ...
cookbooks/postgresql/recipes/noosfero.rb
... ... @@ -14,3 +14,7 @@ execute &#39;createdb:noosfero&#39; do
14 14 end
15 15 end
16 16  
  17 +execute 'grant:noosfero:colab' do
  18 + command 'psql -c "GRANT SELECT ON users TO colab" noosfero'
  19 + user 'postgres'
  20 +end
... ...
cookbooks/postgresql/templates/centos/pg_hba.conf.erb
... ... @@ -10,3 +10,4 @@ host all all ::1/128 ident
10 10 host colab colab <%= node['peers']['integration'] %>/32 trust
11 11 host gitlab gitlab <%= node['peers']['integration'] %>/32 trust
12 12 host noosfero noosfero <%= node['peers']['social'] %>/32 trust
  13 +host noosfero colab <%= node['peers']['integration'] %>/32 trust
... ...
roles/database_server.rb
... ... @@ -3,7 +3,7 @@ description &#39;Database server&#39;
3 3 run_list *[
4 4 'recipe[postgresql]',
5 5 'recipe[redis]',
6   - 'recipe[postgresql::colab]',
7   - 'recipe[postgresql::gitlab]',
  6 + 'recipe[postgresql::colab]', # must come before the other apps
8 7 'recipe[postgresql::noosfero]',
  8 + 'recipe[postgresql::gitlab]',
9 9 ]
... ...