Fix #104 - Style OAuth authorized applications page
Add ability to search accounts by display name
This commit is contained in:
		
							
								
								
									
										16
									
								
								app/controllers/settings/exports_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								app/controllers/settings/exports_controller.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					# frozen_string_literal: true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Settings::ExportsController < ApplicationController
 | 
				
			||||||
 | 
					  layout 'admin'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  before_action :authenticate_user!
 | 
				
			||||||
 | 
					  before_action :set_account
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def show; end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def set_account
 | 
				
			||||||
 | 
					    @account = current_user.account
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
@@ -52,7 +52,7 @@ class Account < ApplicationRecord
 | 
				
			|||||||
  # PuSH subscriptions
 | 
					  # PuSH subscriptions
 | 
				
			||||||
  has_many :subscriptions, dependent: :destroy
 | 
					  has_many :subscriptions, dependent: :destroy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  pg_search_scope :search_for, against: { username: 'A', domain: 'B' },
 | 
					  pg_search_scope :search_for, against: { display_name: 'A', username: 'B', domain: 'C' },
 | 
				
			||||||
                               using: { tsearch: { prefix: true } }
 | 
					                               using: { tsearch: { prefix: true } }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  scope :remote, -> { where.not(domain: nil) }
 | 
					  scope :remote, -> { where.not(domain: nil) }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ class SearchService < BaseService
 | 
				
			|||||||
    return if query.blank? || query.start_with?('#')
 | 
					    return if query.blank? || query.start_with?('#')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    username, domain = query.gsub(/\A@/, '').split('@')
 | 
					    username, domain = query.gsub(/\A@/, '').split('@')
 | 
				
			||||||
 | 
					    domain = nil if TagManager.instance.local_domain?(domain)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if domain.nil?
 | 
					    if domain.nil?
 | 
				
			||||||
      exact_match = Account.find_local(username)
 | 
					      exact_match = Account.find_local(username)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								app/views/doorkeeper/authorized_applications/index.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								app/views/doorkeeper/authorized_applications/index.html.haml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					- content_for :page_title do
 | 
				
			||||||
 | 
					  = t('doorkeeper.authorized_applications.index.title')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					%table.table
 | 
				
			||||||
 | 
					  %thead
 | 
				
			||||||
 | 
					    %tr
 | 
				
			||||||
 | 
					      %th= t('doorkeeper.authorized_applications.index.application')
 | 
				
			||||||
 | 
					      %th= t('doorkeeper.authorized_applications.index.scopes')
 | 
				
			||||||
 | 
					      %th= t('doorkeeper.authorized_applications.index.created_at')
 | 
				
			||||||
 | 
					      %th
 | 
				
			||||||
 | 
					  %tbody
 | 
				
			||||||
 | 
					    - @applications.each do |application|
 | 
				
			||||||
 | 
					      %tr
 | 
				
			||||||
 | 
					        %td
 | 
				
			||||||
 | 
					          - if application.website.blank?
 | 
				
			||||||
 | 
					            = application.name
 | 
				
			||||||
 | 
					          - else
 | 
				
			||||||
 | 
					            = link_to application.name, application.website
 | 
				
			||||||
 | 
					        %th= application.scopes.map { |scope| t(scope, scope: [:doorkeeper, :scopes]) }.join('<br />').html_safe
 | 
				
			||||||
 | 
					        %td= l application.created_at
 | 
				
			||||||
 | 
					        %td
 | 
				
			||||||
 | 
					          - unless application.superapp?
 | 
				
			||||||
 | 
					            = table_link_to 'times', t('doorkeeper.authorized_applications.buttons.revoke'), oauth_authorized_application_path(application), method: :delete, data: { confirm: t('doorkeeper.authorized_applications.confirmations.revoke') }
 | 
				
			||||||
							
								
								
									
										2
									
								
								app/views/settings/exports/show.html.haml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								app/views/settings/exports/show.html.haml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
				
			|||||||
 | 
					- content_for :page_title do
 | 
				
			||||||
 | 
					  = t('settings.export')
 | 
				
			||||||
