render json: { error: 'Remote SSL certificate could not be verified' }, status: 503
end
+ rescue_from Mastodon::NotPermitted do
+ render json: { error: 'This action is not allowed' }, status: 403
+ end
+
def doorkeeper_unauthorized_render_options(error: nil)
{ json: { error: (error.try(:description) || 'Not authorized') } }
end
# frozen_string_literal: true
class Settings::ProfilesController < ApplicationController
+ include ObfuscateFilename
+
layout 'auth'
before_action :authenticate_user!
before_action :set_account
- include ObfuscateFilename
obfuscate_filename [:account, :avatar]
obfuscate_filename [:account, :header]
private
def account_params
- params.require(:account).permit(:display_name, :note, :avatar, :header)
+ params.require(:account).permit(:display_name, :note, :avatar, :header, :locked)
end
def set_account
--- /dev/null
+# frozen_string_literal: true
+
+module Mastodon
+ class Error < StandardError; end
+ class NotPermitted < Error; end
+end
return if account.id == target_account.id
UnfollowService.new.call(account, target_account) if account.following?(target_account)
+ UnfollowService.new.call(target_account, account) if target_account.following?(account)
+
account.block!(target_account)
+
clear_timelines(account, target_account)
clear_notifications(account, target_account)
end
target_account = follow_remote_account_service.call(uri)
raise ActiveRecord::RecordNotFound if target_account.nil? || target_account.id == source_account.id || target_account.suspended?
+ raise Mastodon::NotPermitted if target_account.blocking?(source_account)
follow = source_account.follow!(target_account)
= f.input :note, placeholder: t('simple_form.labels.defaults.note')
= f.input :avatar, wrapper: :with_label
= f.input :header, wrapper: :with_label
+ = f.input :locked, as: :boolean, wrapper: :with_label
.actions
= f.button :button, t('generic.save_changes'), type: :submit
require 'rails/all'
+require_relative '../app/lib/exceptions'
+
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)
--- /dev/null
+class AddLockedToAccounts < ActiveRecord::Migration[5.0]
+ def change
+ add_column :accounts, :locked, :boolean, null: false, default: false
+ end
+end
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20161221152630) do
+ActiveRecord::Schema.define(version: 20161222201034) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
t.datetime "subscription_expires_at"
t.boolean "silenced", default: false, null: false
t.boolean "suspended", default: false, null: false
+ t.boolean "locked", default: false, null: false
t.index ["username", "domain"], name: "index_accounts_on_username_and_domain", unique: true, using: :btree
end