Packages
blossom
0.17.2
0.29.3
0.29.2
0.29.1
0.29.0
0.28.0
0.27.3
0.27.2
0.27.1
0.27.0
0.26.3
0.26.2
0.26.1
0.26.0
0.25.3
0.25.2
0.25.1
0.25.0
0.24.1
0.24.0
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.8
0.21.7
0.21.6
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.2
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.0
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Easy identity for easy authentication
Current section
Files
Jump to
Current section
Files
lib/blossom/builders/auth.ex
defmodule Blossom.Builders.Auth do
alias Blossom.Builders.Auth
alias Blossom.{Passwords, Tokens}
def extract_roles(user) do
Enum.reduce(user.organizations_roles, [], fn org_role, acc ->
extraction = %{
role: org_role.role,
organization: org_role.organization
}
[extraction | acc]
end)
end
def verify_password(user, password) do
if Passwords.matches?(password, user.password) do
{:ok, user}
else
{:error, :wrong_credentials}
end
end
def make_token(outcome, opts) do
case outcome do
{:ok, user} ->
payload = %{"roles" => Auth.extract_roles(user)}
{:ok, Tokens.login_token(payload, user, opts)}
{:error, _} = error ->
error
end
end
def login(user, password, opts) do
if user && user.password do
user
|> Auth.verify_password(password)
|> Auth.make_token(opts)
else
{:error, :wrong_credentials}
end
end
end