26 lines
652 B
Elixir
26 lines
652 B
Elixir
defmodule Chessh.Auth.KeyAuthenticator do
|
|
alias Chessh.{Key, Repo, Player}
|
|
import Ecto.Query
|
|
|
|
def authenticate(player = %Player{}, public_key) do
|
|
!!Repo.one(
|
|
from(k in Key,
|
|
where: k.key == ^Key.encode_key(public_key),
|
|
where: k.player_id == ^player.id
|
|
)
|
|
)
|
|
end
|
|
|
|
def authenticate(username, public_key) do
|
|
!!Repo.one(
|
|
from(k in Key,
|
|
join: p in assoc(k, :player),
|
|
where: k.key == ^Key.encode_key(public_key),
|
|
where: p.username == ^String.Chars.to_string(username)
|
|
)
|
|
)
|
|
end
|
|
|
|
def authenticate(username, public_key, _opts), do: authenticate(username, public_key)
|
|
end
|