notebook/app/controllers/users_controller.rb
2018-09-16 21:17:44 -05:00

58 lines
1.9 KiB
Ruby

class UsersController < ApplicationController
def index
redirect_to new_session_path(User)
end
def show
@user = User.find(params[:id])
@content = @user.public_content.select { |type, list| list.any? }
@tabs = @content.keys
@stream = ContentChangeEvent.where(user_id: @user.id).order('id desc').limit(100)
Mixpanel::Tracker.new(Rails.application.config.mixpanel_token).track(@user.id, 'viewed profile', {
'sharing any content': @user.public_content_count != 0
}) if Rails.env.production?
end
Rails.application.config.content_types[:all].each do |content_type|
content_type_name = content_type.name.downcase.pluralize.to_sym # :characters, :items, etc
define_method content_type_name do
@content_type = content_type
@user = User.find(params[:id])
@content_list = @user.send(content_type_name).is_public.order(:name)
render :content_list
end
end
def delete_my_account # :(
unless user_signed_in?
redirect_to(root_path, notice: "You must be signed in to do that!")
return
end
# Make sure the user is set to Starter on Stripe so we don't keep charging them
stripe_customer = Stripe::Customer.retrieve current_user.stripe_customer_id
stripe_subscription = stripe_customer.subscriptions.data[0]
stripe_subscription.plan = 'starter'
stripe_subscription.save
report_user_deletion_to_slack(current_user)
current_user.really_destroy!
redirect_to(root_path, notice: 'Your account has been deleted. We will miss you greatly!')
end
def report_user_deletion_to_slack user
return unless Rails.env == 'production'
slack_hook = ENV['SLACK_HOOK']
return unless slack_hook
notifier = Slack::Notifier.new slack_hook,
channel: '#analytics',
username: 'tristan'
notifier.ping ":bomb: :bomb: :bomb: #{user.email.split('@').first}@ (##{user.id}) just deleted their account."
end
end