Mochi
  • Introduction
  • Installation
  • Usage
  • Guides
    • Configuration
    • Authenticable
      • Introduction
      • CLI Installation
      • Manual Installation
      • Views
        • Layouts
          • _session.ecr
        • Session
          • new.ecr
        • User
          • edit.ecr
          • show.ecr
          • new.ecr
      • Models
        • granite_user.cr
        • jennifer_ser.cr
      • Controllers
        • user_controller.cr
        • session_controller.cr
      • Pipes
        • authenticate.cr
    • Confirmable
      • Introduction
      • CLI Installation
      • Manual Installation
      • Controllers
        • registration_controller.cr
      • Mailers
        • confirmation_mailer.ecr
        • confirmation_mailer.text.ecr
    • Trackable
      • Introduction
      • CLI Installation
      • Manual Installation
    • Omniauthable
      • Introduction
      • CLI Installation
      • Manual Installation
    • Recoverable
      • Introduction
      • CLI Installation
      • Manual Installation
      • Controllers
        • registration_controller.cr
      • Mailers
        • confirmation_mailer.ecr
        • confirmation_mailer.text.ecr
    • Mochi Mailer
  • Roadmap
  • Contributing
  • Contributors
Powered by GitBook
On this page

Was this helpful?

  1. Guides
  2. Recoverable

Manual Installation

PreviousCLI InstallationNextControllers

Last updated 5 years ago

Was this helpful?

  1. Create a migration and paste in:

    Granite:

     -- +micrate Up
     ALTER TABLE users ADD COLUMN confirmation_token VARCHAR NULL;
     ALTER TABLE users ADD COLUMN confirmed BOOL NULL;
     ALTER TABLE users ADD COLUMN confirmed_at TIMESTAMP NULL;
     ALTER TABLE users ADD COLUMN confirmation_sent_at TIMESTAMP NULL;
     ALTER TABLE users ADD COLUMN unconfirmed_email VARCHAR NULL;
    
     -- +micrate Down
     ALTER TABLE users DROP COLUMN confirmation_token VARCHAR NULL;
     ALTER TABLE users DROP COLUMN confirmed BOOL NULL;
     ALTER TABLE users DROP COLUMN confirmed_at TIMESTAMP NULL;
     ALTER TABLE users DROP COLUMN confirmation_sent_at TIMESTAMP NULL;
     ALTER TABLE users DROP COLUMN unconfirmed_email VARCHAR NULL;

    or

    Jennifer:

     class AddConfirmableToUser < Jennifer::Migration::Base
       def up
         change_table(:users) do |t|
           t.add_column(:confirmed, :bool)
           t.add_column(:confirmed_at, :timestamp)
           t.add_column(:confirmation_token, :string)
           t.add_column(:confirmation_sent_at, :timestamp)
           t.add_column(:unconfirmed_email, :string)
         end
       end
    
       def down
         change_table(:users) do |t|
           t.drop_column(:confirmed)
           t.drop_column(:confirmed_at)
           t.drop_column(:confirmation_token)
           t.drop_column(:confirmation_sent_at)
           t.drop_column(:unconfirmed_email)
         end
       end
     end
  2. Migrate

  3. Create a controller titled registration_controller.cr and paste in this file:

    registration_controller

  4. Create a mailer titled confirmation_mailer.cr and paste in this file:

  5. Create a second mailer titled confirmation_mailer.text.ecr and paste in this file:

  6. Add this to your routes in the :web pipeline:

     get "/registration/confirm", RegistrationController, :confirm
  7. Mixin the neccessary modules & macro:

    Granite:

    Add :confirmable to your mochi_granite macro call

     mochi_granite(:confirmable)

    or

    Jennifer:

    Add :confirmable to your mochi_jennifer macro call

     mochi_jennifer(:confirmable)
  8. Add/uncomment the mappings to your model:

    Granite:

    column confirmation_token : String
    column confirmed : Bool = false
    column confirmed_at : Time?
    column confirmation_sent_at : Time?
    column uncomfirmed_email : String?

    or

    Jennifer:

    confirmation_token: { type: String?, null: true },
    confirmed: { type: Bool, null: true },
    confirmed_at: { type: Time, null: true },
    uncomfirmed_email: { type: String? },
    confirmation_sent_at: { type: Time? },
  9. Configure SMTP - Please follow amber guides for this.

Note: Amber will print out the token in console even if smtp is disabled. Find it, and paste with /registration/confrim?token= to activate an account if you don't want to configure smtp on local.

Pro Tip: Install icr, start it, and input require "./config/application" and then pp User.find(1) and you can copy/paste the token.

  1. Done!

confirmation_mailer
confirmation_mailer.text