thecore_ui_commons 3.0.10 → 3.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/Rakefile +2 -31
- data/app/assets/javascripts/app/active_job_monitor.js +1 -0
- data/app/assets/javascripts/rails_admin/main.js +1 -0
- data/app/assets/javascripts/thecore_ui_commons.js +20 -0
- data/app/assets/stylesheets/devise/sessions.css +34 -2
- data/app/assets/stylesheets/thecore_ui_commons.scss +2 -0
- data/app/helpers/thecore_helper.rb +9 -0
- data/config/initializers/abilities.rb +14 -0
- data/config/initializers/add_to_db_migrations.rb +5 -0
- data/config/initializers/after_initialize.rb +8 -0
- data/config/initializers/application_config.rb +12 -0
- data/config/initializers/assets.rb +13 -0
- data/config/initializers/concern_application_controller.rb +79 -0
- data/config/initializers/concern_user.rb +9 -0
- data/config/initializers/{charts_helper.rb → helper_charts.rb} +0 -0
- data/config/routes.rb +5 -1
- data/db/seeds.rb +1 -1
- data/lib/thecore_ui_commons/engine.rb +0 -10
- data/lib/thecore_ui_commons.rb +4 -9
- metadata +45 -54
- data/MIT-LICENSE +0 -20
- data/app/controllers/application_controller.rb +0 -2
- data/app/views/devise/sessions/new.html.erb +0 -25
- data/config/initializers/thecore_ui_commons_assets.rb +0 -12
- data/config/initializers/thecore_ui_commons_configs.rb +0 -17
- data/config/initializers/thecore_ui_commons_helper.rb +0 -29
- data/db/migrate/20200515070620_add_username_to_user.rb +0 -53
- data/db/migrate/20200515132932_add_rememberable_to_user.rb +0 -5
- data/lib/concerns/thecore_ui_commons_user.rb +0 -29
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: dd76f97a808fa400e1c08fa5b467e9d708f43450295f0025cce65a68c5f875a0
         | 
| 4 | 
            +
              data.tar.gz: '08bbaeeeb52df83cb053c1210685abc94b88a373ed88690210c44bdf4fbfc559'
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 6a671522375a69039ed9add52f68ccd958ca9d1bcbcb05b49c7beec1f4c44c6b77b6da8f651147ca613a18cf4a17f0d193b145e76512c03e6ae93d1cb48405f1
         | 
| 7 | 
            +
              data.tar.gz: fed6ba02869995a012a2191f13b361175ba688d48a916eb93cfc7d814907672a0bf5b68b02a38faa7b87039187288016b837b371a21ae07149829608d057ad53
         | 
    
        data/README.md
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    | @@ -1,32 +1,3 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
              require 'bundler/setup'
         | 
| 3 | 
            -
            rescue LoadError
         | 
| 4 | 
            -
              puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
         | 
| 5 | 
            -
            end
         | 
| 1 | 
            +
            require "bundler/setup"
         | 
| 6 2 |  | 
| 7 | 
            -
            require  | 
| 8 | 
            -
             | 
| 9 | 
            -
            RDoc::Task.new(:rdoc) do |rdoc|
         | 
| 10 | 
            -
              rdoc.rdoc_dir = 'rdoc'
         | 
| 11 | 
            -
              rdoc.title    = 'ThecoreUiCommons'
         | 
| 12 | 
            -
              rdoc.options << '--line-numbers'
         | 
| 13 | 
            -
              rdoc.rdoc_files.include('README.md')
         | 
| 14 | 
            -
              rdoc.rdoc_files.include('lib/**/*.rb')
         | 
| 15 | 
            -
            end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
            APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
         | 
| 18 | 
            -
            load 'rails/tasks/engine.rake'
         | 
| 19 | 
            -
             | 
| 20 | 
            -
            load 'rails/tasks/statistics.rake'
         | 
| 21 | 
            -
             | 
| 22 | 
            -
            require 'bundler/gem_tasks'
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            require 'rake/testtask'
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            Rake::TestTask.new(:test) do |t|
         | 
| 27 | 
            -
              t.libs << 'test'
         | 
| 28 | 
            -
              t.pattern = 'test/**/*_test.rb'
         | 
| 29 | 
            -
              t.verbose = false
         | 
| 30 | 
            -
            end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
            task default: :test
         | 
| 3 | 
            +
            require "bundler/gem_tasks"
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            console.log("APP/active_job_monitor.js")
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            console.log("Rails Admin Main JS")
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            // This file can be overridden in your engine
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            let currentURL = new URL(window.location.href);
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            $(document).on('turbo:load', function (event) {
         | 
| 6 | 
            +
                currentURL = new URL(event.originalEvent.detail.url);
         | 
| 7 | 
            +
                console.log("Page loaded listening to turbo:load event", currentURL.href);
         | 
| 8 | 
            +
                console.log(" - Protocol:", currentURL.protocol);
         | 
| 9 | 
            +
                console.log(" - Username:", currentURL.username);
         | 
| 10 | 
            +
                console.log(" - Password:", currentURL.password);
         | 
| 11 | 
            +
                console.log(" - Host:", currentURL.host);
         | 
| 12 | 
            +
                console.log(" - Hostname:", currentURL.hostname);
         | 
| 13 | 
            +
                console.log(" - Port:", currentURL.port);
         | 
| 14 | 
            +
                console.log(" - Pathname:", currentURL.pathname);
         | 
| 15 | 
            +
                console.log(" - Search:", currentURL.search);
         | 
| 16 | 
            +
                currentURL.searchParams.forEach((v, k) => {
         | 
| 17 | 
            +
                    console.log(`  - ${k}: ${v}`);
         | 
| 18 | 
            +
                })
         | 
| 19 | 
            +
                console.log(" - Hash:", currentURL.hash);
         | 
| 20 | 
            +
            });
         | 
