1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- # frozen_string_literal: true
- class Api::V1::Accounts::CredentialsController < Api::BaseController
- before_action -> { doorkeeper_authorize! :read, :'read:accounts' }, except: [:update]
- before_action -> { doorkeeper_authorize! :write, :'write:accounts' }, only: [:update]
- before_action :require_user!
- def show
- @account = current_account
- render json: @account, serializer: REST::CredentialAccountSerializer
- end
- def update
- @account = current_account
- UpdateAccountService.new.call(@account, account_params, raise_error: true)
- current_user.update(user_params) if user_params
- ActivityPub::UpdateDistributionWorker.perform_async(@account.id)
- render json: @account, serializer: REST::CredentialAccountSerializer
- rescue ActiveRecord::RecordInvalid => e
- render json: ValidationErrorFormatter.new(e).as_json, status: 422
- end
- private
- def account_params
- params.permit(
- :display_name,
- :note,
- :avatar,
- :header,
- :locked,
- :bot,
- :discoverable,
- :hide_collections,
- :indexable,
- fields_attributes: [:name, :value]
- )
- end
- def user_params
- return nil if params[:source].blank?
- source_params = params.require(:source)
- {
- settings_attributes: {
- default_privacy: source_params.fetch(:privacy, @account.user.setting_default_privacy),
- default_sensitive: source_params.fetch(:sensitive, @account.user.setting_default_sensitive),
- default_language: source_params.fetch(:language, @account.user.setting_default_language),
- },
- }
- end
- end
|