* blacklist email feature

This commit is contained in:
Seth Call 2016-03-01 13:49:58 -06:00
parent 1d532cc305
commit 54cbfc69f0
10 changed files with 84 additions and 3 deletions

View File

@ -0,0 +1,14 @@
ActiveAdmin.register JamRuby::EmailBlacklist, :as => 'Email Blacklist' do
menu :label => 'Email Blacklist', :parent => 'Operations'
config.sort_order = 'created_at desc'
config.batch_actions = false
index do
column :email
column :source
column :notes
column :created_at
end
end

View File

@ -337,3 +337,4 @@ add_sale_source_col.sql
jamblaster_v2.sql jamblaster_v2.sql
acapella_rename.sql acapella_rename.sql
jamblaster_pairing_active.sql jamblaster_pairing_active.sql
email_blacklist.sql

10
db/up/email_blacklist.sql Normal file
View File

@ -0,0 +1,10 @@
CREATE TABLE email_blacklists (
id VARCHAR(64) PRIMARY KEY DEFAULT uuid_generate_v4() NOT NULL,
email VARCHAR(1000) UNIQUE NOT NULL,
source VARCHAR(1000),
notes VARCHAR(1000),
created_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW() NOT NULL,
updated_at TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW() NOT NULL
);
ALTER TABLE jamblasters DROP COLUMN vtoken;

View File

@ -114,6 +114,7 @@ require "jam_ruby/models/machine_extra"
require "jam_ruby/models/download_tracker" require "jam_ruby/models/download_tracker"
require "jam_ruby/models/ip_blacklist" require "jam_ruby/models/ip_blacklist"
require "jam_ruby/models/user_blacklist" require "jam_ruby/models/user_blacklist"
require "jam_ruby/models/email_blacklist"
require "jam_ruby/models/ip_whitelist" require "jam_ruby/models/ip_whitelist"
require "jam_ruby/models/user_whitelist" require "jam_ruby/models/user_whitelist"
require "jam_ruby/models/fraud_alert" require "jam_ruby/models/fraud_alert"

View File

@ -0,0 +1,30 @@
module JamRuby
class EmailBlacklist < ActiveRecord::Base
attr_accessible :email, :source, :notes, as: :admin
@@log = Logging.logger[EmailBlacklist]
validates :email, uniqueness: true
def self.banned(user)
EmailBlacklist.count(:conditions => "email = '#{user.email.downcase}'") >= 1
end
def self.listed(user)
EmailBlacklist.count(:conditions => "email= '#{user.id}'") == 1
end
def self.admin_url
APP_CONFIG.admin_root_url + "/admin/email_blacklists/"
end
def admin_url
APP_CONFIG.admin_root_url + "/admin/email_blacklists/" + id
end
def to_s
user
end
end
end

View File

@ -12,7 +12,6 @@ module JamRuby
validates :user, presence: true validates :user, presence: true
validates :serial_no, uniqueness: true validates :serial_no, uniqueness: true
validates :vtoken, uniqueness: true
validates :client_id, uniqueness: true validates :client_id, uniqueness: true
before_save :sanitize_active_admin before_save :sanitize_active_admin

View File

@ -921,5 +921,9 @@ FactoryGirl.define do
factory :user_whitelist, class: "JamRuby::UserWhitelist" do factory :user_whitelist, class: "JamRuby::UserWhitelist" do
association :user, factory: :user association :user, factory: :user
end end
factory :email_blacklist, class: "JamRuby::EmailBlacklist" do
sequence(:email) { |n| "person_#{n}@example.com"}
end
end end

View File

@ -0,0 +1,17 @@
require 'spec_helper'
describe EmailBlacklist do
let(:user) { FactoryGirl.create(:user) }
describe "#banned" do
it "returns false if no ban" do
EmailBlacklist.banned(user).should eq false
end
it "returns true if banned" do
FactoryGirl.create(:email_blacklist, email: user.email)
EmailBlacklist.banned(user).should eq true
end
end
end

View File

@ -163,6 +163,11 @@ module SessionsHelper
return return
end end
if EmailBlacklist.banned(current_user)
Stats.write('web.blacklist.user', {value: 1, user_id: current_user.id})
render :json => { :message => "User blacklisted via email"}, :status => 403
end
if UserBlacklist.banned(current_user) if UserBlacklist.banned(current_user)
Stats.write('web.blacklist.user', {value: 1, user_id: current_user.id}) Stats.write('web.blacklist.user', {value: 1, user_id: current_user.id})
render :json => { :message => "User blacklisted"}, :status => 403 render :json => { :message => "User blacklisted"}, :status => 403

View File

@ -712,7 +712,7 @@ module JamWebsockets
end end
# we have to deal with jamblaster before login # we have to deal with jamblaster before login
if jamblaster_serial_no if jamblaster_serial_no && jamblaster_serial_no != ''
jamblaster = Jamblaster.find_by_serial_no(jamblaster_serial_no) jamblaster = Jamblaster.find_by_serial_no(jamblaster_serial_no)
if jamblaster if jamblaster
jamblaster.client_id = client_id jamblaster.client_id = client_id