mirror of
				https://github.com/lingble/chatwoot.git
				synced 2025-10-30 18:47:51 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| class Api::V1::Accounts::PortalsController < Api::V1::Accounts::BaseController
 | |
|   include ::FileTypeHelper
 | |
| 
 | |
|   before_action :fetch_portal, except: [:index, :create]
 | |
|   before_action :check_authorization
 | |
|   before_action :set_current_page, only: [:index]
 | |
| 
 | |
|   def index
 | |
|     @portals = Current.account.portals
 | |
|   end
 | |
| 
 | |
|   def add_members
 | |
|     agents = Current.account.agents.where(id: portal_member_params[:member_ids])
 | |
|     @portal.members << agents
 | |
|   end
 | |
| 
 | |
|   def show; end
 | |
| 
 | |
|   def create
 | |
|     @portal = Current.account.portals.build(portal_params)
 | |
|     @portal.save!
 | |
|     process_attached_logo
 | |
|   end
 | |
| 
 | |
|   def update
 | |
|     ActiveRecord::Base.transaction do
 | |
|       @portal.update!(portal_params) if params[:portal].present?
 | |
|       process_attached_logo
 | |
|     rescue StandardError => e
 | |
|       Rails.logger.error e
 | |
|       render json: { error: @portal.errors.messages }.to_json, status: :unprocessable_entity
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def destroy
 | |
|     @portal.destroy!
 | |
|     head :ok
 | |
|   end
 | |
| 
 | |
|   def archive
 | |
|     @portal.update(archive: true)
 | |
|     head :ok
 | |
|   end
 | |
| 
 | |
|   def process_attached_logo
 | |
|     @portal.logo.attach(params[:logo])
 | |
|   end
 | |
| 
 | |
|   private
 | |
| 
 | |
|   def fetch_portal
 | |
|     @portal = Current.account.portals.find_by(slug: permitted_params[:id])
 | |
|   end
 | |
| 
 | |
|   def permitted_params
 | |
|     params.permit(:id)
 | |
|   end
 | |
| 
 | |
|   def portal_params
 | |
|     params.require(:portal).permit(
 | |
|       :account_id, :color, :custom_domain, :header_text, :homepage_link, :name, :page_title, :slug, :archived, config: { allowed_locales: [] }
 | |
|     )
 | |
|   end
 | |
| 
 | |
|   def portal_member_params
 | |
|     params.require(:portal).permit(:account_id, member_ids: [])
 | |
|   end
 | |
| 
 | |
|   def set_current_page
 | |
|     @current_page = params[:page] || 1
 | |
|   end
 | |
| end
 | 
