Class: RailsApiKeys::UI::ApiKeysController

Inherits:
ApplicationController show all
Defined in:
app/controllers/rails_api_keys/ui/api_keys_controller.rb

Overview

HTML + JSON API key management (index / create / destroy).

Instance Method Summary collapse

Instance Method Details

#createObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/controllers/rails_api_keys/ui/api_keys_controller.rb', line 20

def create
  authorize_api_key!(:create, RailsApiKeys::ApiKey.new(owner: @api_key_owner))

  api_key, raw_token = @api_key_owner.create_api_key!(
    name: api_key_params[:name],
    permission: api_key_params[:permission]
  )

  respond_to do |format|
    format.html do
      flash[raw_token_flash_key] = raw_token
      redirect_back_after_change notice: t(".created")
    end
    format.json do
      render json: serialize_key(api_key).merge(raw_token: raw_token), status: :created
    end
  end
rescue ActiveRecord::RecordInvalid => e
  respond_to do |format|
    format.html do
      redirect_back_after_change alert: e.record.errors.full_messages.join(", ")
    end
    format.json do
      render json: { errors: e.record.errors.full_messages }, status: :unprocessable_content
    end
  end
end

#destroyObject



48
49
50
51
52
53
54
55
56
57
58
# File 'app/controllers/rails_api_keys/ui/api_keys_controller.rb', line 48

def destroy
  authorize_api_key!(:destroy, @api_key)
  @api_key.revoke!

  respond_to do |format|
    format.html do
      redirect_back_after_change notice: t(".revoked")
    end
    format.json { head :no_content }
  end
end

#indexObject



10
11
12
13
14
15
16
17
18
# File 'app/controllers/rails_api_keys/ui/api_keys_controller.rb', line 10

def index
  authorize_api_key!(:index, RailsApiKeys::ApiKey)
  @api_keys = api_keys_scope.order(created_at: :desc)

  respond_to do |format|
    format.html
    format.json { render json: @api_keys.map { |key| serialize_key(key) } }
  end
end