MrCommon

Common utilities extracted from starter-reg-site for use elsewhere

Features

  • Dashboard at the mount point that relies on the host app for authentication
  • MrCommon::Registration - default registration model and controller with csv export exposed via the dashboard
  • MrCommon::PreRegistration - whitelist firstname + lastname combos, or emails for automatic registration confirmation, requires MrCommon.registration_confirmation_strategy == :pre_register
  • MrCommon::Reminder - model for generating downloadable ical reminders
  • MrCommon::Country - convenient wrapper around the Carmen gem
  • MrCommon::Pattern - a utility class for sharing common regex patterns
  • MrCommon::Concerns::CSVExportable - include to add .as_csv to any ActiveRecord model

Installation

Ensure devise is installed and a User class defines the instance method mr_common_admin?

Add to Gemfile

# Gemfile
gem 'mr_common', '~> 2'

Add to routes.rb

# config/routes.rb
mount MrCommon::Engine, at: '/common'
# If you plan to use the default registration model, 
# set the host app's root route to the default registration 
# form, and override the the templates. (See MrCommon::Reminder for more instructions )
root to: "mr_common/registrations/public#new"

Copy model/controller/views into the host app for overriding/customizing.

# Registration admin controllers + views
$ bin/rails g mr_common:admin
# Registration CSV export + renderer for customization
$ bin/rails g mr_common:csv (registrations csv export + decoration)
# Registration model (mostly for customizing validations)
$ bin/rails g mr_common:models
# The public form and success pages
$ bin/rails g mr_common:views
# All of the possible mailers
$ bin/rails g mr_common:mailers
# The public registration and success controllers
$ bin/rails g mr_common:controllers

Configure an initializer if you need different values than the defaults listed here

# config/initializers/mr_common.rb
MrCommon.base_controller_name = "::ApplicationController"
MrCommon.user_class_name = "::User"
MrCommon.authentication_method_name = :authenticate_user!
MrCommon.current_user_method_name = :current_user
MrCommon.current_user_authorization_method_name = :mr_common_admin?
MrCommon.logout_path_helper = :destroy_user_session_path
MrCommon.logout_path_method = :delete
MrCommon. = :new_user_session_path
MrCommon.host_app_layout = "application"

# Alert/Notice strings
MrCommon.registration_failure_alert = "Registration could not be completed."
MrCommon.registration_success_notice = "Registration created successfully."

# RegistrationMailer subjects
MrCommon.registration_confirmed_subject = "Your registration is confirmed."
MrCommon.registration_unconfirmed_subject = "Thanks for your interest."
MrCommon.registration_revoked_subject = "Your registration is not confirmed."

# Dashboard Title
MrCommon.title = "Mreach Common Utils"

# All Registrations will be automatically confirmed (default)
# MrCommon.registration_confirmation_strategy = :auto

# Registrations will be confirmed automatically if a PreRegistration is found
# MrCommon.registration_confirmation_strategy = :pre_register

# An admin will need to log in and click the confirm button for each registration
# MrCommon.registration_confirmation_strategy = :manual

Development

  1. gem install foreman mailcatcher
  2. clone
  3. bundle Install
  4. don't use yarn/npm, engines have to use old school sprockets manifests
  5. run bin/rails run to start the app + mailcatcher.

License

The gem is available as open source under the terms of the MIT License.