Packages
blossom
0.27.3
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/passwords.ex
defmodule Blossom.Passwords do
alias Blossom.Passwords
def hash(string) do
Bcrypt.Base.hash_password(string, Bcrypt.Base.gen_salt())
end
def validate_length(string, opts) do
if String.length(string) >= opts[:min_password_length] do
{:ok, nil}
else
{:error, :short_password}
end
end
def validate(string, opts) do
[
Passwords.validate_length(string, opts)
]
|> Enum.reduce_while({:ok, string}, fn outcome, acc ->
case outcome do
{:error, _e} -> {:halt, outcome}
_ -> {:cont, acc}
end
end)
end
def matches?(password, saved_password) do
Bcrypt.verify_pass(password, saved_password)
end
def generate(opts) do
range = Enum.concat([?0..?9, ?A..?Z, ?a..?z, [?_, ?-, ?:, ??, ?!, ?.]])
for(_i <- 1..opts[:min_password_length], do: <<Enum.random(range)>>)
|> Enum.join()
end
end