Commit 7d1cef867e1325f623638366faeb5387a9261b0a
0 parents
Exists in
master
initial commit Noosfero Gravatar Provider Plugin
Showing
8 changed files
with
128 additions
and
0 deletions
Show diff stats
| 1 | +++ a/controllers/gravatar_provider_plugin_controller.rb | |
| ... | ... | @@ -0,0 +1,13 @@ |
| 1 | +class GravatarProviderPluginController < PublicController | |
| 2 | + append_view_path File.join(File.dirname(__FILE__) + '/../views') | |
| 3 | + def h | |
| 4 | + begin | |
| 5 | + user_hash = GravatarProviderPlugin::UserEmailHash.where(email_md5_hash: params[:id]).first | |
| 6 | + redirect_to profile_icon(user_hash.user.person, :thumb) | |
| 7 | + rescue Exception => e | |
| 8 | + Rails.logger.error "GravatarProviderPlugin:: Cannot find profile image for hash [#{params[:id]}]" | |
| 9 | + redirect_to '/plugins/gravatar_provider/images/nophoto.png' | |
| 10 | + end | |
| 11 | + end | |
| 12 | + | |
| 13 | +end | ... | ... |
db/migrate/20150611070000_create_gravatar_provider_plugin_user_emails_hashes_table.rb
0 → 100644
| 1 | +++ a/db/migrate/20150611070000_create_gravatar_provider_plugin_user_emails_hashes_table.rb | |
| ... | ... | @@ -0,0 +1,25 @@ |
| 1 | +class CreateGravatarProviderPluginUserEmailsHashesTable < ActiveRecord::Migration | |
| 2 | + def self.up | |
| 3 | + create_table :gravatar_provider_plugin_user_email_hashes do |t| | |
| 4 | + t.belongs_to :user | |
| 5 | + t.string :email_md5_hash | |
| 6 | + end | |
| 7 | + add_index( | |
| 8 | + :gravatar_provider_plugin_user_email_hashes, | |
| 9 | + [:email_md5_hash], | |
| 10 | + name: 'index_gravatar_provider_plugin_md5_hash' | |
| 11 | + ) | |
| 12 | + user_count = User.count | |
| 13 | + puts "Migrating #{user_count} user to table gravatar_provider_plugin_user_email_hashes..." | |
| 14 | + User.all.each do |user| | |
| 15 | + GravatarProviderPlugin::UserEmailHash.create! do |user_email_hash| | |
| 16 | + user_email_hash.user = user | |
| 17 | + user_email_hash.email_md5_hash = Digest::MD5.hexdigest(user.email) | |
| 18 | + end | |
| 19 | + end | |
| 20 | + puts "Migration gravatar_provider_plugin_user_email_hashes completed" | |
| 21 | + end | |
| 22 | + def self.down | |
| 23 | + drop_table :gravatar_provider_plugin_user_email_hashes | |
| 24 | + end | |
| 25 | +end | ... | ... |
| 1 | +++ a/lib/ext/user.rb | |
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +require_dependency 'user' | |
| 2 | +require 'digest/md5' | |
| 3 | + | |
| 4 | +User.class_eval do | |
| 5 | + | |
| 6 | + after_create :insert_email_hash | |
| 7 | + | |
| 8 | + def insert_email_hash | |
| 9 | + GravatarProviderPlugin::UserEmailHash.create! do |user_email_hash| | |
| 10 | + user_email_hash.user = self | |
| 11 | + user_email_hash.email_md5_hash = Digest::MD5.hexdigest(self.email) | |
| 12 | + end | |
| 13 | + end | |
| 14 | + | |
| 15 | +end | ... | ... |
| 1 | +++ a/lib/gravatar_provider_plugin.rb | |
| ... | ... | @@ -0,0 +1,15 @@ |
| 1 | +class GravatarProviderPlugin < Noosfero::Plugin | |
| 2 | + | |
| 3 | + def self.plugin_name | |
| 4 | + "GravatarProviderPlugin" | |
| 5 | + end | |
| 6 | + | |
| 7 | + def self.plugin_description | |
| 8 | + _("A plugin that enable noosfero as a gravatar server") | |
| 9 | + end | |
| 10 | + | |
| 11 | + def stylesheet? | |
| 12 | + true | |
| 13 | + end | |
| 14 | + | |
| 15 | +end | ... | ... |
1.14 KB
test/functional/gravatar_provider_plugin_controller_test.rb
0 → 100644
| 1 | +++ a/test/functional/gravatar_provider_plugin_controller_test.rb | |
| ... | ... | @@ -0,0 +1,24 @@ |
| 1 | +require "test_helper" | |
| 2 | + | |
| 3 | +class GravatarProviderPluginControllerTest < ActionController::TestCase | |
| 4 | + fixtures :profiles, :environments, :users, :roles, :domains | |
| 5 | + | |
| 6 | + include ApplicationHelper | |
| 7 | + | |
| 8 | + def setup | |
| 9 | + user = create_user_full('testinguser') | |
| 10 | + @person = user.person | |
| 11 | + @user_email_hash = GravatarProviderPlugin::UserEmailHash.where(user_id: user.id).first | |
| 12 | + end | |
| 13 | + | |
| 14 | + def current_theme | |
| 15 | + 'default' | |
| 16 | + end | |
| 17 | + | |
| 18 | + def test_index_should_redirect_to_user_image | |
| 19 | + get :h, {id: @user_email_hash.email_md5_hash} | |
| 20 | + assert_redirected_to profile_icon(@person, :thumb) | |
| 21 | + end | |
| 22 | + | |
| 23 | + | |
| 24 | +end | ... | ... |
| 1 | +++ a/test/unit/user_email_hash_test.rb | |
| ... | ... | @@ -0,0 +1,28 @@ |
| 1 | +require "test_helper" | |
| 2 | + | |
| 3 | +class UserEmailHashTest < ActiveSupport::TestCase | |
| 4 | + fixtures :profiles, :environments, :users, :roles, :domains | |
| 5 | + | |
| 6 | + def setup | |
| 7 | + @user_email_hash = GravatarProviderPlugin::UserEmailHash.new | |
| 8 | + end | |
| 9 | + | |
| 10 | + should 'not save without user' do | |
| 11 | + assert !@user_email_hash.save | |
| 12 | + end | |
| 13 | + | |
| 14 | + should 'require user' do | |
| 15 | + @user_email_hash.save | |
| 16 | + assert @user_email_hash.errors[:user].present? | |
| 17 | + end | |
| 18 | + | |
| 19 | + should 'require email_md5_hash' do | |
| 20 | + @user_email_hash.save | |
| 21 | + assert @user_email_hash.errors[:email_md5_hash].present? | |
| 22 | + end | |
| 23 | + | |
| 24 | + should 'have user_email_hash record crerated after user creation' do | |
| 25 | + user = create_user_full 'mytestuser' | |
| 26 | + assert GravatarProviderPlugin::UserEmailHash.where(user_id: user.id).count.eql?(1) | |
| 27 | + end | |
| 28 | +end | ... | ... |