diff --git a/app/controllers/v1/activities_controller.rb b/app/controllers/v1/activities_controller.rb index d4dcdc44..53f43cd5 100644 --- a/app/controllers/v1/activities_controller.rb +++ b/app/controllers/v1/activities_controller.rb @@ -21,7 +21,7 @@ def generate_alias def ical # rubocop:disable Metrics/AbcSize, Metrics/MethodLength return head :unauthorized unless authenticate_user_by_ical_secret_key - requested_categories = params[:categories].try(:split, ',') + requested_categories = User.find_by(id: params[:user_id]).ical_categories permitted_categories = (requested_categories & Activity.categories) || Activity.categories diff --git a/app/controllers/v1/users_controller.rb b/app/controllers/v1/users_controller.rb index 1dba2076..96e55369 100644 --- a/app/controllers/v1/users_controller.rb +++ b/app/controllers/v1/users_controller.rb @@ -109,7 +109,7 @@ def context def excluded_display_properties %i[created_at updated_at deleted_at activated_at archived_at password_digest activation_token avatar activation_token_valid_till setup_complete otp_secret_key otp_required - ical_secret_key id] + ical_secret_key ical_categories id] end def otp_already_required_error diff --git a/app/models/activity.rb b/app/models/activity.rb index 6b3de661..3ecf032a 100644 --- a/app/models/activity.rb +++ b/app/models/activity.rb @@ -34,7 +34,7 @@ class Activity < ApplicationRecord after_save :copy_author_and_group_to_form! def self.categories - %w[algemeen societeit vorming dinsdagkring woensdagkring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates] end diff --git a/app/resources/v1/user_resource.rb b/app/resources/v1/user_resource.rb index 5782f475..ea8218b3 100644 --- a/app/resources/v1/user_resource.rb +++ b/app/resources/v1/user_resource.rb @@ -4,7 +4,7 @@ class V1::UserResource < V1::ApplicationResource # rubocop:disable Metrics/Class :ifes_data_sharing_preference, :info_in_almanak, :almanak_subscription_preference, :digtus_subscription_preference, :email, :birthday, :address, :postcode, :city, :phone_number, :food_preferences, :vegetarian, :study, :start_study, - :picture_publication_preference, :ical_secret_key, + :picture_publication_preference, :ical_secret_key, :ical_categories :password, :avatar, :avatar_url, :avatar_thumb_url, :user_details_sharing_preference, :allow_sofia_sharing, :trailer_drivers_license, :sidekiq_access, :setup_complete @@ -51,12 +51,13 @@ def fetchable_fields # Relationships allowed_keys += %i[groups active_groups memberships mail_aliases mandates group_mail_aliases permissions photos user_permissions] - allowed_keys += %i[ical_secret_key] if me? + + allowed_keys += %i[ical_secret_key ical_categories] if me? if update_or_me? allowed_keys += %i[login_enabled otp_required activated_at emergency_contact emergency_number ifes_data_sharing_preference info_in_almanak almanak_subscription_preference digtus_subscription_preference - user_details_sharing_preference allow_sofia_sharing + user_details_sharing_preference allow_sofia_sharing ical_secret_key sidekiq_access setup_complete] end allowed_keys += %i[picture_publication_preference] if read_or_me? @@ -78,7 +79,8 @@ def self.creatable_fields(context) # rubocop:disable Metrics/MethodLength attributes += %i[otp_required password user_details_sharing_preference allow_sofia_sharing picture_publication_preference info_in_almanak - ifes_data_sharing_preference sidekiq_access setup_complete] + ifes_data_sharing_preference ical_secret_key sidekiq_access + setup_complete] end if user_can_create_or_update?(context) diff --git a/db/migrate/20241113104056_simplyfing_calender_options.rb b/db/migrate/20241113104056_simplyfing_calender_options.rb new file mode 100644 index 00000000..89b350c1 --- /dev/null +++ b/db/migrate/20241113104056_simplyfing_calender_options.rb @@ -0,0 +1,19 @@ +class SimplyfingCalenderOptions < ActiveRecord::Migration[7.0] + def up + add_column :users, :ical_categories, :string, array: true, default: [] + Activity.where(category: 'dinsdagkring').find_each do |activity| + activity.update(category: 'kring') + end + + Activity.where(category: 'woensdagkring').find_each do |activity| + activity.update(category: 'kring') + end + end + + def down + remove_column :users, :ical_categories + Activity.where(category: 'kring').find_each do |activity| + activity.update(category: 'dinsdagkring') + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 20015070..8408f336 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -560,6 +560,7 @@ t.string "user_details_sharing_preference" t.boolean "allow_sofia_sharing", default: false, null: false t.string "nickname" + t.string "ical_categories", default: [], array: true t.boolean "trailer_drivers_license", default: false, null: false t.boolean "setup_complete", default: false, null: false t.index ["deleted_at"], name: "index_users_on_deleted_at" diff --git a/spec/factories/activities.rb b/spec/factories/activities.rb index 2d5a5df4..0fdb110b 100644 --- a/spec/factories/activities.rb +++ b/spec/factories/activities.rb @@ -10,7 +10,7 @@ start_time { Faker::Time.between(from: 1.day.ago, to: Time.zone.today) } end_time { Faker::Time.between(from: 1.day.from_now, to: 2.days.from_now) } category do - %w[algemeen societeit vorming dinsdagkring woensdagkring + %w[algemeen societeit vorming kring choose ifes ozon disputen kiemgroepen huizen extern eerstejaars curiositates].sample end publicly_visible { false } diff --git a/spec/models/activity_spec.rb b/spec/models/activity_spec.rb index c4467aa3..2edbad0d 100644 --- a/spec/models/activity_spec.rb +++ b/spec/models/activity_spec.rb @@ -179,7 +179,7 @@ context 'when it is another category' do let(:record) do build_stubbed(:activity, - category: %w[algemeen sociƫteit vorming dinsdagkring woensdagkring + category: %w[algemeen sociƫteit vorming kring disputen kiemgroepen huizen extern curiositates].sample) end