@@ -65,7 +65,7 @@ en:
 | 
				
			|||||||
        revoke: Are you sure?
 | 
					        revoke: Are you sure?
 | 
				
			||||||
      index:
 | 
					      index:
 | 
				
			||||||
        application: Application
 | 
					        application: Application
 | 
				
			||||||
        created_at: Created At
 | 
					        created_at: Authorized
 | 
				
			||||||
        date_format: "%Y-%m-%d %H:%M:%S"
 | 
					        date_format: "%Y-%m-%d %H:%M:%S"
 | 
				
			||||||
        title: Your authorized applications
 | 
					        title: Your authorized applications
 | 
				
			||||||
    errors:
 | 
					    errors:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,6 +94,7 @@ en:
 | 
				
			|||||||
  settings:
 | 
					  settings:
 | 
				
			||||||
    back: Back to Mastodon
 | 
					    back: Back to Mastodon
 | 
				
			||||||
    edit_profile: Edit profile
 | 
					    edit_profile: Edit profile
 | 
				
			||||||
 | 
					    export: Data export
 | 
				
			||||||
    preferences: Preferences
 | 
					    preferences: Preferences
 | 
				
			||||||
    settings: Settings
 | 
					    settings: Settings
 | 
				
			||||||
    two_factor_auth: Two-factor Authentication
 | 
					    two_factor_auth: Two-factor Authentication
 | 
				
			||||||
@@ -118,7 +119,7 @@ en:
 | 
				
			|||||||
    disable: Disable
 | 
					    disable: Disable
 | 
				
			||||||
    enable: Enable
 | 
					    enable: Enable
 | 
				
			||||||
    instructions_html: "<strong>Scan this QR code into Google Authenticator or a similiar app on your phone</strong>. From now on, that app will generate tokens that you will have to enter when logging in."
 | 
					    instructions_html: "<strong>Scan this QR code into Google Authenticator or a similiar app on your phone</strong>. From now on, that app will generate tokens that you will have to enter when logging in."
 | 
				
			||||||
    plaintext_secret_html: "Plain-text secret: <samp>%{secret}</samp>"
 | 
					    plaintext_secret_html: 'Plain-text secret: <samp>%{secret}</samp>'
 | 
				
			||||||
    warning: If you cannot configure an authenticator app right now, you should click "disable" or you won't be able to login.
 | 
					    warning: If you cannot configure an authenticator app right now, you should click "disable" or you won't be able to login.
 | 
				
			||||||
  users:
 | 
					  users:
 | 
				
			||||||
    invalid_email: The e-mail address is invalid
 | 
					    invalid_email: The e-mail address is invalid
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,8 @@ SimpleNavigation::Configuration.run do |navigation|
 | 
				
			|||||||
      settings.item :preferences, safe_join([fa_icon('sliders fw'), t('settings.preferences')]), settings_preferences_url
 | 
					      settings.item :preferences, safe_join([fa_icon('sliders fw'), t('settings.preferences')]), settings_preferences_url
 | 
				
			||||||
      settings.item :password, safe_join([fa_icon('cog fw'), t('auth.change_password')]), edit_user_registration_url
 | 
					      settings.item :password, safe_join([fa_icon('cog fw'), t('auth.change_password')]), edit_user_registration_url
 | 
				
			||||||
      settings.item :two_factor_auth, safe_join([fa_icon('mobile fw'), t('settings.two_factor_auth')]), settings_two_factor_auth_url
 | 
					      settings.item :two_factor_auth, safe_join([fa_icon('mobile fw'), t('settings.two_factor_auth')]), settings_two_factor_auth_url
 | 
				
			||||||
      # settings.item :authorized_apps, safe_join([fa_icon('list fw'), 'Authorized Apps']), oauth_authorized_applications_url
 | 
					      # settings.item :export, safe_join([fa_icon('cloud-download fw'), t('settings.export')]), settings_export_url
 | 
				
			||||||
 | 
					      settings.item :authorized_apps, safe_join([fa_icon('list fw'), 'Authorized Apps']), oauth_authorized_applications_url
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_accounts_url, if: proc { current_user.admin? } do |admin|
 | 
					    primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_accounts_url, if: proc { current_user.admin? } do |admin|
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -46,6 +46,7 @@ Rails.application.routes.draw do
 | 
				
			|||||||
  namespace :settings do
 | 
					  namespace :settings do
 | 
				
			||||||
    resource :profile, only: [:show, :update]
 | 
					    resource :profile, only: [:show, :update]
 | 
				
			||||||
    resource :preferences, only: [:show, :update]
 | 
					    resource :preferences, only: [:show, :update]
 | 
				
			||||||
 | 
					    resource :export, only: [:show]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    resource :two_factor_auth, only: [:show] do
 | 
					    resource :two_factor_auth, only: [:show] do
 | 
				
			||||||
      member do
 | 
					      member do
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user