diff --git a/app/admin/cities.rb b/app/admin/cities.rb index 52019b5..5c2c4e6 100644 --- a/app/admin/cities.rb +++ b/app/admin/cities.rb @@ -1,5 +1,5 @@ ActiveAdmin.register City do - menu label: "City Manager", parent: "系统管理" + menu label: "Cities", parent: "数据管理" controller do def find_resource scoped_collection.friendly.find(params[:id]) diff --git a/app/admin/countries.rb b/app/admin/countries.rb index c6be79f..1989501 100644 --- a/app/admin/countries.rb +++ b/app/admin/countries.rb @@ -1,5 +1,5 @@ ActiveAdmin.register Country do - menu label: "Country Manager", parent: "系统管理" + menu label: "Countries", parent: "数据管理" controller do def find_resource scoped_collection.friendly.find(params[:id]) diff --git a/app/admin/regions.rb b/app/admin/regions.rb index 3827b06..ee11c03 100644 --- a/app/admin/regions.rb +++ b/app/admin/regions.rb @@ -1,5 +1,5 @@ ActiveAdmin.register Region do - menu label: "Region Manager", parent: "系统管理" + menu label: "Regions", parent: "数据管理" # See permitted parameters documentation: # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters # diff --git a/app/admin/states.rb b/app/admin/states.rb new file mode 100644 index 0000000..ff4edf5 --- /dev/null +++ b/app/admin/states.rb @@ -0,0 +1,19 @@ +ActiveAdmin.register State do + menu label: "States", parent: "数据管理" + + # See permitted parameters documentation: + # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters + # + # Uncomment all parameters which should be permitted for assignment + # + # permit_params :name, :code, :country_id, :country_code, :fips_code, :iso2, :state_type, :level, :parent_id, :latitude, :longitude, :flag, :wiki_data_id + # + # or + # + # permit_params do + # permitted = [:name, :code, :country_id, :country_code, :fips_code, :iso2, :state_type, :level, :parent_id, :latitude, :longitude, :flag, :wiki_data_id] + # permitted << :other if params[:action] == 'create' && current_user.admin? + # permitted + # end + +end diff --git a/app/admin/subregions.rb b/app/admin/subregions.rb new file mode 100644 index 0000000..303eb68 --- /dev/null +++ b/app/admin/subregions.rb @@ -0,0 +1,19 @@ +ActiveAdmin.register Subregion do + menu label: "SubRegions", parent: "数据管理" + + # See permitted parameters documentation: + # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters + # + # Uncomment all parameters which should be permitted for assignment + # + # permit_params :name, :translations, :region_id, :flag, :wiki_data_id + # + # or + # + # permit_params do + # permitted = [:name, :translations, :region_id, :flag, :wiki_data_id] + # permitted << :other if params[:action] == 'create' && current_user.admin? + # permitted + # end + +end diff --git a/app/admin/users.rb b/app/admin/users.rb new file mode 100644 index 0000000..594f14b --- /dev/null +++ b/app/admin/users.rb @@ -0,0 +1,19 @@ +ActiveAdmin.register User do + menu label: "Users", parent: "数据管理" + + # See permitted parameters documentation: + # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters + # + # Uncomment all parameters which should be permitted for assignment + # + # permit_params :email, :encrypted_password, :reset_password_token, :reset_password_sent_at, :remember_created_at, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip, :confirmation_token, :confirmed_at, :confirmation_sent_at, :unconfirmed_email, :failed_attempts, :unlock_token, :locked_at, :admin + # + # or + # + # permit_params do + # permitted = [:email, :encrypted_password, :reset_password_token, :reset_password_sent_at, :remember_created_at, :sign_in_count, :current_sign_in_at, :last_sign_in_at, :current_sign_in_ip, :last_sign_in_ip, :confirmation_token, :confirmed_at, :confirmation_sent_at, :unconfirmed_email, :failed_attempts, :unlock_token, :locked_at, :admin] + # permitted << :other if params[:action] == 'create' && current_user.admin? + # permitted + # end + +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7fb8d85..f6a2ad0 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -66,6 +66,13 @@ class ApplicationController < ActionController::Base ahoy.track "Viewed Application", request.path_parameters end + def authenticate_admin_user! + unless current_user&.admin? + flash[:alert] = "您没有权限访问该页面。" + redirect_to root_path + end + end + private def set_locale diff --git a/app/controllers/cities_controller.rb b/app/controllers/cities_controller.rb index a339000..47aaf36 100644 --- a/app/controllers/cities_controller.rb +++ b/app/controllers/cities_controller.rb @@ -1,4 +1,7 @@ class CitiesController < ApplicationController + before_action :authenticate_user!, only: [:generate_weather_art] + before_action :require_admin, only: [:generate_weather_art] + def index @regions = Region.includes(:countries).order(:name) @cities = City.includes(:country, country: :region).order(:name) @@ -39,4 +42,26 @@ class CitiesController < ApplicationController } ) end + + def generate_weather_art + @city = City.friendly.find(params[:id]) + GenerateWeatherArtWorker.perform_async(@city.id) + + respond_to do |format| + format.html do + flash[:notice] = "Weather art generation has been queued" + redirect_to @city + end + end + end + + private + + def require_admin + unless current_user&.admin? + flash[:error] = "You are not authorized to perform this action" + redirect_to root_path + end + end + end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 045b7e0..cf3282d 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -22,7 +22,7 @@ module ApplicationHelper }.to_json.html_safe if weather_art.image.attached? end - def admin? + def current_user_is_admin? current_user&.admin? end end diff --git a/app/views/cities/_admin_panel.html.erb b/app/views/cities/_admin_panel.html.erb index bcc918c..4d6e2e3 100644 --- a/app/views/cities/_admin_panel.html.erb +++ b/app/views/cities/_admin_panel.html.erb @@ -1,45 +1,58 @@ -<% if admin? %> -