Manual Installation

  1. Create mochi.cr in initalizers and paste this in:

     require "mochi"
  2. Create a migration and paste in:

    Granite:

    ```sql -- +micrate Up CREATE TABLE users ( id INTEGER NOT NULL PRIMARY KEY, email VARCHAR, password_digest VARCHAR, created_at TIMESTAMP, updated_at TIMESTAMP );

  -- +micrate Down
  DROP TABLE IF EXISTS users;
```

or

**Jennifer:**

```crystal
class CreateUser < Jennifer::Migration::Base
  def up
    create_table(:users) do |t|
      t.string :email
      t.string :password_digest
      t.timestamp :created_at
      t.timestamp :updated_at
    end
  end

  def down
    drop_table(:users)
  end
end
```
  1. Migrate:

    Granite:

     amber db migrate

    or

    Jennifer:

     crystal sam.cr -- db:migrate
  2. Create a controller titled user_controller.cr and paste in this file:

    user_controller

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

    session_controller

  4. Add these to your routes:

    Change pipeline :web to pipeline :web, :auth and add:

     plug CurrentUser.new

    Create an :auth pipeline with:

     pipeline :auth do
       plug Authenticate.new
     end

    Create a new route section just for :auth:

     routes :auth do
       get "/profile", UserController, :show
       get "/profile/edit", UserController, :edit
       patch "/profile", UserController, :update
       get "/signout", SessionController, :delete
     end

    Add this to your :web routes:

     get "/signin", SessionController, :new
     post "/session", SessionController, :create
     get "/signup", UserController, :new
     post "/registration", UserController, :create
  5. Create a piple titled authenticate.cr and paste in this file:

    authenticate

  6. Copy & Paste all the views found here:

    Views

  7. Add a model:

    Granite:

    user

    or

    Jennifer:

    user{:target="_blank"}

  8. Open config/application.cr and between the # Start Generator & # End Generator add:

    require "../src/models/**"
    require "../src/pipes/**"
  9. Open application_controller.cr and add:

    def current_user
      context.current_user
    end
  10. Done! And that's why we have a CLI.

Last updated