|
|
|
@ -1,19 +1,21 @@
|
|
|
|
|
defmodule Asciinema.Auth do
|
|
|
|
|
import Plug.Conn
|
|
|
|
|
alias Asciinema.{Repo, User}
|
|
|
|
|
alias Plug.Conn
|
|
|
|
|
|
|
|
|
|
@user_key "warden.user.user.key"
|
|
|
|
|
|
|
|
|
|
def init(opts) do
|
|
|
|
|
opts
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def call(conn, _opts) do
|
|
|
|
|
user_id = Conn.get_session(conn, "warden.user.user.key")
|
|
|
|
|
user_id = get_session(conn, @user_key)
|
|
|
|
|
user = user_id && Repo.get(User, user_id)
|
|
|
|
|
Conn.assign(conn, :current_user, user)
|
|
|
|
|
assign(conn, :current_user, user)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def get_basic_auth(conn) do
|
|
|
|
|
with ["Basic " <> auth] <- Conn.get_req_header(conn, "authorization"),
|
|
|
|
|
with ["Basic " <> auth] <- get_req_header(conn, "authorization"),
|
|
|
|
|
auth = String.replace(auth, ~r/^%/, ""), # workaround for 1.3.0-1.4.0 client bug
|
|
|
|
|
{:ok, username_password} <- Base.decode64(auth),
|
|
|
|
|
[username, password] <- String.split(username_password, ":") do
|
|
|
|
@ -28,6 +30,6 @@ defmodule Asciinema.Auth do
|
|
|
|
|
end
|
|
|
|
|
def put_basic_auth(conn, username, password) do
|
|
|
|
|
auth = Base.encode64("#{username}:#{password}")
|
|
|
|
|
Conn.put_req_header(conn, "authorization", "Basic " <> auth)
|
|
|
|
|
put_req_header(conn, "authorization", "Basic " <> auth)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|