| @@ -6,6 +6,10 @@ body { | |
| 6 6 | 
             
                margin: 0;
         | 
| 7 7 | 
             
                background-color: #37505C;
         | 
| 8 8 | 
             
                overflow: hidden;
         | 
| 9 | 
            +
                color: #FFEAD0;
         | 
| 10 | 
            +
            }
         | 
| 11 | 
            +
            h2 {
         | 
| 12 | 
            +
              display: none;
         | 
| 9 13 | 
             
            }
         | 
| 10 14 | 
             
            /* unvisited link */
         | 
| 11 15 | 
             
            a:link {
         | 
| @@ -67,9 +71,8 @@ a:active { | |
| 67 71 | 
             
            .contained div {
         | 
| 68 72 | 
             
              margin-bottom: 1em;
         | 
| 69 73 | 
             
            }
         | 
| 70 | 
            -
             | 
| 74 | 
            +
            #user_password, #user_email {
         | 
| 71 75 | 
             
                display: block;
         | 
| 72 | 
            -
                width: 100%;
         | 
| 73 76 | 
             
                height: 34px;
         | 
| 74 77 | 
             
                padding: 6px 12px;
         | 
| 75 78 | 
             
                font-size: 14px;
         | 
| @@ -151,3 +154,32 @@ a:active { | |
| 151 154 | 
             
                border: 1px solid transparent;
         | 
| 152 155 | 
             
                border-radius: 4px;
         | 
| 153 156 | 
             
            }
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            input[name=commit] {
         | 
| 159 | 
            +
              color: white;
         | 
| 160 | 
            +
              background-color: #ED6A16;
         | 
| 161 | 
            +
              width: 100%;
         | 
| 162 | 
            +
              border-color: #BD4B39;
         | 
| 163 | 
            +
              border-radius: 2em;
         | 
| 164 | 
            +
              -webkit-appearance: button;
         | 
| 165 | 
            +
              cursor: pointer;
         | 
| 166 | 
            +
              text-decoration: none;
         | 
| 167 | 
            +
              display: inline-block;
         | 
| 168 | 
            +
              margin-bottom: 0;
         | 
| 169 | 
            +
              font-weight: normal;
         | 
| 170 | 
            +
              text-align: center;
         | 
| 171 | 
            +
              white-space: nowrap;
         | 
| 172 | 
            +
              vertical-align: middle;
         | 
| 173 | 
            +
              touch-action: manipulation;
         | 
| 174 | 
            +
              cursor: pointer;
         | 
| 175 | 
            +
              background-image: none;
         | 
| 176 | 
            +
              border: 1px solid transparent;
         | 
| 177 | 
            +
              padding: 6px 12px;
         | 
| 178 | 
            +
              font-size: 14px;
         | 
| 179 | 
            +
              line-height: 1.428571429;
         | 
| 180 | 
            +
              border-radius: 4px;
         | 
| 181 | 
            +
              -webkit-user-select: none;
         | 
| 182 | 
            +
              -moz-user-select: none;
         | 
| 183 | 
            +
              -ms-user-select: none;
         | 
| 184 | 
            +
              user-select: none;
         | 
| 185 | 
            +
            }
         | 
| @@ -0,0 +1,5 @@ | |
| 1 | 
            +
            # This method defines the migrations paths for the engine and adds them to the migrations paths of 
         | 
| 2 | 
            +
            # the parent Rails app by using ActiveRecord::Migrator.migrations_paths.concat.
         | 
| 3 | 
            +
            # migrations_paths = [File.expand_path("../../db/migrate", __dir__)]
         | 
| 4 | 
            +
            # ActiveRecord::Migrator.migrations_paths.concat(migrations_paths)
         | 
| 5 | 
            +
            Rails.application.config.paths['db/migrate'] << File.expand_path("../../db/migrate", __dir__)
         | 
| @@ -0,0 +1,8 @@ | |
| 1 | 
            +
            Rails.application.configure do
         | 
| 2 | 
            +
                config.after_initialize do
         | 
| 3 | 
            +
                    # Controllers
         | 
| 4 | 
            +
                    ApplicationController.send :include, ConcernApplicationController
         | 
| 5 | 
            +
                    RailsAdmin::ApplicationController.send :include, ConcernApplicationController
         | 
| 6 | 
            +
                    User.send(:include, ThecoreUiCommonsUserConcern)
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
            end
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            Rails.application.config.filter_parameters += [:password]
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            Rails.application.config.active_record.raise_in_transactional_callbacks = true
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            Rails.application.config.serviceworker.routes.draw do
         | 
| 6 | 
            +
                match "/manifest.json"
         | 
| 7 | 
            +
            end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            Rails.application.config.assets.configure do |env|
         | 
| 10 | 
            +
                env.export_concurrent = false
         | 
| 11 | 
            +
            end
         | 
| 12 | 
            +
             | 
| @@ -0,0 +1,13 @@ | |
| 1 | 
            +
            Rails.application.config.assets.precompile += %w( 
         | 
| 2 | 
            +
                android-chrome-192x192.png 
         | 
| 3 | 
            +
                android-chrome-512x512.png 
         | 
| 4 | 
            +
                apple-touch-icon.png
         | 
| 5 | 
            +
                favicon.ico
         | 
| 6 | 
            +
                customer_logo.png
         | 
| 7 | 
            +
                logo.png
         | 
| 8 | 
            +
                manifest.json
         | 
| 9 | 
            +
                devise/sessions.css 
         | 
| 10 | 
            +
                devise/sessions.js
         | 
| 11 | 
            +
                thecore_ui_commons.js
         | 
| 12 | 
            +
                thecore_ui_commons.css
         | 
| 13 | 
            +
            )
         | 
| @@ -0,0 +1,79 @@ | |
| 1 | 
            +
            require 'active_support/concern'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module ConcernApplicationController
         | 
| 4 | 
            +
              extend ActiveSupport::Concern
         | 
| 5 | 
            +
              
         | 
| 6 | 
            +
              included do
         | 
| 7 | 
            +
                protect_from_forgery prepend: true
         | 
| 8 | 
            +
                
         | 
| 9 | 
            +
                rescue_from CanCan::AccessDenied do |exception| 
         | 
| 10 | 
            +
                  redirect_to main_app.root_url, alert: exception.message 
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
                
         | 
| 13 | 
            +
                before_action :store_user_location!, if: :storable_location?
         | 
| 14 | 
            +
                before_action :reject_locked!, if: :devise_controller?
         | 
| 15 | 
            +
                
         | 
| 16 | 
            +
                # Redirects on successful sign in
         | 
| 17 | 
            +
                def after_sign_in_path_for resource
         | 
| 18 | 
            +
                  root_actions = RailsAdmin::Config::Actions.all(:root).select {|action| can? action.action_name, :all }.collect(&:action_name)
         | 
| 19 | 
            +
                  
         | 
| 20 | 
            +
                  # Default root action as landing page: the first to which I have authorization to read
         | 
| 21 | 
            +
                  action = root_actions.first
         | 
| 22 | 
            +
                  puts "after_sign_in_path_for action: #{action}"
         | 
| 23 | 
            +
                  # Otherwise, if I set a Manual override for landing actions in config, I can test if I'm authorized to see it
         | 
| 24 | 
            +
                  override_landing_page = Settings.ns(:main).after_sign_in_redirect_to_root_action
         | 
| 25 | 
            +
                  action = override_landing_page.to_sym if !override_landing_page.blank? && root_actions.include?(override_landing_page.to_sym)
         | 
| 26 | 
            +
                  
         | 
| 27 | 
            +
                  # If I ask for a specific page, Let's try to go back there if I need to login or re-login
         | 
| 28 | 
            +
                  # This takes precedence on automatic computed action
         | 
| 29 | 
            +
                  stored_location = stored_location_for(resource)
         | 
| 30 | 
            +
                  puts "after_sign_in_path_for stored_location: #{stored_location}"
         | 
| 31 | 
            +
                  if !stored_location.blank? && can?(resource, :all)
         | 
| 32 | 
            +
                    # Go to the latest navigated page
         | 
| 33 | 
            +
                    puts "after_sign_in_path_for Redirect to stored_location"
         | 
| 34 | 
            +
                    return stored_location
         | 
| 35 | 
            +
                  elsif action
         | 
| 36 | 
            +
                    path = rails_admin.send("#{action}_path").sub("#{ENV['RAILS_RELATIVE_URL_ROOT']}#{ENV['RAILS_RELATIVE_URL_ROOT']}", "#{ENV['RAILS_RELATIVE_URL_ROOT']}")
         | 
| 37 | 
            +
                    puts "after_sign_in_path_for Redirect to action #{path}"
         | 
| 38 | 
            +
                    return path
         | 
| 39 | 
            +
                  else
         | 
| 40 | 
            +
                    puts "after_sign_in_path_for ERROR! Signing out user :-("
         | 
| 41 | 
            +
                    sign_out current_user
         | 
| 42 | 
            +
                    user_session = nil
         | 
| 43 | 
            +
                    current_user = nil
         | 
| 44 | 
            +
                    flash[:alert] = "Your user is not authorized to access any page."
         | 
| 45 | 
            +
                    flash[:notice] = nil
         | 
| 46 | 
            +
                    return root_path
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
                
         | 
| 50 | 
            +
                # Auto-sign out locked users
         | 
| 51 | 
            +
                def reject_locked!
         | 
| 52 | 
            +
                  if !current_user.blank? && current_user.locked?
         | 
| 53 | 
            +
                    puts " - Cleaning session"
         | 
| 54 | 
            +
                    sign_out current_user
         | 
| 55 | 
            +
                    user_session = nil
         | 
| 56 | 
            +
                    current_user = nil
         | 
| 57 | 
            +
                    flash[:alert] = "Your account is locked."
         | 
| 58 | 
            +
                    flash[:notice] = nil
         | 
| 59 | 
            +
                    redirect_to root_url
         | 
| 60 | 
            +
                  end
         | 
| 61 | 
            +
                end
         | 
| 62 | 
            +
                
         | 
| 63 | 
            +
                # Its important that the location is NOT stored if:
         | 
| 64 | 
            +
                # - The request method is not GET (non idempotent)
         | 
| 65 | 
            +
                # - The request is handled by a Devise controller such as 
         | 
| 66 | 
            +
                #     Devise::SessionsController as that could cause an 
         | 
| 67 | 
            +
                #     infinite redirect loop.
         | 
| 68 | 
            +
                # - The request is an Ajax request as this can lead to very unexpected 
         | 
| 69 | 
            +
                #     behaviour.
         | 
| 70 | 
            +
                def storable_location?
         | 
| 71 | 
            +
                  request.get? && is_navigational_format? && !devise_controller? && !request.xhr?
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
                
         | 
| 74 | 
            +
                def store_user_location!
         | 
| 75 | 
            +
                  # :user is the scope we are authenticating
         | 
| 76 | 
            +
                  store_location_for(:user, request.fullpath)
         | 
| 77 | 
            +
                end
         | 
| 78 | 
            +
              end
         | 
| 79 | 
            +
            end
         | 
| 
            File without changes
         | 
    
        data/config/routes.rb
    CHANGED
    
    
    
        data/db/seeds.rb
    CHANGED
    
    
| @@ -1,14 +1,4 @@ | |
| 1 1 | 
             
            module ThecoreUiCommons
         | 
| 2 2 | 
             
              class Engine < ::Rails::Engine
         | 
| 3 | 
            -
                initializer 'thecore_ui_commons.add_to_migrations' do |app|
         | 
| 4 | 
            -
                  # Adds the list of Thecore Engines, so to manage seeds loading, i.e.:
         | 
| 5 | 
            -
                  Thecore::Base.thecore_engines << self.class
         | 
| 6 | 
            -
                  unless app.root.to_s.match root.to_s
         | 
| 7 | 
            -
                    # APPEND TO MAIN APP MIGRATIONS FROM THIS GEM
         | 
| 8 | 
            -
                    config.paths['db/migrate'].expanded.each do |expanded_path|
         | 
| 9 | 
            -
                      app.config.paths['db/migrate'] << expanded_path
         | 
| 10 | 
            -
                    end
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
                end
         | 
| 13 3 | 
             
              end
         | 
| 14 4 | 
             
            end
         | 
    
        data/lib/thecore_ui_commons.rb
    CHANGED
    
    | @@ -1,14 +1,9 @@ | |
| 1 | 
            -
            require  | 
| 2 | 
            -
            require  | 
| 3 | 
            -
             | 
| 4 | 
            -
            require  | 
| 5 | 
            -
            # Rails
         | 
| 6 | 
            -
            require 'serviceworker-rails'
         | 
| 1 | 
            +
            require "thecore_backend_commons"
         | 
| 2 | 
            +
            require "haml"
         | 
| 3 | 
            +
            require "haml-rails"
         | 
| 4 | 
            +
            require "serviceworker-rails"
         | 
| 7 5 | 
             
            require "groupdate"
         | 
| 8 6 | 
             
            require "apexcharts"
         | 
| 9 | 
            -
            require "image_processing"
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            require 'concerns/thecore_ui_commons_user'
         | 
| 12 7 |  | 
| 13 8 | 
             
            require "thecore_ui_commons/engine"
         | 
| 14 9 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,121 +1,106 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: thecore_ui_commons
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 3.0. | 
| 4 | 
            +
              version: 3.0.11
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Gabriele Tassoni
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023-02- | 
| 11 | 
            +
            date: 2023-02-11 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name:  | 
| 14 | 
            +
              name: thecore_backend_commons
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - - " | 
| 17 | 
            +
                - - "~>"
         | 
| 18 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '0'
         | 
| 19 | 
            +
                    version: '3.0'
         | 
| 20 20 | 
             
              type: :runtime
         | 
| 21 21 | 
             
              prerelease: false
         | 
| 22 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 23 | 
             
                requirements:
         | 
| 24 | 
            -
                - - " | 
| 24 | 
            +
                - - "~>"
         | 
| 25 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: '0'
         | 
| 26 | 
            +
                    version: '3.0'
         | 
| 27 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            -
              name: haml | 
| 28 | 
            +
              name: haml
         | 
| 29 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 30 | 
             
                requirements:
         | 
| 31 | 
            -
                - - " | 
| 31 | 
            +
                - - "~>"
         | 
| 32 32 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: '0'
         | 
| 33 | 
            +
                    version: '6.0'
         | 
| 34 34 | 
             
              type: :runtime
         | 
| 35 35 | 
             
              prerelease: false
         | 
| 36 36 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 37 | 
             
                requirements:
         | 
| 38 | 
            -
                - - " | 
| 38 | 
            +
                - - "~>"
         | 
| 39 39 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: '0'
         | 
| 40 | 
            +
                    version: '6.0'
         | 
| 41 41 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            -
              name:  | 
| 42 | 
            +
              name: haml-rails
         | 
| 43 43 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 44 | 
             
                requirements:
         | 
| 45 45 | 
             
                - - "~>"
         | 
| 46 46 | 
             
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            -
                    version: ' | 
| 47 | 
            +
                    version: '2.1'
         | 
| 48 48 | 
             
              type: :runtime
         | 
| 49 49 | 
             
              prerelease: false
         | 
| 50 50 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 51 | 
             
                requirements:
         | 
| 52 52 | 
             
                - - "~>"
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            -
                    version: ' | 
| 54 | 
            +
                    version: '2.1'
         | 
| 55 55 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 56 56 | 
             
              name: serviceworker-rails
         | 
| 57 57 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 58 | 
             
                requirements:
         | 
| 59 | 
            -
                - - " | 
| 59 | 
            +
                - - "~>"
         | 
| 60 60 | 
             
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            -
                    version: '0'
         | 
| 61 | 
            +
                    version: '0.6'
         | 
| 62 62 | 
             
              type: :runtime
         | 
| 63 63 | 
             
              prerelease: false
         | 
| 64 64 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 65 | 
             
                requirements:
         | 
| 66 | 
            -
                - - " | 
| 66 | 
            +
                - - "~>"
         | 
| 67 67 | 
             
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            -
                    version: '0'
         | 
| 68 | 
            +
                    version: '0.6'
         | 
| 69 69 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 70 70 | 
             
              name: groupdate
         | 
| 71 71 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 72 | 
             
                requirements:
         | 
| 73 | 
            -
                - - " | 
| 73 | 
            +
                - - "~>"
         | 
| 74 74 | 
             
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            -
                    version: '0'
         | 
| 75 | 
            +
                    version: '6.0'
         | 
| 76 76 | 
             
              type: :runtime
         | 
| 77 77 | 
             
              prerelease: false
         | 
| 78 78 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 79 | 
             
                requirements:
         | 
| 80 | 
            -
                - - " | 
| 80 | 
            +
                - - "~>"
         | 
| 81 81 | 
             
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            -
                    version: '0'
         | 
| 82 | 
            +
                    version: '6.0'
         | 
| 83 83 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 84 84 | 
             
              name: apexcharts
         | 
| 85 85 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 86 | 
             
                requirements:
         | 
| 87 | 
            -
                - - " | 
| 88 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            -
                    version: '0'
         | 
| 90 | 
            -
              type: :runtime
         | 
| 91 | 
            -
              prerelease: false
         | 
| 92 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            -
                requirements:
         | 
| 94 | 
            -
                - - ">="
         | 
| 95 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            -
                    version: '0'
         | 
| 97 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 98 | 
            -
              name: image_processing
         | 
| 99 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 100 | 
            -
                requirements:
         | 
| 101 | 
            -
                - - ">="
         | 
| 87 | 
            +
                - - "~>"
         | 
| 102 88 | 
             
                  - !ruby/object:Gem::Version
         | 
| 103 | 
            -
                    version: '0'
         | 
| 89 | 
            +
                    version: '0.2'
         | 
| 104 90 | 
             
              type: :runtime
         | 
| 105 91 | 
             
              prerelease: false
         | 
| 106 92 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 107 93 | 
             
                requirements:
         | 
| 108 | 
            -
                - - " | 
| 94 | 
            +
                - - "~>"
         | 
| 109 95 | 
             
                  - !ruby/object:Gem::Version
         | 
| 110 | 
            -
                    version: '0'
         | 
| 96 | 
            +
                    version: '0.2'
         | 
| 111 97 | 
             
            description: Engine to serve configurations and rails module useful for all the UIs.
         | 
| 112 98 | 
             
            email:
         | 
| 113 | 
            -
            -  | 
| 99 | 
            +
            - g.tassoni@bancolini.com
         | 
| 114 100 | 
             
            executables: []
         | 
| 115 101 | 
             
            extensions: []
         | 
| 116 102 | 
             
            extra_rdoc_files: []
         | 
| 117 103 | 
             
            files:
         | 
| 118 | 
            -
            - MIT-LICENSE
         | 
| 119 104 | 
             
            - README.md
         | 
| 120 105 | 
             
            - Rakefile
         | 
| 121 106 | 
             
            - app/assets/images/android-chrome-192x192.png
         | 
| @@ -124,13 +109,16 @@ files: | |
| 124 109 | 
             
            - app/assets/images/customer_logo.png
         | 
| 125 110 | 
             
            - app/assets/images/favicon.ico
         | 
| 126 111 | 
             
            - app/assets/images/logo.png
         | 
| 112 | 
            +
            - app/assets/javascripts/app/active_job_monitor.js
         | 
| 127 113 | 
             
            - app/assets/javascripts/browserconfig.xml
         | 
| 128 114 | 
             
            - app/assets/javascripts/devise/sessions.js.erb
         | 
| 129 115 | 
             
            - app/assets/javascripts/manifest.json
         | 
| 116 | 
            +
            - app/assets/javascripts/rails_admin/main.js
         | 
| 117 | 
            +
            - app/assets/javascripts/thecore_ui_commons.js
         | 
| 130 118 | 
             
            - app/assets/stylesheets/devise/sessions.css
         | 
| 131 | 
            -
            - app/ | 
| 119 | 
            +
            - app/assets/stylesheets/thecore_ui_commons.scss
         | 
| 120 | 
            +
            - app/helpers/thecore_helper.rb
         | 
| 132 121 | 
             
            - app/views/contact_mailer/contact_message.html.erb
         | 
| 133 | 
            -
            - app/views/devise/sessions/new.html.erb
         | 
| 134 122 | 
             
            - app/views/kaminari/_first_page.html.erb
         | 
| 135 123 | 
             
            - app/views/kaminari/_gap.html.erb
         | 
| 136 124 | 
             
            - app/views/kaminari/_last_page.html.erb
         | 
| @@ -146,10 +134,14 @@ files: | |
| 146 134 | 
             
            - app/views/layouts/mailer.text.erb
         | 
| 147 135 | 
             
            - app/views/shared/_flash.html.erb
         | 
| 148 136 | 
             
            - app/views/thecore_utils/_drag_drop_uploader.html.erb
         | 
| 149 | 
            -
            - config/initializers/ | 
| 150 | 
            -
            - config/initializers/ | 
| 151 | 
            -
            - config/initializers/ | 
| 152 | 
            -
            - config/initializers/ | 
| 137 | 
            +
            - config/initializers/abilities.rb
         | 
| 138 | 
            +
            - config/initializers/add_to_db_migrations.rb
         | 
| 139 | 
            +
            - config/initializers/after_initialize.rb
         | 
| 140 | 
            +
            - config/initializers/application_config.rb
         | 
| 141 | 
            +
            - config/initializers/assets.rb
         | 
| 142 | 
            +
            - config/initializers/concern_application_controller.rb
         | 
| 143 | 
            +
            - config/initializers/concern_user.rb
         | 
| 144 | 
            +
            - config/initializers/helper_charts.rb
         | 
| 153 145 | 
             
            - config/locales/en.ra_settings.yml
         | 
| 154 146 | 
             
            - config/locales/en.simple_form.yml
         | 
| 155 147 | 
             
            - config/locales/en.yml
         | 
| @@ -157,19 +149,18 @@ files: | |
| 157 149 | 
             
            - config/locales/it.simple_form.yml
         | 
| 158 150 | 
             
            - config/locales/it.yml
         | 
| 159 151 | 
             
            - config/routes.rb
         | 
| 160 | 
            -
            - db/migrate/20200515070620_add_username_to_user.rb
         | 
| 161 | 
            -
            - db/migrate/20200515132932_add_rememberable_to_user.rb
         | 
| 162 152 | 
             
            - db/seeds.rb
         | 
| 163 | 
            -
            - lib/concerns/thecore_ui_commons_user.rb
         | 
| 164 153 | 
             
            - lib/tasks/thecore_ui_commons_tasks.rake
         | 
| 165 154 | 
             
            - lib/thecore_ui_commons.rb
         | 
| 166 155 | 
             
            - lib/thecore_ui_commons/engine.rb
         | 
| 167 156 | 
             
            - lib/thecore_ui_commons/version.rb
         | 
| 168 157 | 
             
            homepage: https://github.com/gabrieletassoni/thecore_ui_commons
         | 
| 169 | 
            -
            licenses:
         | 
| 170 | 
            -
            - MIT
         | 
| 158 | 
            +
            licenses: []
         | 
| 171 159 | 
             
            metadata:
         | 
| 172 160 | 
             
              allowed_push_host: https://rubygems.org
         | 
| 161 | 
            +
              homepage_uri: https://github.com/gabrieletassoni/thecore_ui_commons
         | 
| 162 | 
            +
              source_code_uri: https://github.com/gabrieletassoni/thecore_ui_commons
         | 
| 163 | 
            +
              changelog_uri: https://github.com/gabrieletassoni/thecore_ui_commons/blob/master/CHANGELOG.md
         | 
| 173 164 | 
             
            post_install_message: 
         | 
| 174 165 | 
             
            rdoc_options: []
         | 
| 175 166 | 
             
            require_paths:
         | 
    
        data/MIT-LICENSE
    DELETED
    
    | @@ -1,20 +0,0 @@ | |
| 1 | 
            -
            Copyright 2020 Gabriele Tassoni
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            Permission is hereby granted, free of charge, to any person obtaining
         | 
| 4 | 
            -
            a copy of this software and associated documentation files (the
         | 
| 5 | 
            -
            "Software"), to deal in the Software without restriction, including
         | 
| 6 | 
            -
            without limitation the rights to use, copy, modify, merge, publish,
         | 
| 7 | 
            -
            distribute, sublicense, and/or sell copies of the Software, and to
         | 
| 8 | 
            -
            permit persons to whom the Software is furnished to do so, subject to
         | 
| 9 | 
            -
            the following conditions:
         | 
| 10 | 
            -
             | 
| 11 | 
            -
            The above copyright notice and this permission notice shall be
         | 
| 12 | 
            -
            included in all copies or substantial portions of the Software.
         | 
| 13 | 
            -
             | 
| 14 | 
            -
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         | 
| 15 | 
            -
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         | 
| 16 | 
            -
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         | 
| 17 | 
            -
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         | 
| 18 | 
            -
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         | 
| 19 | 
            -
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         | 
| 20 | 
            -
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         | 
| @@ -1,25 +0,0 @@ | |
| 1 | 
            -
            <div class=login-container id="login-form">
         | 
| 2 | 
            -
            <%= form_for(resource, as: resource_name, url: session_path(resource_name)) do |f| %>
         | 
| 3 | 
            -
              <div class="field">
         | 
| 4 | 
            -
                <%= f.text_field :login, autofocus: true, :class => "form-control", placeholder: t("devise.sessions.new.login") %>
         | 
| 5 | 
            -
              </div>
         | 
| 6 | 
            -
             | 
| 7 | 
            -
              <div class="field">
         | 
| 8 | 
            -
                <%= f.password_field :password, autocomplete: "off", :class => "form-control", placeholder: t("devise.sessions.new.password") %>
         | 
| 9 | 
            -
              </div>
         | 
| 10 | 
            -
             | 
| 11 | 
            -
              <% if devise_mapping.rememberable? -%>
         | 
| 12 | 
            -
              <div class="form-check">
         | 
| 13 | 
            -
                <%= f.check_box :remember_me, class: "form-check-input" %>
         | 
| 14 | 
            -
                <label class="form-check-label" for="defaultCheck1">
         | 
| 15 | 
            -
                  <%=t "activerecord.attributes.user.remember_me" %>
         | 
| 16 | 
            -
               </label>
         | 
| 17 | 
            -
              </div>
         | 
| 18 | 
            -
              <% end -%>
         | 
| 19 | 
            -
             | 
| 20 | 
            -
              <div class="actions">
         | 
| 21 | 
            -
                <%= f.submit t("devise.sessions.new.sign_in"), class: "btn" %>
         | 
| 22 | 
            -
                <%= render "devise/shared/links" %>
         | 
| 23 | 
            -
              </div>
         | 
| 24 | 
            -
            <% end %>
         | 
| 25 | 
            -
            </div>
         | 
| @@ -1,12 +0,0 @@ | |
| 1 | 
            -
            Rails.application.configure do
         | 
| 2 | 
            -
                config.assets.precompile += %w( 
         | 
| 3 | 
            -
                    android-chrome-192x192.png 
         | 
| 4 | 
            -
                    android-chrome-512x512.png 
         | 
| 5 | 
            -
                    apple-touch-icon.png
         | 
| 6 | 
            -
                    favicon.ico
         | 
| 7 | 
            -
                    customer_logo.png
         | 
| 8 | 
            -
                    logo.png
         | 
| 9 | 
            -
                    manifest.json
         | 
| 10 | 
            -
                )
         | 
| 11 | 
            -
                config.assets.precompile += %w( devise/sessions.css devise/sessions.js )
         | 
| 12 | 
            -
            end
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            Rails.application.configure do
         | 
| 2 | 
            -
                config.filter_parameters += [:password]
         | 
| 3 | 
            -
                
         | 
| 4 | 
            -
                config.active_record.raise_in_transactional_callbacks = true
         | 
| 5 | 
            -
                
         | 
| 6 | 
            -
                config.serviceworker.routes.draw do
         | 
| 7 | 
            -
                    match "/manifest.json"
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
                
         | 
| 10 | 
            -
                config.assets.configure do |env|
         | 
| 11 | 
            -
                    env.export_concurrent = false
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
                
         | 
| 14 | 
            -
                config.after_initialize do
         | 
| 15 | 
            -
                    User.send(:include, ThecoreUiCommonsUser)
         | 
| 16 | 
            -
                end
         | 
| 17 | 
            -
            end
         | 
| @@ -1,29 +0,0 @@ | |
| 1 | 
            -
            module Helpers
         | 
| 2 | 
            -
                module ThecoreUiCommonsHelper
         | 
| 3 | 
            -
                    def get_asset_tags_for(basename)
         | 
| 4 | 
            -
                        out = []
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                        # Needs to reverse since Paths are traversed in the order they occur in the search path. By default, this means the files in app/assets take precedence, and will mask corresponding paths in lib and vendor.
         | 
| 7 | 
            -
                        Rails.application.config.assets.paths.reverse.each do |basedir|
         | 
| 8 | 
            -
                            base = "#{basedir}/**/#{basename}"
         | 
| 9 | 
            -
                            base_s = Dir["#{base}.{css,scss}"]
         | 
| 10 | 
            -
                            base_j = Dir["#{base}.js"]
         | 
| 11 | 
            -
                            
         | 
| 12 | 
            -
                            (out << stylesheet_link_tag("#{get_folder base_s}/#{basename}", media: 'all', 'data-turbo-track' => true) if base_s.any?) rescue nil
         | 
| 13 | 
            -
                            (out << javascript_include_tag("#{get_folder base_j}/#{basename}", 'data-turbo-track' => true) if base_j.any?) rescue nil
         | 
| 14 | 
            -
                        end
         | 
| 15 | 
            -
             | 
| 16 | 
            -
                        # Application level assets
         | 
| 17 | 
            -
                        (out << stylesheet_link_tag('application', media: 'all', 'data-turbo-track' => true)) rescue nil
         | 
| 18 | 
            -
                        (out << javascript_include_tag('application', 'data-turbo-track' => true)) rescue nil
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                        out.join("\n").html_safe
         | 
| 21 | 
            -
                    end
         | 
| 22 | 
            -
                    
         | 
| 23 | 
            -
                    def get_folder(base)
         | 
| 24 | 
            -
                        base.first.split("/")[-2]
         | 
| 25 | 
            -
                    end
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
            end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            ActiveSupport.on_load(:action_view) { include Helpers::ThecoreUiCommonsHelper }
         | 
| @@ -1,53 +0,0 @@ | |
| 1 | 
            -
            class AddUsernameToUser < ActiveRecord::Migration[6.0]
         | 
| 2 | 
            -
              class User < ApplicationRecord
         | 
| 3 | 
            -
                # Include default devise modules. Others available are:
         | 
| 4 | 
            -
                # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
         | 
| 5 | 
            -
                devise :database_authenticatable, :trackable, :validatable
         | 
| 6 | 
            -
                # TODO: If it works, these must be added to another gem one which deal 
         | 
| 7 | 
            -
                # more with sessions
         | 
| 8 | 
            -
                # devise :database_authenticatable
         | 
| 9 | 
            -
                # devise :rememberable
         | 
| 10 | 
            -
                # devise :trackable
         | 
| 11 | 
            -
                # devise :validatable
         | 
| 12 | 
            -
                # devise :timeoutable, timeout_in: 30.minutes 
         | 
| 13 | 
            -
                # REFERENCES
         | 
| 14 | 
            -
                has_many :role_users, dependent: :destroy, inverse_of: :user
         | 
| 15 | 
            -
                has_many :roles, through: :role_users, inverse_of: :users
         | 
| 16 | 
            -
                # VALIDATIONS
         | 
| 17 | 
            -
                validates :email, uniqueness: { case_sensitive: false }, presence: true, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i }
         | 
| 18 | 
            -
                validates :password, presence: true, on: :create
         | 
| 19 | 
            -
                validates :password_confirmation, presence: true, on: :create
         | 
| 20 | 
            -
                validate :check_password_and_confirmation_equal
         | 
| 21 | 
            -
                validates_each :admin do |record, attr, value|
         | 
| 22 | 
            -
                  # Don't want admin == false if the current user is the only admin
         | 
| 23 | 
            -
                  record.errors.add(attr, I18n.t("validation.errors.cannot_unadmin_last_admin")) if record.admin_changed? && record.admin_was == true && User.where(admin: true).count == 1
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
              
         | 
| 26 | 
            -
                def display_name
         | 
| 27 | 
            -
                  email
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
              
         | 
| 30 | 
            -
                def has_role? role
         | 
| 31 | 
            -
                  roles.include? role
         | 
| 32 | 
            -
                end
         | 
| 33 | 
            -
              
         | 
| 34 | 
            -
                protected
         | 
| 35 | 
            -
              
         | 
| 36 | 
            -
                def check_password_and_confirmation_equal
         | 
| 37 | 
            -
                  errors.add(:password, I18n.t("validation.errors.password_and_confirm_must_be_the_same")) unless password == password_confirmation
         | 
| 38 | 
            -
                end
         | 
| 39 | 
            -
              end
         | 
| 40 | 
            -
              
         | 
| 41 | 
            -
              def change
         | 
| 42 | 
            -
                add_column :users, :username, :string
         | 
| 43 | 
            -
                add_index :users, :username
         | 
| 44 | 
            -
             | 
| 45 | 
            -
                puts "Computing username for existing emails"
         | 
| 46 | 
            -
                User.reset_column_information
         | 
| 47 | 
            -
                User.all.each do |u|
         | 
| 48 | 
            -
                  puts "User: #{u.email} into #{u.email.split("@").first}"
         | 
| 49 | 
            -
                  u.username = u.email.split("@").first
         | 
| 50 | 
            -
                  u.save!
         | 
| 51 | 
            -
                end
         | 
| 52 | 
            -
              end
         | 
| 53 | 
            -
            end
         | 
| @@ -1,29 +0,0 @@ | |
| 1 | 
            -
            require 'active_support/concern'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module ThecoreUiCommonsUser
         | 
| 4 | 
            -
                extend ActiveSupport::Concern
         | 
| 5 | 
            -
                
         | 
| 6 | 
            -
                included do
         | 
| 7 | 
            -
                    devise :database_authenticatable, :trackable, :validatable, :rememberable, :timeoutable, timeout_in: 30.minutes, authentication_keys: [:login]
         | 
| 8 | 
            -
                    validates :username, uniqueness: { case_sensitive: false }, presence: true, length: { in: 4..15 }
         | 
| 9 | 
            -
                    validates_format_of :username, with: /\A[a-zA-Z0-9]*\z/, on: :create, message: "can only contain letters and digits"
         | 
| 10 | 
            -
                    
         | 
| 11 | 
            -
                    attr_writer :login
         | 
| 12 | 
            -
                    
         | 
| 13 | 
            -
                    def login
         | 
| 14 | 
            -
                        @login || (self.username rescue self.email)
         | 
| 15 | 
            -
                    end
         | 
| 16 | 
            -
                    # Use login
         | 
| 17 | 
            -
                    def self.find_first_by_auth_conditions(warden_conditions)
         | 
| 18 | 
            -
                        conditions = warden_conditions.dup
         | 
| 19 | 
            -
                        if login = conditions.delete(:login)
         | 
| 20 | 
            -
                            where(conditions.to_h).where(["lower(username) = :value OR lower(email) = :value", { :value => login.downcase }]).first
         | 
| 21 | 
            -
                        elsif conditions.has_key?(:username) || conditions.has_key?(:email)
         | 
| 22 | 
            -
                            # Case insensitive login
         | 
| 23 | 
            -
                            conditions[:email].downcase! if conditions[:email]
         | 
| 24 | 
            -
                            conditions[:username].downcase! if conditions[:username]
         | 
| 25 | 
            -
                            where(conditions.to_h).first
         | 
| 26 | 
            -
                        end
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
            end
         |