diff --git a/.ruby-version b/.ruby-version index c46effc..f13c6f4 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-1.9.3-p385 +ruby-3.3.5 diff --git a/Gemfile b/Gemfile index dcf5099..62e2434 100644 --- a/Gemfile +++ b/Gemfile @@ -1,14 +1,14 @@ source 'https://rubygems.org' -ruby '1.9.3' +ruby '3.3.5' -gem 'rails', '3.2.8' +gem 'rails', '~> 7.2' gem 'dotenv-rails' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' -gem 'sqlite3' +# gem 'sqlite3' gem 'pg' gem 'taps' @@ -17,13 +17,13 @@ gem 'json' # Gems used only for assets and not required # in production environments by default. group :assets do - gem 'sass-rails', '~> 3.2.3' - gem 'coffee-rails', '~> 3.2.1' + gem 'sass-rails' #, '~> 3.2.3' + gem 'coffee-rails' #, '~> 3.2.1' # See https://github.com/sstephenson/execjs#readme for more supported runtimes gem 'therubyracer', :platform => :ruby - gem 'uglifier', '>= 1.0.3' + gem 'uglifier' #, '>= 1.0.3' end gem 'jquery-rails' @@ -33,7 +33,7 @@ gem 'devise' gem "cancan" # To use ActiveModel has_secure_password -gem 'bcrypt-ruby', '~> 3.0.0' +gem 'bcrypt' #, '~> 3.0.0' # To use Jbuilder templates for JSON # gem 'jbuilder' @@ -47,10 +47,10 @@ gem 'bcrypt-ruby', '~> 3.0.0' # To use debugger #gem 'debugger' -gem "paperclip", "~> 3.0" +gem "paperclip" #, "~> 3.0" gem "aws-sdk" gem 'gravtastic' gem 'passenger' -gem "rails-settings-cached", "0.2.4" +gem "rails-settings-cached" #, "0.2.4" diff --git a/Gemfile.lock b/Gemfile.lock index e597316..2d6f2bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,177 +1,1848 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (3.2.8) - actionpack (= 3.2.8) - mail (~> 2.4.4) - actionpack (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - builder (~> 3.0.0) - erubis (~> 2.7.0) - journey (~> 1.0.4) - rack (~> 1.4.0) - rack-cache (~> 1.2) - rack-test (~> 0.6.1) - sprockets (~> 2.1.3) - activemodel (3.2.8) - activesupport (= 3.2.8) - builder (~> 3.0.0) - activerecord (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - arel (~> 3.0.2) - tzinfo (~> 0.3.29) - activeresource (3.2.8) - activemodel (= 3.2.8) - activesupport (= 3.2.8) - activesupport (3.2.8) - i18n (~> 0.6) - multi_json (~> 1.0) - arel (3.0.2) - aws-sdk (1.33.0) - json (~> 1.4) - nokogiri (>= 1.4.4) - uuidtools (~> 2.1) - bcrypt-ruby (3.0.1) - builder (3.0.4) + actioncable (7.2.1) + actionpack (= 7.2.1) + activesupport (= 7.2.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + zeitwerk (~> 2.6) + actionmailbox (7.2.1) + actionpack (= 7.2.1) + activejob (= 7.2.1) + activerecord (= 7.2.1) + activestorage (= 7.2.1) + activesupport (= 7.2.1) + mail (>= 2.8.0) + actionmailer (7.2.1) + actionpack (= 7.2.1) + actionview (= 7.2.1) + activejob (= 7.2.1) + activesupport (= 7.2.1) + mail (>= 2.8.0) + rails-dom-testing (~> 2.2) + actionpack (7.2.1) + actionview (= 7.2.1) + activesupport (= 7.2.1) + nokogiri (>= 1.8.5) + racc + rack (>= 2.2.4, < 3.2) + rack-session (>= 1.0.1) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + useragent (~> 0.16) + actiontext (7.2.1) + actionpack (= 7.2.1) + activerecord (= 7.2.1) + activestorage (= 7.2.1) + activesupport (= 7.2.1) + globalid (>= 0.6.0) + nokogiri (>= 1.8.5) + actionview (7.2.1) + activesupport (= 7.2.1) + builder (~> 3.1) + erubi (~> 1.11) + rails-dom-testing (~> 2.2) + rails-html-sanitizer (~> 1.6) + activejob (7.2.1) + activesupport (= 7.2.1) + globalid (>= 0.3.6) + activemodel (7.2.1) + activesupport (= 7.2.1) + activerecord (7.2.1) + activemodel (= 7.2.1) + activesupport (= 7.2.1) + timeout (>= 0.4.0) + activestorage (7.2.1) + actionpack (= 7.2.1) + activejob (= 7.2.1) + activerecord (= 7.2.1) + activesupport (= 7.2.1) + marcel (~> 1.0) + activesupport (7.2.1) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.3.1) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + logger (>= 1.4.2) + minitest (>= 5.1) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + aws-eventstream (1.3.0) + aws-partitions (1.987.0) + aws-sdk (3.2.0) + aws-sdk-resources (~> 3) + aws-sdk-accessanalyzer (1.60.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-account (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-acm (1.80.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-acmpca (1.82.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-amplify (1.73.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-amplifybackend (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-amplifyuibuilder (1.36.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-apigateway (1.107.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-apigatewaymanagementapi (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-apigatewayv2 (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-appconfig (1.58.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-appconfigdata (1.31.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-appfabric (1.20.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-appflow (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-appintegrationsservice (1.43.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-applicationautoscaling (1.96.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-applicationcostprofiler (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-applicationdiscoveryservice (1.77.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-applicationinsights (1.57.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-applicationsignals (1.11.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-appmesh (1.72.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-appregistry (1.45.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-apprunner (1.50.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-appstream (1.101.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-appsync (1.89.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-apptest (1.9.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-arczonalshift (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-artifact (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-athena (1.95.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-auditmanager (1.57.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-augmentedairuntime (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-autoscaling (1.121.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-autoscalingplans (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-b2bi (1.21.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-backup (1.80.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-backupgateway (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-batch (1.101.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-bcmdataexports (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-bedrock (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-bedrockagent (1.28.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-bedrockagentruntime (1.27.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-bedrockruntime (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-billingconductor (1.33.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-braket (1.46.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-budgets (1.77.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chatbot (1.17.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chime (1.95.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chimesdkidentity (1.36.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chimesdkmediapipelines (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chimesdkmeetings (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chimesdkmessaging (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-chimesdkvoice (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cleanrooms (1.33.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cleanroomsml (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloud9 (1.80.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudcontrolapi (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-clouddirectory (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudformation (1.120.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudfront (1.102.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudfrontkeyvaluestore (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudhsm (1.64.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudhsmv2 (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudsearch (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudsearchdomain (1.53.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudtrail (1.92.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudtraildata (1.22.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudwatch (1.103.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudwatchevents (1.83.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudwatchevidently (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-cloudwatchlogs (1.96.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cloudwatchrum (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-codeartifact (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codebuild (1.132.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codecatalyst (1.29.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sdk-codecommit (1.78.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codeconnections (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codedeploy (1.78.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codeguruprofiler (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-codegurureviewer (1.58.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codegurusecurity (1.23.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-codepipeline (1.86.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codestarconnections (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-codestarnotifications (1.45.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cognitoidentity (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cognitoidentityprovider (1.107.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-cognitosync (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-comprehend (1.93.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-comprehendmedical (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-computeoptimizer (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-configservice (1.120.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-connect (1.180.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-connectcampaignservice (1.27.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-connectcases (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-connectcontactlens (1.37.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-connectparticipant (1.55.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-connectwisdomservice (1.40.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-controlcatalog (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-controltower (1.33.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-core (3.209.1) + aws-eventstream (~> 1, >= 1.3.0) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.9) + jmespath (~> 1, >= 1.6.1) + aws-sdk-costandusagereportservice (1.67.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-costexplorer (1.112.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-costoptimizationhub (1.17.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-customerprofiles (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-databasemigrationservice (1.106.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-dataexchange (1.58.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-datapipeline (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-datasync (1.89.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-datazone (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-dax (1.64.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-deadline (1.15.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-detective (1.59.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-devicefarm (1.79.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-devopsguru (1.53.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-directconnect (1.83.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-directoryservice (1.77.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-directoryservicedata (1.3.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-dlm (1.81.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-docdb (1.77.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-docdbelastic (1.24.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-drs (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-dynamodb (1.125.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-dynamodbstreams (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ebs (1.52.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ec2 (1.480.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ec2instanceconnect (1.51.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ecr (1.87.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ecrpublic (1.39.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ecs (1.161.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-efs (1.85.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-eks (1.118.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-eksauth (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-elasticache (1.116.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elasticbeanstalk (1.79.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elasticinference (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elasticloadbalancing (1.67.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elasticloadbalancingv2 (1.117.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elasticsearchservice (1.95.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-elastictranscoder (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-emr (1.99.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-emrcontainers (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-emrserverless (1.36.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-entityresolution (1.22.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-eventbridge (1.71.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-finspace (1.45.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-finspacedata (1.44.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-firehose (1.82.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-fis (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-fms (1.82.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-forecastqueryservice (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-forecastservice (1.64.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-frauddetector (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-freetier (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-fsx (1.101.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-gamelift (1.92.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-glacier (1.72.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-globalaccelerator (1.70.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-glue (1.198.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-gluedatabrew (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-greengrass (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-greengrassv2 (1.49.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-groundstation (1.59.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-guardduty (1.103.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-health (1.73.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-healthlake (1.39.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iam (1.111.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-identitystore (1.46.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-imagebuilder (1.71.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-importexport (1.55.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv2 (~> 1.0) + aws-sdk-inspector (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-inspector2 (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-inspectorscan (1.15.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-internetmonitor (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iot (1.136.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iot1clickdevicesservice (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-iot1clickprojects (1.62.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotanalytics (1.74.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotdataplane (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotdeviceadvisor (1.43.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotevents (1.59.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ioteventsdata (1.52.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotfleethub (1.37.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotfleetwise (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotjobsdataplane (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotsecuretunneling (1.46.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotsitewise (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iotthingsgraph (1.49.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-iottwinmaker (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-iotwireless (1.59.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ivs (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ivschat (1.36.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ivsrealtime (1.33.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-kafka (1.84.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kafkaconnect (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-kendra (1.91.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kendraranking (1.24.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-keyspaces (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-kinesis (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisanalytics (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisanalyticsv2 (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisvideo (1.73.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisvideoarchivedmedia (1.70.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisvideomedia (1.62.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisvideosignalingchannels (1.44.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-kinesisvideowebrtcstorage (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-kms (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lakeformation (1.62.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lambda (1.136.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-launchwizard (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-lex (1.71.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lexmodelbuildingservice (1.82.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lexmodelsv2 (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lexruntimev2 (1.44.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-licensemanager (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-licensemanagerlinuxsubscriptions (1.24.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-licensemanagerusersubscriptions (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-lightsail (1.102.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-locationservice (1.61.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-lookoutequipment (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lookoutforvision (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-lookoutmetrics (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-machinelearning (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-macie2 (1.79.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mailmanager (1.12.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mainframemodernization (1.28.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-managedblockchain (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-managedblockchainquery (1.22.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-managedgrafana (1.39.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplaceagreement (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplacecatalog (1.53.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-marketplacecommerceanalytics (1.67.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-marketplacedeployment (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-marketplaceentitlementservice (1.62.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-marketplacemetering (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-marketplacereporting (1.1.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mediaconnect (1.71.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mediaconvert (1.142.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-medialive (1.136.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mediapackage (1.82.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediapackagev2 (1.29.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediapackagevod (1.64.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-mediastore (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mediastoredata (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mediatailor (1.90.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-medicalimaging (1.21.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-memorydb (1.38.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mgn (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-migrationhub (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-migrationhubconfig (1.46.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-migrationhuborchestrator (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-migrationhubrefactorspaces (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-migrationhubstrategyrecommendations (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-mq (1.72.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mturk (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-mwaa (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-neptune (1.76.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-neptunedata (1.20.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-neptunegraph (1.21.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-networkfirewall (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-networkmanager (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-networkmonitor (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-nimblestudio (1.40.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-oam (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-omics (1.38.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-opensearchserverless (1.28.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-opensearchservice (1.56.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-opsworks (1.67.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-opsworkscm (1.77.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-organizations (1.104.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-osis (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-outposts (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-panorama (1.35.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-paymentcryptography (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-paymentcryptographydata (1.24.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pcaconnectorad (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-pcaconnectorscep (1.10.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pcs (1.7.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-personalize (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-personalizeevents (1.55.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-personalizeruntime (1.62.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pi (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pinpoint (1.101.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pinpointemail (1.60.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pinpointsmsvoice (1.56.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-pinpointsmsvoicev2 (1.27.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pipes (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-polly (1.97.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-pricing (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-privatenetworks (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-prometheusservice (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-proton (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-qapps (1.7.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-qbusiness (1.18.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-qconnect (1.21.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-qldb (1.51.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-qldbsession (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-quicksight (1.131.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ram (1.66.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-rds (1.252.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-rdsdataservice (1.64.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-recyclebin (1.32.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-redshift (1.126.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-redshiftdataapiservice (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-redshiftserverless (1.39.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-rekognition (1.108.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-repostspace (1.14.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-resiliencehub (1.39.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-resourceexplorer2 (1.28.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-resourcegroups (1.73.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-resourcegroupstaggingapi (1.72.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-resources (3.208.0) + aws-sdk-accessanalyzer (~> 1) + aws-sdk-account (~> 1) + aws-sdk-acm (~> 1) + aws-sdk-acmpca (~> 1) + aws-sdk-amplify (~> 1) + aws-sdk-amplifybackend (~> 1) + aws-sdk-amplifyuibuilder (~> 1) + aws-sdk-apigateway (~> 1) + aws-sdk-apigatewaymanagementapi (~> 1) + aws-sdk-apigatewayv2 (~> 1) + aws-sdk-appconfig (~> 1) + aws-sdk-appconfigdata (~> 1) + aws-sdk-appfabric (~> 1) + aws-sdk-appflow (~> 1) + aws-sdk-appintegrationsservice (~> 1) + aws-sdk-applicationautoscaling (~> 1) + aws-sdk-applicationcostprofiler (~> 1) + aws-sdk-applicationdiscoveryservice (~> 1) + aws-sdk-applicationinsights (~> 1) + aws-sdk-applicationsignals (~> 1) + aws-sdk-appmesh (~> 1) + aws-sdk-appregistry (~> 1) + aws-sdk-apprunner (~> 1) + aws-sdk-appstream (~> 1) + aws-sdk-appsync (~> 1) + aws-sdk-apptest (~> 1) + aws-sdk-arczonalshift (~> 1) + aws-sdk-artifact (~> 1) + aws-sdk-athena (~> 1) + aws-sdk-auditmanager (~> 1) + aws-sdk-augmentedairuntime (~> 1) + aws-sdk-autoscaling (~> 1) + aws-sdk-autoscalingplans (~> 1) + aws-sdk-b2bi (~> 1) + aws-sdk-backup (~> 1) + aws-sdk-backupgateway (~> 1) + aws-sdk-batch (~> 1) + aws-sdk-bcmdataexports (~> 1) + aws-sdk-bedrock (~> 1) + aws-sdk-bedrockagent (~> 1) + aws-sdk-bedrockagentruntime (~> 1) + aws-sdk-bedrockruntime (~> 1) + aws-sdk-billingconductor (~> 1) + aws-sdk-braket (~> 1) + aws-sdk-budgets (~> 1) + aws-sdk-chatbot (~> 1) + aws-sdk-chime (~> 1) + aws-sdk-chimesdkidentity (~> 1) + aws-sdk-chimesdkmediapipelines (~> 1) + aws-sdk-chimesdkmeetings (~> 1) + aws-sdk-chimesdkmessaging (~> 1) + aws-sdk-chimesdkvoice (~> 1) + aws-sdk-cleanrooms (~> 1) + aws-sdk-cleanroomsml (~> 1) + aws-sdk-cloud9 (~> 1) + aws-sdk-cloudcontrolapi (~> 1) + aws-sdk-clouddirectory (~> 1) + aws-sdk-cloudformation (~> 1) + aws-sdk-cloudfront (~> 1) + aws-sdk-cloudfrontkeyvaluestore (~> 1) + aws-sdk-cloudhsm (~> 1) + aws-sdk-cloudhsmv2 (~> 1) + aws-sdk-cloudsearch (~> 1) + aws-sdk-cloudsearchdomain (~> 1) + aws-sdk-cloudtrail (~> 1) + aws-sdk-cloudtraildata (~> 1) + aws-sdk-cloudwatch (~> 1) + aws-sdk-cloudwatchevents (~> 1) + aws-sdk-cloudwatchevidently (~> 1) + aws-sdk-cloudwatchlogs (~> 1) + aws-sdk-cloudwatchrum (~> 1) + aws-sdk-codeartifact (~> 1) + aws-sdk-codebuild (~> 1) + aws-sdk-codecatalyst (~> 1) + aws-sdk-codecommit (~> 1) + aws-sdk-codeconnections (~> 1) + aws-sdk-codedeploy (~> 1) + aws-sdk-codeguruprofiler (~> 1) + aws-sdk-codegurureviewer (~> 1) + aws-sdk-codegurusecurity (~> 1) + aws-sdk-codepipeline (~> 1) + aws-sdk-codestarconnections (~> 1) + aws-sdk-codestarnotifications (~> 1) + aws-sdk-cognitoidentity (~> 1) + aws-sdk-cognitoidentityprovider (~> 1) + aws-sdk-cognitosync (~> 1) + aws-sdk-comprehend (~> 1) + aws-sdk-comprehendmedical (~> 1) + aws-sdk-computeoptimizer (~> 1) + aws-sdk-configservice (~> 1) + aws-sdk-connect (~> 1) + aws-sdk-connectcampaignservice (~> 1) + aws-sdk-connectcases (~> 1) + aws-sdk-connectcontactlens (~> 1) + aws-sdk-connectparticipant (~> 1) + aws-sdk-connectwisdomservice (~> 1) + aws-sdk-controlcatalog (~> 1) + aws-sdk-controltower (~> 1) + aws-sdk-costandusagereportservice (~> 1) + aws-sdk-costexplorer (~> 1) + aws-sdk-costoptimizationhub (~> 1) + aws-sdk-customerprofiles (~> 1) + aws-sdk-databasemigrationservice (~> 1) + aws-sdk-dataexchange (~> 1) + aws-sdk-datapipeline (~> 1) + aws-sdk-datasync (~> 1) + aws-sdk-datazone (~> 1) + aws-sdk-dax (~> 1) + aws-sdk-deadline (~> 1) + aws-sdk-detective (~> 1) + aws-sdk-devicefarm (~> 1) + aws-sdk-devopsguru (~> 1) + aws-sdk-directconnect (~> 1) + aws-sdk-directoryservice (~> 1) + aws-sdk-directoryservicedata (~> 1) + aws-sdk-dlm (~> 1) + aws-sdk-docdb (~> 1) + aws-sdk-docdbelastic (~> 1) + aws-sdk-drs (~> 1) + aws-sdk-dynamodb (~> 1) + aws-sdk-dynamodbstreams (~> 1) + aws-sdk-ebs (~> 1) + aws-sdk-ec2 (~> 1) + aws-sdk-ec2instanceconnect (~> 1) + aws-sdk-ecr (~> 1) + aws-sdk-ecrpublic (~> 1) + aws-sdk-ecs (~> 1) + aws-sdk-efs (~> 1) + aws-sdk-eks (~> 1) + aws-sdk-eksauth (~> 1) + aws-sdk-elasticache (~> 1) + aws-sdk-elasticbeanstalk (~> 1) + aws-sdk-elasticinference (~> 1) + aws-sdk-elasticloadbalancing (~> 1) + aws-sdk-elasticloadbalancingv2 (~> 1) + aws-sdk-elasticsearchservice (~> 1) + aws-sdk-elastictranscoder (~> 1) + aws-sdk-emr (~> 1) + aws-sdk-emrcontainers (~> 1) + aws-sdk-emrserverless (~> 1) + aws-sdk-entityresolution (~> 1) + aws-sdk-eventbridge (~> 1) + aws-sdk-finspace (~> 1) + aws-sdk-finspacedata (~> 1) + aws-sdk-firehose (~> 1) + aws-sdk-fis (~> 1) + aws-sdk-fms (~> 1) + aws-sdk-forecastqueryservice (~> 1) + aws-sdk-forecastservice (~> 1) + aws-sdk-frauddetector (~> 1) + aws-sdk-freetier (~> 1) + aws-sdk-fsx (~> 1) + aws-sdk-gamelift (~> 1) + aws-sdk-glacier (~> 1) + aws-sdk-globalaccelerator (~> 1) + aws-sdk-glue (~> 1) + aws-sdk-gluedatabrew (~> 1) + aws-sdk-greengrass (~> 1) + aws-sdk-greengrassv2 (~> 1) + aws-sdk-groundstation (~> 1) + aws-sdk-guardduty (~> 1) + aws-sdk-health (~> 1) + aws-sdk-healthlake (~> 1) + aws-sdk-iam (~> 1) + aws-sdk-identitystore (~> 1) + aws-sdk-imagebuilder (~> 1) + aws-sdk-importexport (~> 1) + aws-sdk-inspector (~> 1) + aws-sdk-inspector2 (~> 1) + aws-sdk-inspectorscan (~> 1) + aws-sdk-internetmonitor (~> 1) + aws-sdk-iot (~> 1) + aws-sdk-iot1clickdevicesservice (~> 1) + aws-sdk-iot1clickprojects (~> 1) + aws-sdk-iotanalytics (~> 1) + aws-sdk-iotdataplane (~> 1) + aws-sdk-iotdeviceadvisor (~> 1) + aws-sdk-iotevents (~> 1) + aws-sdk-ioteventsdata (~> 1) + aws-sdk-iotfleethub (~> 1) + aws-sdk-iotfleetwise (~> 1) + aws-sdk-iotjobsdataplane (~> 1) + aws-sdk-iotsecuretunneling (~> 1) + aws-sdk-iotsitewise (~> 1) + aws-sdk-iotthingsgraph (~> 1) + aws-sdk-iottwinmaker (~> 1) + aws-sdk-iotwireless (~> 1) + aws-sdk-ivs (~> 1) + aws-sdk-ivschat (~> 1) + aws-sdk-ivsrealtime (~> 1) + aws-sdk-kafka (~> 1) + aws-sdk-kafkaconnect (~> 1) + aws-sdk-kendra (~> 1) + aws-sdk-kendraranking (~> 1) + aws-sdk-keyspaces (~> 1) + aws-sdk-kinesis (~> 1) + aws-sdk-kinesisanalytics (~> 1) + aws-sdk-kinesisanalyticsv2 (~> 1) + aws-sdk-kinesisvideo (~> 1) + aws-sdk-kinesisvideoarchivedmedia (~> 1) + aws-sdk-kinesisvideomedia (~> 1) + aws-sdk-kinesisvideosignalingchannels (~> 1) + aws-sdk-kinesisvideowebrtcstorage (~> 1) + aws-sdk-kms (~> 1) + aws-sdk-lakeformation (~> 1) + aws-sdk-lambda (~> 1) + aws-sdk-launchwizard (~> 1) + aws-sdk-lex (~> 1) + aws-sdk-lexmodelbuildingservice (~> 1) + aws-sdk-lexmodelsv2 (~> 1) + aws-sdk-lexruntimev2 (~> 1) + aws-sdk-licensemanager (~> 1) + aws-sdk-licensemanagerlinuxsubscriptions (~> 1) + aws-sdk-licensemanagerusersubscriptions (~> 1) + aws-sdk-lightsail (~> 1) + aws-sdk-locationservice (~> 1) + aws-sdk-lookoutequipment (~> 1) + aws-sdk-lookoutforvision (~> 1) + aws-sdk-lookoutmetrics (~> 1) + aws-sdk-machinelearning (~> 1) + aws-sdk-macie2 (~> 1) + aws-sdk-mailmanager (~> 1) + aws-sdk-mainframemodernization (~> 1) + aws-sdk-managedblockchain (~> 1) + aws-sdk-managedblockchainquery (~> 1) + aws-sdk-managedgrafana (~> 1) + aws-sdk-marketplaceagreement (~> 1) + aws-sdk-marketplacecatalog (~> 1) + aws-sdk-marketplacecommerceanalytics (~> 1) + aws-sdk-marketplacedeployment (~> 1) + aws-sdk-marketplaceentitlementservice (~> 1) + aws-sdk-marketplacemetering (~> 1) + aws-sdk-marketplacereporting (~> 1) + aws-sdk-mediaconnect (~> 1) + aws-sdk-mediaconvert (~> 1) + aws-sdk-medialive (~> 1) + aws-sdk-mediapackage (~> 1) + aws-sdk-mediapackagev2 (~> 1) + aws-sdk-mediapackagevod (~> 1) + aws-sdk-mediastore (~> 1) + aws-sdk-mediastoredata (~> 1) + aws-sdk-mediatailor (~> 1) + aws-sdk-medicalimaging (~> 1) + aws-sdk-memorydb (~> 1) + aws-sdk-mgn (~> 1) + aws-sdk-migrationhub (~> 1) + aws-sdk-migrationhubconfig (~> 1) + aws-sdk-migrationhuborchestrator (~> 1) + aws-sdk-migrationhubrefactorspaces (~> 1) + aws-sdk-migrationhubstrategyrecommendations (~> 1) + aws-sdk-mq (~> 1) + aws-sdk-mturk (~> 1) + aws-sdk-mwaa (~> 1) + aws-sdk-neptune (~> 1) + aws-sdk-neptunedata (~> 1) + aws-sdk-neptunegraph (~> 1) + aws-sdk-networkfirewall (~> 1) + aws-sdk-networkmanager (~> 1) + aws-sdk-networkmonitor (~> 1) + aws-sdk-nimblestudio (~> 1) + aws-sdk-oam (~> 1) + aws-sdk-omics (~> 1) + aws-sdk-opensearchserverless (~> 1) + aws-sdk-opensearchservice (~> 1) + aws-sdk-opsworks (~> 1) + aws-sdk-opsworkscm (~> 1) + aws-sdk-organizations (~> 1) + aws-sdk-osis (~> 1) + aws-sdk-outposts (~> 1) + aws-sdk-panorama (~> 1) + aws-sdk-paymentcryptography (~> 1) + aws-sdk-paymentcryptographydata (~> 1) + aws-sdk-pcaconnectorad (~> 1) + aws-sdk-pcaconnectorscep (~> 1) + aws-sdk-pcs (~> 1) + aws-sdk-personalize (~> 1) + aws-sdk-personalizeevents (~> 1) + aws-sdk-personalizeruntime (~> 1) + aws-sdk-pi (~> 1) + aws-sdk-pinpoint (~> 1) + aws-sdk-pinpointemail (~> 1) + aws-sdk-pinpointsmsvoice (~> 1) + aws-sdk-pinpointsmsvoicev2 (~> 1) + aws-sdk-pipes (~> 1) + aws-sdk-polly (~> 1) + aws-sdk-pricing (~> 1) + aws-sdk-privatenetworks (~> 1) + aws-sdk-prometheusservice (~> 1) + aws-sdk-proton (~> 1) + aws-sdk-qapps (~> 1) + aws-sdk-qbusiness (~> 1) + aws-sdk-qconnect (~> 1) + aws-sdk-qldb (~> 1) + aws-sdk-qldbsession (~> 1) + aws-sdk-quicksight (~> 1) + aws-sdk-ram (~> 1) + aws-sdk-rds (~> 1) + aws-sdk-rdsdataservice (~> 1) + aws-sdk-recyclebin (~> 1) + aws-sdk-redshift (~> 1) + aws-sdk-redshiftdataapiservice (~> 1) + aws-sdk-redshiftserverless (~> 1) + aws-sdk-rekognition (~> 1) + aws-sdk-repostspace (~> 1) + aws-sdk-resiliencehub (~> 1) + aws-sdk-resourceexplorer2 (~> 1) + aws-sdk-resourcegroups (~> 1) + aws-sdk-resourcegroupstaggingapi (~> 1) + aws-sdk-robomaker (~> 1) + aws-sdk-rolesanywhere (~> 1) + aws-sdk-route53 (~> 1) + aws-sdk-route53domains (~> 1) + aws-sdk-route53profiles (~> 1) + aws-sdk-route53recoverycluster (~> 1) + aws-sdk-route53recoverycontrolconfig (~> 1) + aws-sdk-route53recoveryreadiness (~> 1) + aws-sdk-route53resolver (~> 1) + aws-sdk-s3 (~> 1) + aws-sdk-s3control (~> 1) + aws-sdk-s3outposts (~> 1) + aws-sdk-sagemaker (~> 1) + aws-sdk-sagemakeredgemanager (~> 1) + aws-sdk-sagemakerfeaturestoreruntime (~> 1) + aws-sdk-sagemakergeospatial (~> 1) + aws-sdk-sagemakermetrics (~> 1) + aws-sdk-sagemakerruntime (~> 1) + aws-sdk-savingsplans (~> 1) + aws-sdk-scheduler (~> 1) + aws-sdk-schemas (~> 1) + aws-sdk-secretsmanager (~> 1) + aws-sdk-securityhub (~> 1) + aws-sdk-securitylake (~> 1) + aws-sdk-serverlessapplicationrepository (~> 1) + aws-sdk-servicecatalog (~> 1) + aws-sdk-servicediscovery (~> 1) + aws-sdk-servicequotas (~> 1) + aws-sdk-ses (~> 1) + aws-sdk-sesv2 (~> 1) + aws-sdk-shield (~> 1) + aws-sdk-signer (~> 1) + aws-sdk-simpledb (~> 1) + aws-sdk-simspaceweaver (~> 1) + aws-sdk-sms (~> 1) + aws-sdk-snowball (~> 1) + aws-sdk-snowdevicemanagement (~> 1) + aws-sdk-sns (~> 1) + aws-sdk-sqs (~> 1) + aws-sdk-ssm (~> 1) + aws-sdk-ssmcontacts (~> 1) + aws-sdk-ssmincidents (~> 1) + aws-sdk-ssmquicksetup (~> 1) + aws-sdk-ssmsap (~> 1) + aws-sdk-ssoadmin (~> 1) + aws-sdk-states (~> 1) + aws-sdk-storagegateway (~> 1) + aws-sdk-supplychain (~> 1) + aws-sdk-support (~> 1) + aws-sdk-supportapp (~> 1) + aws-sdk-swf (~> 1) + aws-sdk-synthetics (~> 1) + aws-sdk-taxsettings (~> 1) + aws-sdk-textract (~> 1) + aws-sdk-timestreaminfluxdb (~> 1) + aws-sdk-timestreamquery (~> 1) + aws-sdk-timestreamwrite (~> 1) + aws-sdk-tnb (~> 1) + aws-sdk-transcribeservice (~> 1) + aws-sdk-transcribestreamingservice (~> 1) + aws-sdk-transfer (~> 1) + aws-sdk-translate (~> 1) + aws-sdk-trustedadvisor (~> 1) + aws-sdk-verifiedpermissions (~> 1) + aws-sdk-voiceid (~> 1) + aws-sdk-vpclattice (~> 1) + aws-sdk-waf (~> 1) + aws-sdk-wafregional (~> 1) + aws-sdk-wafv2 (~> 1) + aws-sdk-wellarchitected (~> 1) + aws-sdk-workdocs (~> 1) + aws-sdk-workmail (~> 1) + aws-sdk-workmailmessageflow (~> 1) + aws-sdk-workspaces (~> 1) + aws-sdk-workspacesthinclient (~> 1) + aws-sdk-workspacesweb (~> 1) + aws-sdk-xray (~> 1) + aws-sdk-robomaker (1.76.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-rolesanywhere (1.29.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-route53 (1.102.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-route53domains (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-route53profiles (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53recoverycluster (1.37.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-route53recoverycontrolconfig (1.36.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53recoveryreadiness (1.34.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-route53resolver (1.70.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3 (1.167.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sdk-kms (~> 1) + aws-sigv4 (~> 1.5) + aws-sdk-s3control (1.94.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-s3outposts (1.41.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sagemaker (1.268.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sagemakeredgemanager (1.37.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sagemakerfeaturestoreruntime (1.42.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sagemakergeospatial (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-sagemakermetrics (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sagemakerruntime (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-savingsplans (1.52.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-scheduler (1.25.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-schemas (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-secretsmanager (1.108.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-securityhub (1.121.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-securitylake (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-serverlessapplicationrepository (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-servicecatalog (1.105.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-servicediscovery (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-servicequotas (1.48.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ses (1.75.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sesv2 (1.63.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-shield (1.74.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-signer (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-simpledb (1.57.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv2 (~> 1.0) + aws-sdk-simspaceweaver (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-sms (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-snowball (1.79.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-snowdevicemanagement (1.31.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-sns (1.88.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-sqs (1.86.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ssm (1.182.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ssmcontacts (1.40.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ssmincidents (1.45.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-ssmquicksetup (1.6.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ssmsap (1.30.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-ssoadmin (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-states (1.80.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-storagegateway (1.98.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-supplychain (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-support (1.70.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-supportapp (1.26.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-swf (1.65.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-synthetics (1.54.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-taxsettings (1.11.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-textract (1.69.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-timestreaminfluxdb (1.13.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-timestreamquery (1.44.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-timestreamwrite (1.40.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-tnb (1.24.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-transcribeservice (1.109.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-transcribestreamingservice (1.70.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-transfer (1.104.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-translate (1.76.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-trustedadvisor (1.16.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-verifiedpermissions (1.35.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-voiceid (1.35.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-vpclattice (1.23.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.1) + aws-sdk-waf (1.72.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-wafregional (1.74.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-wafv2 (1.95.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-wellarchitected (1.47.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workdocs (1.68.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workmail (1.76.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workmailmessageflow (1.46.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workspaces (1.121.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workspacesthinclient (1.17.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-workspacesweb (1.33.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sdk-xray (1.76.0) + aws-sdk-core (~> 3, >= 3.207.0) + aws-sigv4 (~> 1.5) + aws-sigv2 (1.2.0) + aws-sigv4 (1.10.0) + aws-eventstream (~> 1, >= 1.0.2) + base64 (0.2.0) + bcrypt (3.1.20) + bigdecimal (3.1.8) + builder (3.3.0) cancan (1.6.10) - climate_control (0.0.3) - activesupport (>= 3.0) - cocaine (0.5.3) - climate_control (>= 0.0.3, < 1.0) - coffee-rails (3.2.2) + climate_control (0.2.0) + coffee-rails (5.0.0) coffee-script (>= 2.2.0) - railties (~> 3.2.0) - coffee-script (2.2.0) + railties (>= 5.2.0) + coffee-script (2.4.1) coffee-script-source execjs - coffee-script-source (1.6.3) - daemon_controller (1.1.5) - devise (2.2.7) - bcrypt-ruby (~> 3.0) + coffee-script-source (1.12.2) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + crass (1.0.6) + date (3.3.4) + devise (4.9.4) + bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (~> 3.1) - warden (~> 1.2.1) - dotenv (0.10.0) - dotenv-rails (0.10.0) - dotenv (= 0.10.0) - erubis (2.7.0) - execjs (2.0.2) + railties (>= 4.1.0) + responders + warden (~> 1.2.3) + dotenv (3.1.4) + dotenv-rails (3.1.4) + dotenv (= 3.1.4) + railties (>= 6.1) + drb (2.2.1) + erubi (1.13.0) + execjs (2.9.1) + ffi (1.17.0) + globalid (1.2.1) + activesupport (>= 6.1) gravtastic (3.2.6) - hike (1.2.3) - i18n (0.6.5) - journey (1.0.4) - jquery-rails (3.0.4) - railties (>= 3.0, < 5.0) + i18n (1.14.6) + concurrent-ruby (~> 1.0) + io-console (0.7.2) + irb (1.14.1) + rdoc (>= 4.0.0) + reline (>= 0.4.2) + jmespath (1.6.2) + jquery-rails (4.6.0) + rails-dom-testing (>= 1, < 3) + railties (>= 4.2.0) thor (>= 0.14, < 2.0) - json (1.8.1) - libv8 (3.16.14.3) - mail (2.4.4) - i18n (>= 0.4.0) - mime-types (~> 1.16) - treetop (~> 1.4.8) - mime-types (1.25) - mini_portile (0.5.2) - multi_json (1.8.2) - nokogiri (1.6.1) - mini_portile (~> 0.5.0) - orm_adapter (0.4.0) - paperclip (3.5.4) - activemodel (>= 3.0.0) - activesupport (>= 3.0.0) - cocaine (~> 0.5.3) + json (2.7.2) + libv8 (3.16.14.19.1) + logger (1.6.1) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.4) + mime-types (3.6.0) + logger + mime-types-data (~> 3.2015) + mime-types-data (3.2024.1001) + mimemagic (0.3.10) + nokogiri (~> 1) + rake + mini_mime (1.1.5) + mini_portile2 (2.8.7) + minitest (5.25.1) + net-imap (0.4.16) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.5.0) + net-protocol + nio4r (2.7.3) + nokogiri (1.16.7) + mini_portile2 (~> 2.8.2) + racc (~> 1.4) + orm_adapter (0.5.0) + paperclip (6.1.0) + activemodel (>= 4.2.0) + activesupport (>= 4.2.0) mime-types - passenger (4.0.19) - daemon_controller (>= 1.1.0) - rack - rake (>= 0.8.1) - pg (0.17.0) - polyglot (0.3.3) - rack (1.4.5) - rack-cache (1.2) - rack (>= 0.4) - rack-ssl (1.3.3) - rack - rack-test (0.6.2) - rack (>= 1.0) - rails (3.2.8) - actionmailer (= 3.2.8) - actionpack (= 3.2.8) - activerecord (= 3.2.8) - activeresource (= 3.2.8) - activesupport (= 3.2.8) - bundler (~> 1.0) - railties (= 3.2.8) - rails-settings-cached (0.2.4) - rails (>= 3.0.0) - railties (3.2.8) - actionpack (= 3.2.8) - activesupport (= 3.2.8) - rack-ssl (~> 1.3.2) - rake (>= 0.8.7) - rdoc (~> 3.4) - thor (>= 0.14.6, < 2.0) - rake (10.1.0) - rdoc (3.12.2) - json (~> 1.4) - ref (1.0.5) + mimemagic (~> 0.3.0) + terrapin (~> 0.6.0) + passenger (6.0.23) + rack (>= 1.6.13) + rackup + rake (>= 12.3.3) + pg (1.5.8) + psych (5.1.2) + stringio + racc (1.8.1) + rack (3.1.7) + rack-session (2.0.0) + rack (>= 3.0.0) + rack-test (2.1.0) + rack (>= 1.3) + rackup (2.1.0) + rack (>= 3) + webrick (~> 1.8) + rails (7.2.1) + actioncable (= 7.2.1) + actionmailbox (= 7.2.1) + actionmailer (= 7.2.1) + actionpack (= 7.2.1) + actiontext (= 7.2.1) + actionview (= 7.2.1) + activejob (= 7.2.1) + activemodel (= 7.2.1) + activerecord (= 7.2.1) + activestorage (= 7.2.1) + activesupport (= 7.2.1) + bundler (>= 1.15.0) + railties (= 7.2.1) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + rails-settings-cached (2.9.5) + activerecord (>= 5.0.0) + railties (>= 5.0.0) + railties (7.2.1) + actionpack (= 7.2.1) + activesupport (= 7.2.1) + irb (~> 1.13) + rackup (>= 1.0.0) + rake (>= 12.2) + thor (~> 1.0, >= 1.2.2) + zeitwerk (~> 2.6) + rake (13.2.1) + rdoc (6.7.0) + psych (>= 4.0.0) + ref (2.0.0) + reline (0.5.10) + io-console (~> 0.5) + responders (3.1.1) + actionpack (>= 5.2) + railties (>= 5.2) rest-client (1.6.7) mime-types (>= 1.16) - sass (3.2.11) - sass-rails (3.2.6) - railties (~> 3.2.0) - sass (>= 3.1.10) - tilt (~> 1.3) + sass-rails (6.0.0) + sassc-rails (~> 2.1, >= 2.1.1) + sassc (2.4.0) + ffi (~> 1.9) + sassc-rails (2.1.2) + railties (>= 4.0.0) + sassc (>= 2.0) + sprockets (> 3.0) + sprockets-rails + tilt + securerandom (0.3.1) sequel (3.20.0) sinatra (1.0) rack (>= 1.0) - sprockets (2.1.3) - hike (~> 1.2) - rack (~> 1.0) - tilt (~> 1.1, != 1.3.0) - sqlite3 (1.3.8) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.5.2) + actionpack (>= 6.1) + activesupport (>= 6.1) + sprockets (>= 3.0.0) + stringio (3.1.1) taps (0.3.24) rack (>= 1.0.1) rest-client (>= 1.4.0, < 1.7.0) sequel (~> 3.20.0) sinatra (~> 1.0.0) - therubyracer (0.12.0) - libv8 (~> 3.16.14.0) + terrapin (0.6.0) + climate_control (>= 0.0.3, < 1.0) + therubyracer (0.12.3) + libv8 (~> 3.16.14.15) ref - thor (0.18.1) - tilt (1.4.1) - treetop (1.4.15) - polyglot - polyglot (>= 0.3.1) - tzinfo (0.3.38) - uglifier (2.2.1) - execjs (>= 0.3.0) - multi_json (~> 1.0, >= 1.0.2) - uuidtools (2.1.4) - warden (1.2.3) - rack (>= 1.0) + thor (1.3.2) + tilt (2.4.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + uglifier (4.2.1) + execjs (>= 0.3.0, < 3) + useragent (0.16.10) + warden (1.2.9) + rack (>= 2.0.9) + webrick (1.8.2) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + zeitwerk (2.6.18) PLATFORMS ruby DEPENDENCIES aws-sdk - bcrypt-ruby (~> 3.0.0) + bcrypt cancan - coffee-rails (~> 3.2.1) + coffee-rails devise dotenv-rails gravtastic jquery-rails json - paperclip (~> 3.0) + paperclip passenger pg - rails (= 3.2.8) - rails-settings-cached (= 0.2.4) - sass-rails (~> 3.2.3) - sqlite3 + rails (~> 7.2) + rails-settings-cached + sass-rails taps therubyracer - uglifier (>= 1.0.3) + uglifier + +RUBY VERSION + ruby 3.3.5p100 + +BUNDLED WITH + 2.5.19 diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 2a6a445..6112aca 100755 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,18 +1,18 @@ class ApplicationController < ActionController::Base protect_from_forgery - force_ssl if: :ssl_forced? - - def ssl_forced? - # Non-production environments and read-only stuff like the space API and MACs should not require SSL. (APIs hate following 301s). - if Rails.env.development? || Rails.env.test? || ["space_api","macs"].include?(params[:controller]) - return false - else - return true - end - end - - rescue_from CanCan::AccessDenied do |exception| + # force_ssl if: :ssl_forced? + # + # def ssl_forced? + # # Non-production environments and read-only stuff like the space API and MACs should not require SSL. (APIs hate following 301s). + # if Rails.env.development? || Rails.env.test? || ["space_api","macs"].include?(params[:controller]) + # return false + # else + # return true + # end + # end + + rescue_from CanCan::AccessDenied do |exception| if !current_user.nil? && current_user.orientation.blank? then flash[:alert] = "Sorry, you probably need to complete New Member Orientation before having access to this page.
Please check your email and schedule a New Member Orientation with a volunteer." else diff --git a/app/controllers/cards_controller.rb b/app/controllers/cards_controller.rb index 75d5e0a..014fd94 100755 --- a/app/controllers/cards_controller.rb +++ b/app/controllers/cards_controller.rb @@ -1,7 +1,7 @@ class CardsController < ApplicationController load_and_authorize_resource except: :authorize before_filter :authenticate_user!, except: :authorize - + # GET /cards # GET /cards.json def index @@ -101,7 +101,7 @@ def update #@card = Card.find(params[:id]) respond_to do |format| - if @card.update_attributes(params[:card]) + if @card.update_attributes(cards_params) format.html { redirect_to cards_url, :notice => 'Card was successfully updated.' } format.json { head :no_content } else @@ -125,8 +125,8 @@ def authorize begin @card = Card.find(:first, :conditions => ["lower(card_number) = ?", params[:id].downcase]) - @auth = @card.inspect - if @card && @card.user + @auth = @card.inspect + if @card && @card.user @auth = @card.user.has_certification?(params[:device]) else @auth = false @@ -157,4 +157,10 @@ def destroy format.json { head :no_content } end end + + private + + def cards_params + params.require(:card).permit(:user_id, :name, :card_number, :card_permissions) + end end diff --git a/app/controllers/certifications_controller.rb b/app/controllers/certifications_controller.rb index 4f91dc4..54b5056 100755 --- a/app/controllers/certifications_controller.rb +++ b/app/controllers/certifications_controller.rb @@ -61,7 +61,7 @@ def create # PUT /certifications/1.json def update respond_to do |format| - if @certification.update_attributes(params[:certification]) + if @certification.update_attributes(certification_params) format.html { redirect_to Certification, :notice => 'Certification was successfully updated.' } format.json { head :no_content } else @@ -81,4 +81,10 @@ def destroy format.json { head :no_content } end end + + private + + def certification_params + params.require(:certification).permit(:description, :name, :slug) + end end diff --git a/app/controllers/contracts_controller.rb b/app/controllers/contracts_controller.rb index e0fd518..598ff19 100644 --- a/app/controllers/contracts_controller.rb +++ b/app/controllers/contracts_controller.rb @@ -8,7 +8,7 @@ def index @contracts = Contract.where(user_id: params[:user_id]) end respond_to do |format| - format.html + format.html format.json { render :json => @contracts } end end @@ -23,28 +23,6 @@ def edit end def create -# if @contract.first_name.blank? && @contract.last_name.blank? && @contract.cosigner.blank? # assume autodetect of filename -# begin -# name_split = params[:contract][:document].original_filename.sub(".jpg","").split -# if name_split.count == 4 # we have one name -# @contract.first_name = name_split[0] -# @contract.last_name = name_split[1] -# # 2 is the hyphen -# @contract.signed_at = Date.parse(name_split[3]) -# elsif name_split.count == 7 && name_split[2] == "by" # we have two names -# @contract.first_name = name_split[0] -# @contract.last_name = name_split[1] -# # 2 is "by" -# @contract.cosigner = "#{name_split[3]} #{name_split[4]}" -# # 5 is the hyphen -# @contract.signed_at = Date.parse(name_split[6]) -# else -# Rails.logger.info "Couldn't determine name from filename array: #{name_split.inspect}" -# end -# rescue Exception => e -# end -# end - @contract.created_by = current_user respond_to do |format| if @contract.save @@ -62,7 +40,7 @@ def find_for_user def update respond_to do |format| - if @contract.update_attributes(params[:contract]) + if @contract.update_attributes(contracts_params) format.html { redirect_to @contract, :notice => 'Contract was successfully updated.' } format.json { head :no_content } else @@ -84,4 +62,12 @@ def destroy def load_users @users = User.accessible_by(current_ability).sort_by(&:name) end + + private + + def contracts_params + params.require(:contract).permit(:user_id, :first_name, :last_name, :cosigner, + :signed_at, :document, :document_file_name, :document_content_type, + :document_file_size, :document_updated_at) + end end diff --git a/app/controllers/door_logs_controller.rb b/app/controllers/door_logs_controller.rb index 8b17b50..67ab34d 100755 --- a/app/controllers/door_logs_controller.rb +++ b/app/controllers/door_logs_controller.rb @@ -26,7 +26,7 @@ def index # @door_logs_by_hour.each do |door_log| # # Add one computer for activate, subtract one for deactivate # if door_log.data == 1 - # + # # elsif door_log.data == 0 # mac_running_balance -= 1 # end @@ -63,5 +63,9 @@ def auto_download end end + private + def door_log_params + params.require(:door_log).permit(:data, :key) + end end diff --git a/app/controllers/ipns_controller.rb b/app/controllers/ipns_controller.rb index 6451415..f5d2657 100755 --- a/app/controllers/ipns_controller.rb +++ b/app/controllers/ipns_controller.rb @@ -15,8 +15,8 @@ def new end def create - @ipn = Ipn.new_from_dynamic_params(params) - @ipn.data = params.to_json + @ipn = Ipn.new_from_dynamic_params(ipn_params) + @ipn.data = ipn_params.to_json @ipn.save render :nothing => true #unless @ipn.validate! @@ -25,8 +25,8 @@ def create end def import - @ipn = Ipn.new_from_dynamic_params(params) - @ipn.data = params.to_json + @ipn = Ipn.new_from_dynamic_params(ipn_params) + @ipn.data = ipn_params.to_json @ipn.save redirect_to ipn_path(@ipn) #unless @ipn.validate! @@ -36,7 +36,7 @@ def import def validate if @ipn.validate! - redirect_to ipns_url, :notice => 'Valid!' + redirect_to ipns_url, :notice => 'Valid!' else redirect_to ipns_url, :notice => 'INVALID' end @@ -45,10 +45,15 @@ def validate def link result = @ipn.link_payment if result.first - redirect_to ipns_url, :notice => 'Payment was successfully linked.' + redirect_to ipns_url, :notice => 'Payment was successfully linked.' else redirect_to ipns_url, :notice => result.last end end + private + + def ipn_params + params.require(:ipn).permit(:data) + end end diff --git a/app/controllers/mac_logs_controller.rb b/app/controllers/mac_logs_controller.rb index f2905fe..c05d362 100755 --- a/app/controllers/mac_logs_controller.rb +++ b/app/controllers/mac_logs_controller.rb @@ -10,4 +10,9 @@ def index end end + private + + def mac_log_params + params.require(:mac_log).permit(:action, :ip, :mac) + end end diff --git a/app/controllers/macs_controller.rb b/app/controllers/macs_controller.rb index 6e25839..2766f0a 100755 --- a/app/controllers/macs_controller.rb +++ b/app/controllers/macs_controller.rb @@ -21,7 +21,7 @@ def index mac_log.last.each do |entry| # Find an activate followed immediately by a deactivate if entry.action == "activate" - last_active = entry + last_active = entry else if last_active && entry.action == "deactivate" # Calculate the time difference between the two and append to this mac's total time @@ -60,10 +60,10 @@ def index end end end - + #@active_macs = Mac.where(:active => true, :hidden => false) #@active_macs += Mac.where(:active => true, :hidden => nil) - + # De-dupe users for the public if can? :update, Mac then @active_macs = Mac.where("macs.active = ? AND (macs.hidden IS NULL OR macs.hidden = ?)", true, false).includes(:user).order("users.name ASC") @@ -81,7 +81,7 @@ def index format.html format.json { @filtered_macs = Mac.select("macs.mac, users.name, macs.note").where("macs.active = ? AND (macs.hidden IS NULL OR macs.hidden = ?)", true, false).joins(:user) - render :json => @filtered_macs + render :json => @filtered_macs } end end @@ -145,7 +145,7 @@ def new @mac = Mac.new if can? :manage, Mac then @users = User.accessible_by(current_ability).sort_by(&:name) - else + else @users = [current_user] end @@ -157,24 +157,24 @@ def new # GET /macs/1/edit def edit - @mac = Mac.find(params[:id]) + @mac = Mac.find(macs_params) if can? :manage, Mac then @users = User.accessible_by(current_ability).sort_by(&:name) - else + else @users = [current_user] end end # POST /macs def create - @mac = Mac.new(params[:mac]) + @mac = Mac.new(macs_params) @existing_mac = Mac.find_by_mac(@mac.mac) if can? :manage, Mac then @users = User.accessible_by(current_ability).sort_by(&:name) - else + else @users = [current_user] end - + if @existing_mac.present? if @existing_mac.user_id.nil? redirect_to edit_mac_path(@existing_mac), :notice => 'This MAC already exists, edit it here:' @@ -183,7 +183,7 @@ def create render :action => "new" end else - + respond_to do |format| if @mac.save format.html { redirect_to macs_path, :notice => 'MAC was successfully created.' } @@ -207,7 +207,7 @@ def update if can? :manage, Mac then @users = User.accessible_by(current_ability).sort_by(&:name) - else + else @users = [current_user] end @@ -293,7 +293,7 @@ def scan end IO.popen(command) { |stdin| result = stdin.read() - result.lines.each { |line| + result.lines.each { |line| Rails.logger.info "Reading stdin: "+line.inspect next if line !~ /^([\d\.]+)\s+([[:xdigit:]:]+)\s/; macs[($2).downcase] = ($1).downcase; @@ -346,7 +346,7 @@ def scan def import -require 'csv' +require 'csv' csv_text = File.read('mac_log.csv') csv = CSV.parse(csv_text) @@ -359,4 +359,9 @@ def import end + private + + def macs_params + attr_accessible :active, :ip, :mac, :refreshed, :since, :hidden, :note, :user_id + end end diff --git a/app/controllers/payments_controller.rb b/app/controllers/payments_controller.rb index 8b7633c..236acdc 100755 --- a/app/controllers/payments_controller.rb +++ b/app/controllers/payments_controller.rb @@ -16,9 +16,9 @@ class PaymentsController < ApplicationController # GET /payments.json def index @payments = @payments.order("date DESC") - @graph = { :members => chart("members"), - :total => chart("total"), - :basic => chart("basic"), + @graph = { :members => chart("members"), + :total => chart("total"), + :basic => chart("basic"), :associate => chart("associate")} respond_to do |format| @@ -39,14 +39,14 @@ def chart name elsif chart_name == "associate" chart_type = [25] else - chart_type = [] + chart_type = [] end payment_months = @payments.sort_by(&:date).group_by{ |p| p.date.beginning_of_month } @payments_by_month = [] payment_months.each do |month| # Calculate sum of amounts for each month and store at end of month array - @payments_by_month << [month.first.to_time.to_i*1000, month.last.sum{|p| + @payments_by_month << [month.first.to_time.to_i*1000, month.last.sum{|p| amount = amount_or_level(p) if chart_type.include?(amount) if chart_name == "members" @@ -75,7 +75,7 @@ def amount_or_level p Rails.logger.info p.user.inspect return 0 end - end + end end # GET /payments/1 @@ -120,7 +120,7 @@ def create # PUT /payments/1.json def update respond_to do |format| - if @payment.update_attributes(params[:payment]) + if @payment.update_attributes(payments_params) format.html { redirect_to payments_url, :notice => 'Payment was successfully updated.' } format.json { head :no_content } else @@ -140,4 +140,10 @@ def destroy format.json { head :no_content } end end + + private + + def payments_params + params.require(:payment).permit(:date, :user_id, :created_by, :amount) + end end diff --git a/app/controllers/paypal_csvs_controller.rb b/app/controllers/paypal_csvs_controller.rb index 2f48d23..a92b911 100755 --- a/app/controllers/paypal_csvs_controller.rb +++ b/app/controllers/paypal_csvs_controller.rb @@ -13,16 +13,21 @@ def new def create PaypalCsv.batch_import_from_csv(params[:file].path) - redirect_to paypal_csvs_path, :notice => 'Paypal CSV batch was successfully loaded.' + redirect_to paypal_csvs_path, :notice => 'Paypal CSV batch was successfully loaded.' end def link result = @paypal_csv.link_payment if result.first - redirect_to paypal_csvs_url, :notice => 'Payment was successfully linked.' + redirect_to paypal_csvs_url, :notice => 'Payment was successfully linked.' else redirect_to paypal_csvs_url, :notice => result.last end end + private + + def paypal_csv_params + params.require(:paypal_csv).permit(:data, :_address_status, :_counterparty_status, :_currency, :_fee, :_from_email_address, :_gross, :_item_id, :_item_title, :_name, :_net, :_status, :_time, :_time_zone, :_to_email_address, :_transaction_id, :_type, :date, :string) + end end diff --git a/app/controllers/resource_categories_controller.rb b/app/controllers/resource_categories_controller.rb index e1c26fb..007e8e6 100755 --- a/app/controllers/resource_categories_controller.rb +++ b/app/controllers/resource_categories_controller.rb @@ -20,7 +20,7 @@ def update authorize! :update, @resource_category respond_to do |format| - if @resource_category.update_attributes(params[:resource_category]) + if @resource_category.update_attributes(resource_category_params) format.html { redirect_to resource_categories_path, :notice => "Category was successfully updated." } format.json { head :no_content } else @@ -43,4 +43,9 @@ def destroy end end + private + + def resource_category_params + params.require(:resource_category).permit(:name) + end end diff --git a/app/controllers/resources_controller.rb b/app/controllers/resources_controller.rb index 0bbfa4f..c68ede3 100755 --- a/app/controllers/resources_controller.rb +++ b/app/controllers/resources_controller.rb @@ -9,7 +9,7 @@ def index def new # don't get too excited... for some reason this gets set to the current_user - @resource.user_id = nil + @resource.user_id = nil end def create @@ -29,11 +29,11 @@ def create def update @resource.modified_by = current_user.id # log who modified this last - @resource.assign_attributes(params[:resource]) + @resource.assign_attributes(resources_params) authorize! :update, @resource respond_to do |format| - if @resource.update_attributes(params[:resource]) + if @resource.update_attributes(resources_params) format.html { redirect_to resource_path(@resource), :notice => "Resource was successfully updated." } format.json { head :no_content } else @@ -60,4 +60,14 @@ def load_users end end + private + + def resources_params + params.require(:resources).permit(:supercategory, :user_id, :resource_category_id, :name, :serial, :specs, :status, :donatable, + :picture, :picture_file_name, :picture_content_type, :picture_file_size, :picture_updated_at, + :picture2, :picture2_file_name, :picture2_content_type, :picture2_file_size, :picture2_updated_at, + :picture3, :picture3_file_name, :picture3_content_type, :picture3_file_size, :picture3_updated_at, + :picture4, :picture4_file_name, :picture4_content_type, :picture4_file_size, :picture4_updated_at, + :notes, :estimated_value, :disposed_at, :modified_by) + end end diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index 3a1bd19..d66cc11 100755 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -29,4 +29,9 @@ def update redirect_to settings_path end + private + + def settings_params + params.require(:setting).permit(:var) + end end diff --git a/app/controllers/user_certifications_controller.rb b/app/controllers/user_certifications_controller.rb index c6ce624..ca9b54e 100755 --- a/app/controllers/user_certifications_controller.rb +++ b/app/controllers/user_certifications_controller.rb @@ -9,7 +9,7 @@ class UserCertificationsController < ApplicationController @users = User.where(:hidden => [false,nil]).accessible_by(current_ability).sort_by(&:name) @certifications = Certification.accessible_by(current_ability).sort_by(&:name) end - + # GET /user_certifications # GET /user_certifications.json def index @@ -71,7 +71,7 @@ def update @user_certification.updated_by = current_user.id respond_to do |format| - if @user_certification.update_attributes(params[:user_certification]) + if @user_certification.update_attributes(user_certification_params) format.html { redirect_to UserCertification, :notice => 'User certification was successfully updated.' } format.json { head :no_content } else @@ -91,4 +91,10 @@ def destroy format.json { head :no_content } end end + + private + + def user_certification_params + params.require(:user_certification).permit(:certification_id, :user_id) + end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 4ba8b0e..142e08e 100755 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -75,7 +75,7 @@ def activity def new_member_report @new_users = User.where(:created_at => 3.months.ago..Date.today).where(:hidden => false).where(['member_level >= ?','1']) end - + # GET /users/1 # GET /users/1.json def show @@ -107,7 +107,7 @@ def user_summary respond_to do |format| format.html { render :partial => "user_summary" } # show.html.erb format.json { render :json => @user } - end + end end # GET /users/new @@ -148,7 +148,7 @@ def update @user.oriented_by_id = current_user.id if @user.oriented_by.blank? && (!params[:user]["orientation(1i)"].blank?) respond_to do |format| - if @user.update_attributes(params[:user]) + if @user.update_attributes(user_params) format.html { redirect_to @user, :notice => 'User was successfully updated.' } format.json { head :no_content } else @@ -199,4 +199,10 @@ def destroy format.json { head :no_content } end end + + private + + def user_params + params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, :name, :emergency_name, :emergency_phone, :current_skills, :desired_skills, :waiver, :emergency_email, :phone, :payment_method, :orientation, :member_level, :certifications, :hidden, :marketing_source, :payee, :accountant, :exit_reason, :twitter_url, :facebook_url, :github_url, :website_url, :email_visible, :phone_visible, :postal_code) + end end diff --git a/app/models/card.rb b/app/models/card.rb index de67177..4a1c6c0 100755 --- a/app/models/card.rb +++ b/app/models/card.rb @@ -1,7 +1,6 @@ class Card < ActiveRecord::Base require 'open-uri' - attr_accessible :id, :user_id, :name, :card_number, :card_permissions validates_presence_of :user_id, :card_number, :card_permissions validates_uniqueness_of :id, :card_number belongs_to :user diff --git a/app/models/certification.rb b/app/models/certification.rb index 0fbf656..f826e82 100755 --- a/app/models/certification.rb +++ b/app/models/certification.rb @@ -1,5 +1,4 @@ class Certification < ActiveRecord::Base - attr_accessible :description, :name, :slug has_many :user_certifications has_many :users, :through => :user_certifications diff --git a/app/models/contract.rb b/app/models/contract.rb index b498049..2fba28e 100644 --- a/app/models/contract.rb +++ b/app/models/contract.rb @@ -1,24 +1,20 @@ class Contract < ActiveRecord::Base belongs_to :user belongs_to :created_by, :foreign_key => "created_by_id", :class_name => "User" - attr_accessible :user_id, :first_name, :last_name, :cosigner, - :signed_at, :document, :document_file_name, :document_content_type, - :document_file_size, :document_updated_at - # :created_by not accessible for security purposes validates_presence_of :first_name, :signed_at #, :last_name - has_attached_file :document, - { :styles => + has_attached_file :document, + { :styles => { :medium => "300x300>", :large => "900x900>" }, :storage => :s3, :s3_protocol => :https, - :s3_credentials => { :access_key_id => ENV['S3_KEY'], + :s3_credentials => { :access_key_id => ENV['S3_KEY'], :secret_access_key => ENV['S3_SECRET'] }, :path => ":attachment/:id/:style.:extension", - :bucket => ENV['S3_BUCKET'] + :bucket => ENV['S3_BUCKET'] } end diff --git a/app/models/door_log.rb b/app/models/door_log.rb index 1a2676f..7e7a55b 100755 --- a/app/models/door_log.rb +++ b/app/models/door_log.rb @@ -1,5 +1,4 @@ class DoorLog < ActiveRecord::Base - attr_accessible :data, :key require 'open-uri' def self.execute_command(command) @@ -104,7 +103,7 @@ def self.parse_locked_status(door_logs, door_key) else return true # 1 = locked end - end + end end def self.download_status @@ -115,7 +114,7 @@ def self.download_status # query for status source = open("#{door_access_url}?9").read # expect {"armed"=>255, "activated"=>255, "alarm_3"=>1, "alarm_2"=>1, "door_1_locked"=>1, "door_2_locked"=>1} - # See https://github.com/heatsynclabs/Open_Access_Control_Ethernet for more info + # See https://github.com/heatsynclabs/Open_Access_Control_Ethernet for more info @status = JSON.parse(source) @status.each do |key,value| DoorLog.create!({:key => key, :data => value}) diff --git a/app/models/ipn.rb b/app/models/ipn.rb index 417884a..0fff555 100755 --- a/app/models/ipn.rb +++ b/app/models/ipn.rb @@ -1,6 +1,5 @@ require 'net/http' class Ipn < ActiveRecord::Base - attr_accessible :data belongs_to :payment after_create :create_payment @@ -44,7 +43,7 @@ def validate! return false end unless response == "VERIFIED" - Rails.logger.error "Invalid IPN: #{response}" + Rails.logger.error "Invalid IPN: #{response}" Rails.logger.error "Data: #{self.data}" return false end @@ -57,6 +56,7 @@ def link_payment end private + def create_payment # find user by email, then by payee user = User.where("lower(email) = ?", self._from_email_address.downcase).first @@ -91,5 +91,4 @@ def create_payment return [true] end - end diff --git a/app/models/mac.rb b/app/models/mac.rb index 45a7951..6bb4b0c 100755 --- a/app/models/mac.rb +++ b/app/models/mac.rb @@ -1,6 +1,5 @@ class Mac < ActiveRecord::Base belongs_to :user - attr_accessible :active, :ip, :mac, :refreshed, :since, :hidden, :note, :user_id validates_uniqueness_of :mac, :case_sensitive => false end diff --git a/app/models/mac_log.rb b/app/models/mac_log.rb index e29dd58..dd15598 100755 --- a/app/models/mac_log.rb +++ b/app/models/mac_log.rb @@ -1,5 +1,3 @@ class MacLog < ActiveRecord::Base - attr_accessible :action, :ip, :mac - scope :desc, order("mac_logs.created_at DESC") end diff --git a/app/models/payment.rb b/app/models/payment.rb index 8c4ab5b..446e7cd 100755 --- a/app/models/payment.rb +++ b/app/models/payment.rb @@ -2,10 +2,9 @@ class Payment < ActiveRecord::Base belongs_to :user has_one :ipn has_one :paypal_csv - attr_accessible :date, :user_id, :created_by, :amount validates_presence_of :user_id, :date, :amount # not created_by - validates_uniqueness_of :date, :scope => :user_id, :message => ' of payment already exists for this user.' + validates_uniqueness_of :date, :scope => :user_id, :message => ' of payment already exists for this user.' def human_date if date.year < DateTime.now.year diff --git a/app/models/paypal_csv.rb b/app/models/paypal_csv.rb index 17ef940..44510f0 100755 --- a/app/models/paypal_csv.rb +++ b/app/models/paypal_csv.rb @@ -1,6 +1,5 @@ require 'csv' class PaypalCsv < ActiveRecord::Base - attr_accessible :data, :_address_status, :_counterparty_status, :_currency, :_fee, :_from_email_address, :_gross, :_item_id, :_item_title, :_name, :_net, :_status, :_time, :_time_zone, :_to_email_address, :_transaction_id, :_type, :date, :string belongs_to :payment after_create :create_payment @@ -15,7 +14,7 @@ def date_parsed def self.batch_import_from_csv(filename) csv = CSV.table(filename) - csv.each do |row| + csv.each do |row| paypal_csv = PaypalCsv.new() logger.fatal row.inspect paypal_csv.attributes.each do |c| @@ -32,7 +31,7 @@ def self.batch_import_from_csv(filename) paypal_csv.data = row.to_json paypal_csv.save end - + return true end diff --git a/app/models/resource.rb b/app/models/resource.rb index 8454201..c6596df 100755 --- a/app/models/resource.rb +++ b/app/models/resource.rb @@ -1,11 +1,4 @@ class Resource < ActiveRecord::Base - attr_accessible :supercategory, :user_id, :resource_category_id, :name, :serial, :specs, :status, :donatable, -:picture, :picture_file_name, :picture_content_type, :picture_file_size, :picture_updated_at, -:picture2, :picture2_file_name, :picture2_content_type, :picture2_file_size, :picture2_updated_at, -:picture3, :picture3_file_name, :picture3_content_type, :picture3_file_size, :picture3_updated_at, -:picture4, :picture4_file_name, :picture4_content_type, :picture4_file_size, :picture4_updated_at, - :notes, :estimated_value, :disposed_at, :modified_by - belongs_to :owner, :class_name => "ToolshareUser" #TODO: remove owner belongs_to :user belongs_to :resource_category @@ -15,15 +8,15 @@ class Resource < ActiveRecord::Base :tiny => "50x50>"}, :storage => :s3, :s3_protocol => :https, - :s3_credentials => { :access_key_id => ENV['S3_KEY'], + :s3_credentials => { :access_key_id => ENV['S3_KEY'], :secret_access_key => ENV['S3_SECRET'] }, :path => ":attachment/:id/:style.:extension", :bucket => ENV['S3_BUCKET'] } has_attached_file :picture, PICTURE_OPTIONS - has_attached_file :picture2, PICTURE_OPTIONS - has_attached_file :picture3, PICTURE_OPTIONS - has_attached_file :picture4, PICTURE_OPTIONS + has_attached_file :picture2, PICTURE_OPTIONS + has_attached_file :picture3, PICTURE_OPTIONS + has_attached_file :picture4, PICTURE_OPTIONS def resource_category_name resource_category.name if resource_category diff --git a/app/models/resource_category.rb b/app/models/resource_category.rb index 7457bb1..f33848d 100755 --- a/app/models/resource_category.rb +++ b/app/models/resource_category.rb @@ -1,6 +1,5 @@ class ResourceCategory < ActiveRecord::Base has_many :resources - attr_accessible :name before_destroy :has_resources? diff --git a/app/models/setting.rb b/app/models/setting.rb index 58abe63..50222cb 100755 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -1,3 +1,2 @@ class Setting < RailsSettings::CachedSettings - attr_accessible :var end diff --git a/app/models/toolshare_user.rb b/app/models/toolshare_user.rb index 74236d5..feede52 100755 --- a/app/models/toolshare_user.rb +++ b/app/models/toolshare_user.rb @@ -1,4 +1,4 @@ class ToolshareUser < ActiveRecord::Base has_many :resources, :foreign_key => "owner_id" - attr_accessible :name, :email + # attr_accessible :name, :email end diff --git a/app/models/user.rb b/app/models/user.rb index d1b753d..094f27d 100755 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -8,10 +8,7 @@ class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable - # Setup accessible (or protected) attributes for your model - attr_accessible :email, :password, :password_confirmation, :remember_me, :name, :emergency_name, :emergency_phone, :current_skills, :desired_skills, :waiver, :emergency_email, :phone, :payment_method, :orientation, :member_level, :certifications, :hidden, :marketing_source, :payee, :accountant, :exit_reason, :twitter_url, :facebook_url, :github_url, :website_url, :email_visible, :phone_visible, :postal_code - - belongs_to :oriented_by, :foreign_key => "oriented_by_id", :class_name => "User" + belongs_to :oriented_by, foreign_key: :oriented_by_id, class_name: :user has_many :cards has_many :user_certifications has_many :certifications, :through => :user_certifications @@ -26,7 +23,8 @@ class User < ActiveRecord::Base validates_format_of [:twitter_url, :facebook_url, :github_url, :website_url], :with => URI::regexp(%w(http https)), :allow_blank => true - validates_format_of :email, :without => /\.ru$/ + # validates_format_of :email # , :without => /\.ru$/ + validates :email, uniqueness: true validates_presence_of [:name, :postal_code, :current_skills, :desired_skills, :marketing_source] after_create :send_new_user_email @@ -43,7 +41,7 @@ def absorb_user(user_to_absorb) self.save! - user_to_absorb.cards.each {|card| + user_to_absorb.cards.each {|card| Rails.logger.info "CARD BEFORE: "+card.inspect card.user_id = self.id card.save! @@ -82,7 +80,7 @@ def name_with_email_and_visibility def name_with_payee_and_member_level if payee.blank? then "#{name} - #{member_level_string}" - else + else "#{payee} for #{name} - #{member_level_string}" end end @@ -153,7 +151,6 @@ def contract_date end private - def send_new_user_email Rails.logger.info UserMailer.new_user_email(self).deliver end @@ -199,7 +196,7 @@ def member_status_calculation flair = payment_results[:flair] rank = rank/10 unless payment_results[:paid] message = payment_results[:message] unless payment_results[:message].blank? - + return {:message => message, :icon => icon, :flair => flair, :rank => rank} end @@ -214,7 +211,7 @@ def payment_status_calculation # There are payments if self.payments.count > 0 then # They're on time - if self.payments.maximum(:date) > (DateTime.now - 60.days) + if self.payments.maximum(:date) > (DateTime.now - 60.days) flair = "-paid" paid = true else @@ -228,5 +225,4 @@ def payment_status_calculation end return {:message => message, :paid => paid, :flair => flair} end - end diff --git a/app/models/user_certification.rb b/app/models/user_certification.rb index 271c038..a9b8be4 100755 --- a/app/models/user_certification.rb +++ b/app/models/user_certification.rb @@ -1,17 +1,15 @@ class UserCertification < ActiveRecord::Base - attr_accessible :certification_id, :user_id - validates_presence_of :certification_id, :user_id validates_uniqueness_of :certification_id, :scope => :user_id, :message => 'already exists for this user.' # Makes sure users don't get certified twice belongs_to :user belongs_to :certification - def user_name + def user_name if user.blank? return "n/a (user ##{user_id} missing)" else - return self.user.name + return self.user.name end end end diff --git a/config/application.rb b/config/application.rb index 5b119f1..ef1fa6d 100755 --- a/config/application.rb +++ b/config/application.rb @@ -1,59 +1,20 @@ -require File.expand_path('../boot', __FILE__) +require_relative "boot" -require 'rails/all' +require "rails/all" -if defined?(Bundler) - # If you precompile assets before deploying to production, use this line - #Bundler.require(*Rails.groups(:assets => %w(development test))) - # If you want your assets lazily compiled in production, use this line - Bundler.require(:default, :assets, Rails.env) -end +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) module Dooraccess class Application < Rails::Application - # Settings in config/environments/* take precedence over those specified here. - # Application configuration should go into files in config/initializers - # -- all .rb files in that directory are automatically loaded. - - # Custom directories with classes and modules you want to be autoloadable. - # config.autoload_paths += %W(#{config.root}/extras) - - # Only load the plugins named here, in the order given (default is alphabetical). - # :all can be used as a placeholder for all plugins not explicitly named. - # config.plugins = [ :exception_notification, :ssl_requirement, :all ] - - # Activate observers that should always be running. - # config.active_record.observers = :cacher, :garbage_collector, :forum_observer - - # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. - # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. + config.load_defaults 7.2 config.time_zone = 'America/Phoenix' - # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. - # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - # config.i18n.default_locale = :de - - # Configure the default encoding used in templates for Ruby 1.9. - config.encoding = "utf-8" - - # Configure sensitive parameters which will be filtered from the log file. - config.filter_parameters += [:password, :pass] - - # Use SQL instead of Active Record's schema dumper when creating the database. - # This is necessary if your schema can't be completely dumped by the schema dumper, - # like if you have constraints or database-specific column types - # config.active_record.schema_format = :sql - - # Enforce whitelist mode for mass assignment. - # This will create an empty whitelist of attributes available for mass-assignment for all models - # in your app. As such, your models will need to explicitly whitelist or blacklist accessible - # parameters by using an attr_accessible or attr_protected declaration. - config.active_record.whitelist_attributes = true - - # Enable the asset pipeline - config.assets.enabled = true + config.autoload_lib(ignore: %w[assets tasks]) - # Version of your assets, change this if you want to expire all your assets - config.assets.version = '1.1' + config.encoding = "utf-8" # TODO: still needed? + config.filter_parameters += [:password, :pass] # TODO: still needed? + # config.active_record.whitelist_attributes = true # TODO: still needed? end end diff --git a/config/boot.rb b/config/boot.rb index 4489e58..ebfe695 100755 --- a/config/boot.rb +++ b/config/boot.rb @@ -1,6 +1,4 @@ -require 'rubygems' +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) -# Set up gems listed in the Gemfile. -ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) - -require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE']) +require "bundler/setup" # Set up gems listed in the Gemfile. +# require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/database.yml.example b/config/database.yml.example index 6769cb8..1602558 100755 --- a/config/database.yml.example +++ b/config/database.yml.example @@ -1,15 +1,3 @@ -# SQLite version 3.x -# gem install sqlite3 -# -# Ensure the SQLite 3 gem is defined in your Gemfile -# gem 'sqlite3' - -# development: -# adapter: sqlite3 -# database: db/development.sqlite3 -# pool: 5 -# timeout: 5000 - development: adapter: postgresql encoding: unicode @@ -51,4 +39,4 @@ production: host: localhost pool: 5 username: YOUR_USERNAME_HERE - password: YOUR_PASSWORD_HERE \ No newline at end of file + password: YOUR_PASSWORD_HERE diff --git a/config/environments/development.rb b/config/environments/development.rb index a904175..1383fd7 100755 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -23,17 +23,17 @@ config.action_dispatch.best_standards_support = :builtin # Raise exception on mass assignment protection for Active Record models - config.active_record.mass_assignment_sanitizer = :strict + # config.active_record.mass_assignment_sanitizer = :strict # Log the query plan for queries taking more than this (works # with SQLite, MySQL, and PostgreSQL) - config.active_record.auto_explain_threshold_in_seconds = 0.5 + # config.active_record.auto_explain_threshold_in_seconds = 0.5 # Do not compress assets - config.assets.compress = false + # config.assets.compress = false # Expands the lines which load the assets - config.assets.debug = true + # config.assets.debug = true config.action_mailer.default_url_options = { :host => 'localhost:3000' } end diff --git a/config/environments/test.rb b/config/environments/test.rb index b89d902..99b7647 100755 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -30,7 +30,7 @@ config.action_mailer.delivery_method = :test # Raise exception on mass assignment protection for Active Record models - config.active_record.mass_assignment_sanitizer = :strict + # config.active_record.mass_assignment_sanitizer = :strict # Print deprecation notices to the stderr config.active_support.deprecation = :stderr diff --git a/config/routes.rb b/config/routes.rb index 8b636f4..fdc710d 100755 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,28 +1,25 @@ Dooraccess::Application.routes.draw do - match 'ipns/import' => 'ipns#import', :as => :import_ipn + match 'ipns/import' => 'ipns#import', :as => :import_ipn, via: [:get, :post] resources :ipns - match 'ipns/:id/link' => 'ipns#link', :as => :link_ipn - match 'ipns/:id/validate' => 'ipns#validate', :as => :validate_ipn + match 'ipns/:id/link' => 'ipns#link', :as => :link_ipn, via: [:get, :post] + match 'ipns/:id/validate' => 'ipns#validate', :as => :validate_ipn, via: [:get, :post] resources :paypal_csvs - match 'paypal_csvs/:id/link' => 'paypal_csvs#link', :as => :link_paypal_csv + match 'paypal_csvs/:id/link' => 'paypal_csvs#link', :as => :link_paypal_csv, via: [:get, :post] resources :payments resources :resources resources :resource_categories, except: :show - match 'statistics' => 'statistics#index', :as => :statistics - match 'statistics/mac_log' => 'statistics#mac_log', :as => :mac_statistics - match 'statistics/door_log' => 'statistics#door_log', :as => :door_statistics + match 'statistics' => 'statistics#index', :as => :statistics, via: [:get, :post] + match 'statistics/mac_log' => 'statistics#mac_log', :as => :mac_statistics, via: [:get, :post] + match 'statistics/door_log' => 'statistics#door_log', :as => :door_statistics, via: [:get, :post] resources :user_certifications - resources :certifications - resources :contracts - #collection do - #end - match 'contracts/find_for_user/:user_id' => 'contracts#find_for_user', as: 'find_for_user' + + match 'contracts/find_for_user/:user_id' => 'contracts#find_for_user', as: 'find_for_user', via: [:get, :post] devise_for :users, :skip => :registrations devise_scope :user do @@ -36,99 +33,43 @@ end end - match 'user_summary/:id' => 'users#user_summary' # User summary view - match 'users/activity' => 'users#activity' # User activity - match 'users/new_member_report' => 'users#new_member_report' # New member report (For emailing) - match 'users/merge' => 'users#merge_view', :via => :get # Merge view - match 'users/merge' => 'users#merge_action', :via => :post # Merge action - match 'users/inactive' => 'users#inactive' # Inactive users report - resources :users do + match 'user_summary/:id' => 'users#user_summary', via: [:get, :post] + match 'users/activity' => 'users#activity', via: [:get, :post] + match 'users/new_member_report' => 'users#new_member_report', via: [:get, :post] + get 'users/merge' => 'users#merge_view', via: [:get, :post] + post 'users/merge' => 'users#merge_action', via: [:get, :post] + match 'users/inactive' => 'users#inactive', via: [:get, :post] + + resources :users do get 'email' => 'users#compose_email', :as => "compose_email" post 'email' => 'users#send_email' resources 'contracts', only: [:index] end - match 'users/create' => 'users#create', :via => :post # Use POST users/create instead of POST users to avoid devise conflict + post 'users/create' => 'users#create' # Use POST users/create instead of POST users to avoid devise conflict - match 'cards/upload_all' => 'cards#upload_all', :as => :upload_all - match 'cards/authorize/:id' => 'cards#authorize', :as => :authorize + match 'cards/upload_all' => 'cards#upload_all', :as => :upload_all, via: [:get, :post] + match 'cards/authorize/:id' => 'cards#authorize', :as => :authorize, via: [:get, :post] resources :cards - match 'cards/:id/upload' => 'cards#upload', :as => :upload + match 'cards/:id/upload' => 'cards#upload', :as => :upload, via: [:get, :post] - match 'space_api' => 'space_api#index', :as => :space_api - match 'space_api/simple(.format)' => 'space_api#simple', :as => :space_api_simple - match 'space_api/alert_if_not/:status' => 'space_api#alert_if_not_status', :via => :get, :as => :space_api_alert_if_not_status - match 'space_api/access' => 'space_api#access', :via => :get, :as => :space_api_access - match 'space_api/access' => 'space_api#access_post', :via => :post + match 'space_api' => 'space_api#index', :as => :space_api, via: [:get, :post] + match 'space_api/simple(.format)' => 'space_api#simple', :as => :space_api_simple, via: [:get, :post] + get 'space_api/alert_if_not/:status' => 'space_api#alert_if_not_status', :as => :space_api_alert_if_not_status + get 'space_api/access' => 'space_api#access', :as => :space_api_access + post 'space_api/access' => 'space_api#access_post' - match 'door_logs' => 'door_logs#index', :as => :door_logs - match 'door_logs/download' => 'door_logs#download', :as => :download - match 'door_logs/auto_download' => 'door_logs#auto_download', :as => :auto_download + match 'door_logs' => 'door_logs#index', :as => :door_logs, via: [:get, :post] + match 'door_logs/download' => 'door_logs#download', :as => :download, via: [:get, :post] + match 'door_logs/auto_download' => 'door_logs#auto_download', :as => :auto_download, via: [:get, :post] - match 'macs/scan' => 'macs#scan' - match 'macs/import' => 'macs#import' - match 'macs/history' => 'macs#history' + match 'macs/scan' => 'macs#scan', via: [:get, :post] + match 'macs/import' => 'macs#import', via: [:get, :post] + match 'macs/history' => 'macs#history', via: [:get, :post] resources :macs resources :mac_logs resources :settings, :only => [:index, :edit, :update] - match 'more_info' => 'home#more_info' + match 'more_info' => 'home#more_info', via: [:get, :post] root :to => "home#index" - - # The priority is based upon order of creation: - # first created -> highest priority. - - # Sample of regular route: - # match 'products/:id' => 'catalog#view' - # Keep in mind you can assign values other than :controller and :action - - # Sample of named route: - # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase - # This route can be invoked with purchase_url(:id => product.id) - - # Sample resource route (maps HTTP verbs to controller actions automatically): - # resources :products - - # Sample resource route with options: - # resources :products do - # member do - # get 'short' - # post 'toggle' - # end - # - # collection do - # get 'sold' - # end - # end - - # Sample resource route with sub-resources: - # resources :products do - # resources :comments, :sales - # resource :seller - # end - - # Sample resource route with more complex sub-resources - # resources :products do - # resources :comments - # resources :sales do - # get 'recent', :on => :collection - # end - # end - - # Sample resource route within a namespace: - # namespace :admin do - # # Directs /admin/products/* to Admin::ProductsController - # # (app/controllers/admin/products_controller.rb) - # resources :products - # end - - # You can have the root of your site routed with "root" - # just remember to delete public/index.html. - # root :to => 'welcome#index' - - # See how all your routes lay out with "rake routes" - - # This is a legacy wild controller route that's not recommended for RESTful applications. - # Note: This route will make all actions in every controller accessible via GET requests. - # match ':controller(/:action(/:id))(.:format)' end diff --git a/db/seeds.rb b/db/seeds.rb index d9da97d..584b89e 100755 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -1,6 +1,6 @@ -User.create({ - name: "Admin", - email: "admin@example.com", - password: "password", - admin: true -}) \ No newline at end of file +require_relative "seeds/admin.rb" +require_relative "seeds/defaults.rb" + +initialize_local_admin! +set_defaults! + diff --git a/db/seeds/admin.rb b/db/seeds/admin.rb new file mode 100644 index 0000000..41bd3e8 --- /dev/null +++ b/db/seeds/admin.rb @@ -0,0 +1,14 @@ +def initialize_local_admin! + if Rails.env.development? + admin = User.find(email: "admin@example.com") + return if admin + + User.create({ + email: "admin@example.com", + password: "password", + password_confirmation: "password", + name: "Admin", + admin: true + }) + end +end diff --git a/config/initializers/default_settings.rb b/db/seeds/defaults.rb old mode 100755 new mode 100644 similarity index 53% rename from config/initializers/default_settings.rb rename to db/seeds/defaults.rb index f3a01e7..fce2d22 --- a/config/initializers/default_settings.rb +++ b/db/seeds/defaults.rb @@ -1,10 +1,10 @@ -@@default_settings = { - :welcome_title => "Welcome to the Hackerspace Members Site", - :welcome_body => "

We are a member-driven community workshop where you can learn, make cool stuff, meet other cool people, and make your city a better place to live!

You don't have to be a member to come visit, but if you're interested in volunteering or being a member, feel free to sign up here! For more information, Click Here.

", - :more_info_page => "No info here yet, bug a member about filling this part out!", - :member_resources_inset => "No info here yet, bug a member about filling this part out!", - :analytics_code => "", - :space_api_json_template => '{ +def set_defaults! + Setting.welcome_title = "Welcome to the Hackerspace Members Site" + Setting.welcome_body = "

We are a member-driven community workshop where you can learn, make cool stuff, meet other cool people, and make your city a better place to live!

You don't have to be a member to come visit, but if you're interested in volunteering or being a member, feel free to sign up here! For more information, Click Here.

" + Setting.more_info_page = "No info here yet, bug a member about filling this part out!" + Setting.member_resources_inset = "No info here yet, bug a member about filling this part out!" + Setting.analytics_code = "" + Setting.space_api_json_template = '{ "api" : "0.12", "space" : "Your Hackerspace Name Here", "logo" : "http://example.com/logo.png", @@ -38,10 +38,4 @@ } } }' -} - -if ActiveRecord::Base.connection.tables.include?('settings') and !defined?(::Rake) - @@default_settings.each do |key, value| - Setting.save_default(key, value) - end end diff --git a/env.example b/env.example index cdbdd7d..e85ef47 100644 --- a/env.example +++ b/env.example @@ -1,3 +1,6 @@ S3_BUCKET = S3_KEY = -S3_SECRET = \ No newline at end of file +S3_SECRET = + +DOORACCESS_DATABASE_USERNAME = +DOORACCESS_DATABASE_PASSWORD =