Retrospring/app/controllers/services_controller.rb

70 lines
1.8 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2014-12-12 12:43:09 -08:00
class ServicesController < ApplicationController
2014-12-12 12:43:09 -08:00
before_action :authenticate_user!
before_action :mark_notifications_as_read, only: %i[index]
2014-12-12 12:43:09 -08:00
def index
@services = current_user.services
end
def create
service = Service.initialize_from_omniauth(omniauth_hash)
service.user = current_user
service_name = service.type.split("::").last.titleize
2014-12-12 12:43:09 -08:00
if service.save
flash[:success] = t(".success", service: service_name)
2014-12-12 12:43:09 -08:00
else
flash[:error] = if service.errors.details[:uid]&.any? { |err| err[:error] == :taken }
t(".duplicate", service: service_name, app: APP_CONFIG["site_name"])
else
t(".error", service: service_name)
end
2014-12-12 12:43:09 -08:00
end
redirect_to origin || services_path
2014-12-12 12:43:09 -08:00
end
def update
service = current_user.services.find(params[:id])
service.post_tag = params[:service][:post_tag].tr("@", "")
if service.save
flash[:success] = t(".success")
else
flash[:error] = t(".error")
end
redirect_to services_path
end
2014-12-12 12:43:09 -08:00
def failure
Rails.logger.info "oauth error: #{params.inspect}"
flash[:error] = t(".error")
2014-12-12 12:43:09 -08:00
redirect_to services_path
end
def destroy
@service = current_user.services.find(params[:id])
service_name = @service.type.split("::").last.titleize
2014-12-12 12:43:09 -08:00
@service.destroy
flash[:success] = t(".success", service: service_name)
2014-12-12 12:43:09 -08:00
redirect_to services_path
end
2014-12-12 13:35:23 -08:00
private
def origin
request.env["omniauth.origin"]
end
2014-12-12 13:35:23 -08:00
def omniauth_hash
request.env["omniauth.auth"]
end
def mark_notifications_as_read
Notification::ServiceTokenExpired
.where(recipient: current_user, new: true)
.update_all(new: false) # rubocop:disable Rails/SkipsModelValidations
end
2014-12-12 12:43:09 -08:00
end