Skip to content
Extraits de code Groupes Projets
Valider 92d3bb9c rédigé par Jonne Haß's avatar Jonne Haß
Parcourir les fichiers

Merge pull request #4252 from Raven24/diasp-feature/1283-coppa-admin

Admin: find users under the age of 13 (COPPA)
parents bcd3ceac 02be4a53
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
* Don't focus comment form on 'show n more comments' [#4265](https://github.com/diaspora/diaspora/issues/4265) * Don't focus comment form on 'show n more comments' [#4265](https://github.com/diaspora/diaspora/issues/4265)
## Features ## Features
* Admin: add option to find users under 13 (COPPA) [#4252](https://github.com/diaspora/diaspora/pull/4252)
# 0.1.1.0 # 0.1.1.0
......
...@@ -5,14 +5,16 @@ class AdminsController < ApplicationController ...@@ -5,14 +5,16 @@ class AdminsController < ApplicationController
def user_search def user_search
params[:user] ||= {} params[:user] ||= {}
params[:user].delete_if {|key, value| value.blank? } params[:user].delete_if {|key, value| value.blank? }
@users = params[:user].empty? ? [] : User.where(params[:user]) @users = User.joins(person: :profile).where(["profiles.birthday > ?", Date.today - 13.years]) if params[:under13]
@users = (@users || User).where(params[:user]) if params[:user].present?
@users ||= []
end end
def admin_inviter def admin_inviter
inviter = InvitationCode.default_inviter_or(current_user) inviter = InvitationCode.default_inviter_or(current_user)
email = params[:identifier] email = params[:identifier]
user = User.find_by_email(email) user = User.find_by_email(email)
unless user unless user
EmailInviter.new(email, inviter).send! EmailInviter.new(email, inviter).send!
flash[:notice] = "invitation sent to #{email}" flash[:notice] = "invitation sent to #{email}"
...@@ -30,14 +32,14 @@ class AdminsController < ApplicationController ...@@ -30,14 +32,14 @@ class AdminsController < ApplicationController
def weekly_user_stats def weekly_user_stats
@created_users = User.where("username IS NOT NULL and created_at IS NOT NULL") @created_users = User.where("username IS NOT NULL and created_at IS NOT NULL")
@created_users_by_week = Hash.new{ |h,k| h[k] = [] } @created_users_by_week = Hash.new{ |h,k| h[k] = [] }
@created_users.find_each do |u| @created_users.find_each do |u|
unless u.nil? unless u.nil?
@created_users_by_week[u.created_at.beginning_of_week.strftime("%Y-%m-%d")].push("#{u.username}") @created_users_by_week[u.created_at.beginning_of_week.strftime("%Y-%m-%d")].push("#{u.username}")
end end
end end
unless(params[:week]).nil? unless(params[:week]).nil?
# @segment = "#{@created_users_by_week[(params[:week])]}" # @segment = "#{@created_users_by_week[(params[:week])]}"
@counter = "#{@created_users_by_week[(params[:week])].count}" @counter = "#{@created_users_by_week[(params[:week])].count}"
else else
@counter = "" @counter = ""
......
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
= t('email') = t('email')
= text_field_tag 'user[email]', params[:user][:email] = text_field_tag 'user[email]', params[:user][:email]
= t('.under_13')
= check_box_tag 'under13', params[:under13]
= submit_tag t('admins.stats.go') = submit_tag t('admins.stats.go')
...@@ -38,7 +41,7 @@ ...@@ -38,7 +41,7 @@
= user.person.profile.inspect = user.person.profile.inspect
%br %br
= "invite token: #{invite_code_url(user.invited_by.invite_code)}" if user.invited_by.present? = "invite token: #{invite_code_url(user.invited_by.invite_code)}" if user.invited_by.present?
= link_to "add_invites", add_invites_path(user.invitation_code) = link_to t(".add_invites"), add_invites_path(user.invitation_code)
%br %br
%br %br
%br %br
...@@ -96,6 +96,7 @@ en: ...@@ -96,6 +96,7 @@ en:
you_currently: "you currently have %{user_invitation} invites left %{link}" you_currently: "you currently have %{user_invitation} invites left %{link}"
add_invites: "add invites" add_invites: "add invites"
email_to: "Email to Invite" email_to: "Email to Invite"
under_13: "Show users that are under 13 (COPPA)"
users: users:
zero: "%{count} users found" zero: "%{count} users found"
one: "%{count} user found" one: "%{count} user found"
......
...@@ -34,29 +34,44 @@ describe AdminsController do ...@@ -34,29 +34,44 @@ describe AdminsController do
assigns[:users].should == [] assigns[:users].should == []
end end
it 'should search on username' do it 'searches on username' do
get :user_search, :user => {:username => @user.username} get :user_search, :user => {:username => @user.username}
assigns[:users].should == [@user] assigns[:users].should == [@user]
end end
it 'should search on email' do it 'searches on email' do
get :user_search, :user => {:email => @user.email} get :user_search, :user => {:email => @user.email}
assigns[:users].should == [@user] assigns[:users].should == [@user]
end end
it 'should search on invitation_identifier' do it 'searches on invitation_identifier' do
@user.invitation_identifier = "La@foo.com" @user.invitation_identifier = "La@foo.com"
@user.save! @user.save!
get :user_search, :user => {:invitation_identifier => @user.invitation_identifier} get :user_search, :user => {:invitation_identifier => @user.invitation_identifier}
assigns[:users].should == [@user] assigns[:users].should == [@user]
end end
it 'should search on invitation_token' do it 'searches on invitation_token' do
@user.invitation_token = "akjsdhflhasdf" @user.invitation_token = "akjsdhflhasdf"
@user.save @user.save
get :user_search, :user => {:invitation_token => @user.invitation_token} get :user_search, :user => {:invitation_token => @user.invitation_token}
assigns[:users].should == [@user] assigns[:users].should == [@user]
end end
it 'searches on age < 13 (COPPA)' do
u_13 = FactoryGirl.create(:user)
u_13.profile.birthday = 10.years.ago.to_date
u_13.profile.save!
o_13 = FactoryGirl.create(:user)
o_13.profile.birthday = 20.years.ago.to_date
o_13.profile.save!
get :user_search, under13: true
assigns[:users].should include(u_13)
assigns[:users].should_not include(o_13)
end
end end
end end
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter