addict alternatives and similar packages
Based on the "Framework Components" category.
Alternatively, view addict alternatives based on common mentions on social networks and blogs.
-
ex_admin
ExAdmin is an auto administration package for Elixir and the Phoenix Framework -
phoenix_html
Phoenix.HTML functions for working with HTML strings and templates -
phoenix_ecto
Phoenix and Ecto integration with support for concurrent acceptance testing -
absinthe_plug
Plug support for Absinthe, the GraphQL toolkit for Elixir -
phoenix_live_reload
Provides live-reload functionality for Phoenix -
params
Easy parameters validation/casting with Ecto.Schema, akin to Rails' strong parameters. -
phoenix_pubsub_redis
The Redis PubSub adapter for the Phoenix framework -
dayron
A repository `similar` to Ecto.Repo that maps to an underlying http client, sending requests to an external rest api instead of a database -
rummage_phoenix
Full Phoenix Support for Rummage. It can be used for searching, sorting and paginating collections in phoenix. -
phoenix_token_auth
Token authentication solution for Phoenix. Useful for APIs for e.g. single page apps. -
sentinel
DEPRECATED - Phoenix Authentication library that wraps Guardian for extra functionality -
phx_component_helpers
Extensible Phoenix liveview components, without boilerplate -
plug_rails_cookie_session_store
Rails compatible Plug session store -
filterable
Filtering from incoming params in Elixir/Ecto/Phoenix with easy to use DSL. -
multiverse
Elixir package that allows to add compatibility layers via API gateways. -
scrivener_headers
Scrivener pagination with headers and web linking -
access pass
provides a full user authentication experience for an API. Includes login,logout,register,forgot password, forgot username, confirmation email and all that other good stuff. Includes plug for checking for authenticated users and macro for generating the required routes. -
better_params
Cleaner request parameters in Elixir web applications 🙌 -
phoenix_pubsub_rabbitmq
RabbitMQ adapter for Phoenix's PubSub layer -
plug_checkup
PlugCheckup provides a Plug for adding simple health checks to your app -
plug_rest
REST behaviour and Plug router for hypermedia web applications in Elixir -
Votex
Implements vote / like / follow functionality for Ecto models in Elixir. Inspired from Acts as Votable gem in Ruby on Rails -
trailing_format_plug
An elixir plug to support legacy APIs that use a rails-like trailing format: http://api.dev/resources.json -
plug_canonical_host
PlugCanonicalHost ensures that all requests are served by a single canonical host. -
phoenix_html_simplified_helpers
Some helpers for phoenix html( truncate, time_ago_in_words, number_with_delimiter, url_for, current_page? )
Clean code begins in your IDE with SonarLint
Do you think we are missing an alternative of addict or a related project?
Popular Comparisons
README
Addict
Addict allows you to manage users registration and authentication on your Phoenix Framework app easily.
What does it do?
For now, it enables your users to register, login, logout and recover/reset their passwords.
Requirements
Addict is dependent on an ecto User model and a database connection interface.
The user model must have at least the following schema:
field :email, :string
field :encrypted_password, :string
Plug and go
1 - Add Addict to your dependencies:
{:addict, "~> 0.3"}
1a - Note that mailgun locks Poison to an old 1.4 version, which may cause conflicts (Poison). There's a fix in place that just hasn't been pushed to hex. Resolve by also adding to your dependencies:
{:mailgun, github: "chrismccord/mailgun", branch: "master", override: true}
2 - Generate Addict configs via:
mix addict.generate.configs
3 - Generate (opinionated) boilerplate:
mix addict.generate.boilerplate
4 - Add Addict routes to your router.ex
:
defmodule YourApp.Router do
(...)
use Addict.RoutesHelper
(...)
scope "/" do
# Note that the `addict :routes` call should be inside the global
# scope rather than your app's scope:
# (i.e.: `scope "/", YourApp do: ...` vs `scope "/", do ...`)
# otherwise Phoenix won't be able to find Addict's controllers.
addict :routes
end
end
5 - Visit any of these paths on your app
/login
/register
/recover_password
/reset_password
On what does it depend?
Addict depends on:
Optionally you can make Addict send e-mails for you too. At the moment only Mailgun is supported. Feel free to contribute with another service!
Addict Configs
See all available configurations here.
How can I use it?
Routes
Add the following to your router.ex
:
defmodule ExampleApp.Router do
use Phoenix.Router
use Addict.RoutesHelper
...
scope "/" do
addict :routes
end
end
This will generate the following routes:
register_path POST / register Addict.Controller.register/2
login_path POST / login Addict.Controller.login/2
logout_path DELETE / logout Addict.Controller.logout/2
recover_password_path POST / recover_password Addict.Controller.recover_password/2
reset_password_path POST / reset_password Addict.Controller.reset_password/2
You can also override the path
or controller
/action
for a given route:
addict :routes,
logout: [path: "/sign-out", controller: ExampleApp.UserController, action: :sign_out],
recover_password: "/password/recover",
reset_password: "/password/reset"
These overrides will generate the following routes:
register_path POST / register Addict.Controller.register/2
login_path POST / login Addict.Controller.login/2
logout_path DELETE / sign-out ExampleApp.UserController.sign_out/2
recover_password_path POST / password/recover Addict.Controller.recover_password/2
reset_password_path POST / password/reset Addict.Controller.reset_password/2
Interacting with Addict
After you've added the router and generated the configs, please take look at the optional boilerplate and the Example App. Here are the interesting bits:
Addict Helper
Addict saves information on the logged in user by setting current_user
on the user's Session.
You might want to use the Addict.Helper
module that encapsulates this logic:
Addict.Helper.current_user/1
: Provided theconn
, it returns the user model's hash representation, without any associations.Addict.Helper.is_logged_in/1
: Provided theconn
, it returnstrue
if the user is logged in,false
otherwise.
Checking for authentication
Use Addict.Plugs.Authenticated
plug to validate requests on your controllers:
defmodule MyAwesomeApp.PageController do
use Phoenix.Controller
plug Addict.Plugs.Authenticated when action in [:foobar]
plug :action
def foobar(conn, _params) do
render conn, "index.html"
end
end
If the user is not logged in and requests for the above action, they will be redirected to not_logged_in_url
.
Adding Custom Mailer
For adding a custom Mailer just follow the conventions:
- Module must be
Addict.Mailers.TheEmailProvider
- Add the Mailer file in
/lib/addict/mailers
- Make sure the mailer implements the behaviour defined here
Once that is done, just set mail_service
configuration to :the_email_provider
.
TODO
Check the issues on this repository to check or track the ongoing improvements and new features.
Contributing
Feel free to send your PR with improvements or corrections!
Special thanks to the folks at #elixir-lang on freenet for being so helpful every damn time!