Skip to content

Commit c595113

Browse files
committed
More review changes
1 parent 8dd9f8e commit c595113

File tree

9 files changed

+92
-85
lines changed

9 files changed

+92
-85
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module Beacons
2+
class BaseController < ApplicationController
3+
before_action :redirect_contributors
4+
5+
private
6+
7+
def redirect_contributors
8+
redirect_to root_path, alert: "You don't have permission to access this page." unless Current.user&.is_admin?
9+
end
10+
end
11+
end
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
module Beacons
2+
class BeaconsController < BaseController
3+
before_action :set_beacon, only: %i[show edit update regenerate_key revoke_key]
4+
before_action :prepare_associations, only: %i[new edit]
5+
6+
def index
7+
@beacons = Beacon.includes(:language, :region, :providers, :topics).order(created_at: :desc)
8+
end
9+
10+
def new
11+
@beacon = Beacon.new
12+
end
13+
14+
def create
15+
success, @beacon, api_key = Beacons::Creator.new.call(beacon_params)
16+
17+
if success
18+
flash[:notice] = "Beacon was successfully provisioned. API Key: #{api_key}"
19+
redirect_to @beacon
20+
else
21+
prepare_associations
22+
render :new, status: :unprocessable_entity
23+
end
24+
end
25+
26+
def show; end
27+
28+
def edit; end
29+
30+
def update
31+
if @beacon.update(beacon_params)
32+
redirect_to @beacon, notice: "Beacon was successfully updated."
33+
else
34+
prepare_associations
35+
render :edit, status: :unprocessable_entity
36+
end
37+
end
38+
39+
def regenerate_key
40+
api_key = @beacon.regenerate
41+
flash[:notice] = "API key has been successfully regenerated. API Key: #{api_key}"
42+
redirect_to @beacon
43+
44+
rescue => e
45+
flash[:alert] = "API key could not be regenerated."
46+
redirect_to @beacon
47+
end
48+
49+
def revoke_key
50+
api_key = @beacon.revoke!
51+
flash[:notice] = "API key has been successfully revoked."
52+
redirect_to @beacon
53+
54+
rescue => e
55+
flash[:alert] = "API key could not be revoked."
56+
redirect_to @beacon
57+
end
58+
59+
private
60+
61+
def set_beacon
62+
@beacon = Beacon.find(params[:id])
63+
end
64+
65+
def prepare_associations
66+
@languages = Language.order(:name)
67+
@providers = Provider.order(:name)
68+
@regions = Region.order(:name)
69+
@topics = Topic.active.order(:title)
70+
end
71+
72+
def beacon_params
73+
params.require(:beacon).permit(:name, :language_id, :region_id, provider_ids: [], topic_ids: [])
74+
end
75+
end
76+
end

app/controllers/beacons_controller.rb

Lines changed: 0 additions & 81 deletions
This file was deleted.

config/routes.rb

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,16 @@
1717
resources :tags, only: %i[index], controller: "topics/tags"
1818
end
1919
resources :import_reports, only: %i[index show]
20-
resources :beacons, except: :destroy do
20+
resource :settings, only: [] do
21+
put :provider, on: :collection
22+
end
23+
24+
resources :beacons, except: :destroy, module: :beacons do
2125
member do
2226
post :regenerate_key
2327
post :revoke_key
2428
end
2529
end
26-
resource :settings, only: [] do
27-
put :provider, on: :collection
28-
end
2930

3031
# Render dynamic PWA files from app/views/pwa/* (remember to link manifest in application.html.erb)
3132
# get "manifest" => "rails/pwa#manifest", as: :pwa_manifest

0 commit comments

Comments
 (0)