README.md

<img align="left" src="https://raw.githubusercontent.com/Erlang-Openid/phx_gen_oidcc/main/assets/logo.svg" width="150px" style="margin-right: 15px">

# Phx Gen Oidcc

[![EEF Security WG project](https://img.shields.io/badge/EEF-Security-black)](https://github.com/erlef/security-wg)
[![Main Branch](https://github.com/Erlang-Openid/phx_gen_oidcc/actions/workflows/branch_main.yml/badge.svg?branch=main)](https://github.com/Erlang-Openid/phx_gen_oidcc/actions/workflows/branch_main.yml)
[![Module Version](https://img.shields.io/hexpm/v/phx_gen_oidcc.svg)](https://hex.pm/packages/phx_gen_oidcc)
[![Total Download](https://img.shields.io/hexpm/dt/phx_gen_oidcc.svg)](https://hex.pm/packages/phx_gen_oidcc)
[![License](https://img.shields.io/hexpm/l/phx_gen_oidcc.svg)](https://github.com/Erlang-Openid/phx_gen_oidcc/blob/main/LICENSE)
[![Last Updated](https://img.shields.io/github/last-commit/Erlang-Openid/phx_gen_oidcc.svg)](https://github.com/Erlang-Openid/phx_gen_oidcc/commits/master)
[![Coverage Status](https://coveralls.io/repos/github/Erlang-Openid/phx_gen_oidcc/badge.svg?branch=main)](https://coveralls.io/github/Erlang-Openid/phx_gen_oidcc?branch=main)

An OpenID Login Generator for Phoenix 1.7 Projects

This library has taken some inspiration from
[@aaronrenner](https://github.com/aaronrenner)'s
[`phx_gen_auth`](https://github.com/aaronrenner/phx_gen_auth).

<!-- TODO: Uncomment after certification -->
<!--
OpenID Certified by Jonatan Männchen at the Erlang Ecosystem Foundation for the
basic and configuration profile of the OpenID Connect protocol. For details,
check the [Conformance Documentation](https://github.com/erlef/oidcc/blob/main/conformance/HOWTO.md).

![OpenID Connect Certified Logo](https://raw.githubusercontent.com/Erlang-Openid/phx_gen_oidcc/main/assets/certified.svg)
-->

<picture style="margin-right: 15px; float: left">
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/Erlang-Openid/phx_gen_oidcc/main/assets/erlef-logo-dark.svg" width="115px" align="left">
  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/Erlang-Openid/phx_gen_oidcc/main/assets/erlef-logo-light.svg" width="115px" align="left">
  <img alt="Erlang Ecosystem Foundation Logo" src="https://raw.githubusercontent.com/Erlang-Openid/phx_gen_oidcc/main/assets/erlef-logo-light.svg" width="115px" align="left">
</picture>

The development of the library and the certification is funded as an
[Erlang Ecosystem Foundation](https://erlef.org/) stipend entered by the
[Security Working Group](https://erlef.org/wg/security).

## Overview

The purpose of `phx.gen.oidcc` is to generate a pre-built authentication system
into a Phoenix 1.7 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.

## Installation

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

1. Add `phx_gen_oidcc` to your list of dependencies in `mix.exs`
    ```elixir
    def deps do
      [
        {:phx_gen_oidcc, "~> 0.1.0", only: [:dev], runtime: false},
        ...
      ]
    end
    ```
1. Install and compile the dependencies
    ```
    $ mix do deps.get, deps.compile
    ```

## Running the generator

From the root of your phoenix app, you
can install the authentication system with the following command

```console
$ mix phx.gen.oidcc \
    MyApp.ConfigProviderName \
    "https://isser.example.com" \
    "client_id" \
    "client_secret"
```

This creates the templates,views, and controllers on the web namespace, and
starts a new `Oidcc.ProviderConfiguration.Worker`, in the application.

Next, let's install the dependencies

```console
$ mix deps.get
```

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

```console
$ mix test
```

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

```console
$ mix phx.server
```

## Learning more

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

```console
$ mix help phx.gen.oidcc
```

You can also look up the mix task in
[hexdocs](https://hexdocs.pm/phx_gen_oidcc).