# Concierge
Authentication solution for Phoenix and Elixir using Guardian.
## Installation
If [available in Hex](https://hex.pm/docs/publish), the package can be installed as:
  1. Add concierge to your list of dependencies in `mix.exs`:
        def deps do
          [{:concierge, "~> 0.0.1"}]
        end
  2. Ensure concierge is started before your application:
        def application do
          [applications: [:concierge]]
        end
  3. Run `mix concierge.install`
  4. Add to `config/config.exs` 
        import_config "concierge.exs"
  5. Add to `web/web.ex`
        def controller do 
          quote do 
            # ...
            use Concierge.Controller
          end  
        end
        def view do
          quote do
            # ...
            use Concierge.Helpers
          end
        end
  6. Add to `web/router.ex`
    concierge at: "users", pipe_through: [:browser]
  7. Start server and open [http://localhost:4000/users/sign_in]
         
## Usage
### Helpers
You will have `current_user(@conn)` and `user_signed_in?(@conn)` helpers in views.
### Protecting endpoints
Concierge provides `ensure_authenticated!` controller filter. It accepts `:only` and `:except` options.
    defmodule Example.PageController do
      use Example.Web, :controller
      ensure_authenticated! only: [:protected]
      def index(conn, _params) do
        render conn, "index.html"
      end
      def protected(conn, _params) do
        render conn, "protected.html"
      end
    end
## TODO
1. Confirmations
2. OAuth
3. ...