Packages
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.
Current section
Files
Jump to
Current section
Files
lib/access_pass.ex
defmodule AccessPass do
@moduledoc """
This is the main Public api and out of the box all you will use.
Includes everything you need for all your authentication needs.
"""
alias AccessPass.GateKeeper
# maybe validate password === password confirm
@doc """
Checks if the given access token is not revoked or expired and returns the data stored for it
Returns `{:ok,{user: "data"}}`.
## Examples
iex> AccessPass.logged?("ODhhMDgzYjctZTE3OC00YjgyLWFiZGMtZTJjOWZiMzJjODhi")
{:ok, {username: "jordiee"}}
"""
defdelegate logged?(token), to: GateKeeper, as: :check
@doc """
Refresh for a new access_token given a refresh_token
Returns `{:ok,"access_token"}`.
## Examples
iex> AccessPass.refresh("ODhhMDgzYwfefdfeC00YjgyLWFiZGMtZTJjOWZiMzJjODhi")
{:ok, "ODhhMDgzYjctZTE3OC00YjgyLWFiZGMtZTJjOWZiMzJjODhi"}
"""
defdelegate refresh(refresh_token), to: GateKeeper, as: :refresh
@doc """
Register a new user
Returns `{"ok":
{
"type":"TYPE",
"refresh_token":"refresh token",
"refresh_expire_in": seconds,
"access_token":"access_token",
"access_expire_in": seconds
}
}`
## Examples
iex> AccessPass.register(%{
username: "example",
password: "otherexample",
email: "example@email.com",
meta: {
coolInfo: "stored in here"
}
})
{"ok":
{
"type":"basic",
"refresh_token":"MjNmYzgzNGMtMGM3MS00YTA4LTkxMWMtNDEyODU3Yzk2ZTgy",
"refresh_expire_in":1200,
"access_token":"ODhhMDgzYjctZTE3OC00YjgyLWFiZGMtZTJjOWZiMzJjODhi",
"access_expire_in":600
}
}
"""
defdelegate register(user_obj), to: GateKeeper, as: :register
@doc """
Marks a user email confirmed based on the given confirm_id
Returns `{:ok, "email confirmed"}`.
## Examples
iex> AccessPass.confirm("ODhhMDgzYwfefdfeC00YjgyLWFiZGMtZTJjOWZiMzJjODhi")
{:ok, "email confirmed"}
"""
defdelegate confirm(confirm_id), to: GateKeeper, as: :confirm
@doc """
Register a new user
Returns `{"ok":
{
"type":"TYPE",
"refresh_token":"refresh token",
"refresh_expire_in": seconds,
"access_token":"access_token",
"access_expire_in": seconds
}
}`
## Examples
iex> AccessPass.login(%{
username: "example",
password: "otherexample",
})
{"ok":
{
"type":"basic",
"refresh_token":"MjNmYzgzNGMtMGM3MS00YTA4LTkxMWMtNDEyODU3Yzk2ZTgy",
"refresh_expire_in":1200,
"access_token":"ODhhMDgzYjctZTE3OC00YjgyLWFiZGMtZTJjOWZiMzJjODhi",
"access_expire_in":600
}
}
"""
defdelegate login(username, password), to: GateKeeper, as: :log_in
@doc """
calling will set a reset password email to the linked email account of the username
Returns `{ok: "password reset sent to accounts email"}`.
## Examples
iex> AccessPass.reset_password("jordiee")
{ok: "password reset sent to accounts email"}
"""
defdelegate reset_password(username), to: GateKeeper, as: :reset_password
@doc """
calling will send a forgot_username email to the email(if it exists in system)
Returns `{ok: "sent email with related username"}`.
## Examples
iex> AccessPass.forgot_username("myemail@gmail.com")
{ok: "sent email with related username"}
"""
defdelegate forgot_username(email), to: GateKeeper, as: :forgot_username
@doc """
calling logout will revoke both access_token and refresh_token for the given access_token
Returns `{:ok}`.
## Examples
iex> AccessPass.logout("ODhhMDgzYwfefdfeC00YjgyLWFiZGMtZTJjOWZiMzJjODhi")
{:ok}
"""
defdelegate logout(access_token), to: GateKeeper, as: :log_out
@doc """
Calling will update user password for related password_id
Returns `{:ok}`.
## Examples
iex> AccessPass.change_password("ODhhMDgzYwfefdfeC00YjgyLWFiZGMtZTJjOWZiMzJjODhi","myNewPassword")
{:ok}
"""
defdelegate change_password(password_id, new_password), to: GateKeeper, as: :change_password
end