Case-insensitive search by usernames
This commit is contained in:
		
					parent
					
						
							
								a82f2e4b82
							
						
					
				
			
			
				commit
				
					
						54ea7f5dfe
					
				
			
		
					 4 changed files with 14 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -29,7 +29,7 @@ class AccountsController < ApplicationController
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  def set_account
 | 
			
		||||
    @account = Account.find_by!(username: params[:username], domain: nil)
 | 
			
		||||
    @account = Account.find_local!(params[:username])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_webfinger_header
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@ class StreamEntriesController < ApplicationController
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  def set_account
 | 
			
		||||
    @account = Account.find_by!(username: params[:account_username], domain: nil)
 | 
			
		||||
    @account = Account.find_local!(params[:account_username])
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def set_stream_entry
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -96,8 +96,12 @@ class Account < ApplicationRecord
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def self.find_local!(username)
 | 
			
		||||
    self.find_remote!(username, nil)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.find_remote!(username, domain)
 | 
			
		||||
    table = self.arel_table
 | 
			
		||||
    self.where(table[:username].matches(username)).where(domain: nil).take!
 | 
			
		||||
    self.where(table[:username].matches(username)).where(domain: domain).take!
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.find_local(username)
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +110,12 @@ class Account < ApplicationRecord
 | 
			
		|||
    nil
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def self.find_remote(username, domain)
 | 
			
		||||
    self.find_remote!(username, domain)
 | 
			
		||||
  rescue ActiveRecord::RecordNotFound
 | 
			
		||||
    nil
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  before_create do
 | 
			
		||||
    if local?
 | 
			
		||||
      keypair = OpenSSL::PKey::RSA.new(Rails.env.test? ? 1024 : 2048)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ class ProcessMentionsService < BaseService
 | 
			
		|||
 | 
			
		||||
    status.text.scan(Account::MENTION_RE).each do |match|
 | 
			
		||||
      username, domain  = match.first.split('@')
 | 
			
		||||
      mentioned_account = Account.find_by(username: username, domain: domain)
 | 
			
		||||
      mentioned_account = Account.find_remote(username, domain)
 | 
			
		||||
 | 
			
		||||
      if mentioned_account.nil? && !domain.nil?
 | 
			
		||||
        mentioned_account = follow_remote_account_service.("#{match.first}")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue