From 110eb0b1990d5d5ee77f9368a9b7653cfdc07131 Mon Sep 17 00:00:00 2001 From: Simponic Date: Mon, 19 Dec 2022 20:45:01 -0700 Subject: Implement public key and add tests --- lib/chessh/auth/keys.ex | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/chessh/auth/keys.ex') diff --git a/lib/chessh/auth/keys.ex b/lib/chessh/auth/keys.ex index d85f4a4..a948fdf 100644 --- a/lib/chessh/auth/keys.ex +++ b/lib/chessh/auth/keys.ex @@ -1,10 +1,19 @@ defmodule Chessh.Auth.KeyAuthenticator do + alias Chessh.Key + alias Chessh.Repo use Sshd.PublicKeyAuthenticator require Logger + import Ecto.Query - def authenticate(username, public_key, _opts) do - Logger.debug("#{inspect(username)}") - Logger.debug("#{inspect(public_key)}") - true + 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 -- cgit v1.2.3-70-g09d2