From 175a9b9caa92ad90bf2e8b68c299a00adb1f9751 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 27 Feb 2017 00:15:00 +0100 Subject: [PATCH] Fix #104 - Style OAuth authorized applications page Add ability to search accounts by display name --- .../settings/exports_controller.rb | 16 +++++++++++++ app/models/account.rb | 2 +- app/services/search_service.rb | 1 + .../authorized_applications/index.html.haml | 23 +++++++++++++++++++ app/views/settings/exports/show.html.haml | 2 ++ config/locales/doorkeeper.en.yml | 2 +- config/locales/en.yml | 3 ++- config/navigation.rb | 3 ++- config/routes.rb | 1 + 9 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 app/controllers/settings/exports_controller.rb create mode 100644 app/views/doorkeeper/authorized_applications/index.html.haml create mode 100644 app/views/settings/exports/show.html.haml diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb new file mode 100644 index 0000000000..d4ecb6e8ab --- /dev/null +++ b/app/controllers/settings/exports_controller.rb @@ -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 diff --git a/app/models/account.rb b/app/models/account.rb index 469695acd7..a93a0668a5 100644 --- a/app/models/account.rb +++ b/app/models/account.rb @@ -52,7 +52,7 @@ class Account < ApplicationRecord # PuSH subscriptions 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 } } scope :remote, -> { where.not(domain: nil) } diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 04de8a1347..6f740e149d 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -5,6 +5,7 @@ class SearchService < BaseService return if query.blank? || query.start_with?('#') username, domain = query.gsub(/\A@/, '').split('@') + domain = nil if TagManager.instance.local_domain?(domain) if domain.nil? exact_match = Account.find_local(username) diff --git a/app/views/doorkeeper/authorized_applications/index.html.haml b/app/views/doorkeeper/authorized_applications/index.html.haml new file mode 100644 index 0000000000..d4719881cf --- /dev/null +++ b/app/views/doorkeeper/authorized_applications/index.html.haml @@ -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('
').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') } diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml new file mode 100644 index 0000000000..d9006efdb2 --- /dev/null +++ b/app/views/settings/exports/show.html.haml @@ -0,0 +1,2 @@ +- content_for :page_title do + = t('settings.export') diff --git a/config/locales/doorkeeper.en.yml b/config/locales/doorkeeper.en.yml index aaf5df6fcf..97dd9c0494 100644 --- a/config/locales/doorkeeper.en.yml +++ b/config/locales/doorkeeper.en.yml @@ -65,7 +65,7 @@ en: revoke: Are you sure? index: application: Application - created_at: Created At + created_at: Authorized date_format: "%Y-%m-%d %H:%M:%S" title: Your authorized applications errors: diff --git a/config/locales/en.yml b/config/locales/en.yml index e7d39327ea..6da30acdad 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -94,6 +94,7 @@ en: settings: back: Back to Mastodon edit_profile: Edit profile + export: Data export preferences: Preferences settings: Settings two_factor_auth: Two-factor Authentication @@ -118,7 +119,7 @@ en: disable: Disable enable: Enable instructions_html: "Scan this QR code into Google Authenticator or a similiar app on your phone. From now on, that app will generate tokens that you will have to enter when logging in." - plaintext_secret_html: "Plain-text secret: %{secret}" + plaintext_secret_html: 'Plain-text secret: %{secret}' warning: If you cannot configure an authenticator app right now, you should click "disable" or you won't be able to login. users: invalid_email: The e-mail address is invalid diff --git a/config/navigation.rb b/config/navigation.rb index 0d43a9f731..fd2659923e 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -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 :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 :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 primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_accounts_url, if: proc { current_user.admin? } do |admin| diff --git a/config/routes.rb b/config/routes.rb index 70e252409d..870d8afd4e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -46,6 +46,7 @@ Rails.application.routes.draw do namespace :settings do resource :profile, only: [:show, :update] resource :preferences, only: [:show, :update] + resource :export, only: [:show] resource :two_factor_auth, only: [:show] do member do