Giter Site home page Giter Site logo

phx_gen_auth's Introduction

Phx.Gen.Auth

An authentication system generator for Phoenix 1.5+ applications.

This project generates code from José Valim's Auth PR and is up to date through commit: 6ae63a.

Overview

The purpose of phx.gen.auth is to generate a pre-built authentication system into a Phoenix 1.5+ application that follows both security and elixir best practices. By generating code into the user's application instead of using a library, the user has complete freedom to modify the authentication system so it works best with their app. The following links have more information regarding the motivation and design of the code this generates.

Usage

Generating a Phoenix 1.5 app

phx.gen.auth must be installed into a Phoenix 1.5+ application.

Once the installer is installed, a new project can be generated by running

$ mix phx.new my_app

Please note, the --no-ecto and --no-html options are not supported.

Installation

After running mix phx.new, cd into your application's directory (ex. my_app).

Basic installation

  1. Add phx_gen_auth to your list of dependencies in mix.exs

    def deps do
      [
        {:phx_gen_auth, "~> 0.2.0", only: [:dev], runtime: false},
        ...
      ]
    end
  2. Install and compile the dependencies

    $ mix do deps.get, deps.compile
    

Umbrella installation

  1. cd into your project's web app directory (ex. apps/my_app_web)

    $ cd apps/my_app_web
    
  2. Add phx_gen_auth to your list of dependencies in mix.exs

    def deps do
      [
        {:phx_gen_auth, "~> 0.2.0", only: [:dev], runtime: false},
        ...
      ]
    end
  3. Install and compile the dependencies

    $ mix do deps.get, deps.compile
    

Running the generator

From the root of your phoenix app (or apps/my_app_web in an umbrella app), you can install the authentication system with the following command

$ mix phx.gen.auth Accounts User users

This creates the templates,views, and controllers on the web namespace, and a new MyApp.Accounts context, in the application namespace.

Next, let's install the dependencies and migrate the database

$ mix deps.get
$ mix ecto.migrate

Let's run the tests and make sure our new authentication system works as expected.

$ mix test

Finally, let's start the our phoenix server and try it out.

$ mix phx.server

Note on apps upgraded from Phoenix 1.4

If you've upgraded your app from Phoenix 1.4, you'll need to make the following update to test/support/conn_case.ex to get mix test to pass:

using do
  quote do
    # Import conveniences for testing with connections
    import Plug.Conn
    import Phoenix.ConnTest
+   import DemoWeb.ConnCase
    alias DemoWeb.Router.Helpers, as: Routes

    # The default endpoint for testing
    @endpoint DemoWeb.Endpoint
  end
end

Learning more

To learn more about phx.gen.auth, run the following command.

$ mix help phx.gen.auth

You can also look up the mix task in hexdocs.

License

Copyright 2020 Dashbit, Aaron Renner

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

phx_gen_auth's People

Contributors

aaronrenner avatar marcdel avatar goofansu avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.