summaryrefslogtreecommitdiff
path: root/lib/matrix_app_service_web/auth_plug.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/matrix_app_service_web/auth_plug.ex')
-rw-r--r--lib/matrix_app_service_web/auth_plug.ex29
1 files changed, 20 insertions, 9 deletions
diff --git a/lib/matrix_app_service_web/auth_plug.ex b/lib/matrix_app_service_web/auth_plug.ex
index 19f8c21..be38fb0 100644
--- a/lib/matrix_app_service_web/auth_plug.ex
+++ b/lib/matrix_app_service_web/auth_plug.ex
@@ -11,21 +11,18 @@ defmodule MatrixAppServiceWeb.AuthPlug do
@doc false
@impl Plug
- def init(opts) do
- opts
+ def init(homeserver_token) do
+ homeserver_token
end
@doc false
@impl Plug
- def call(%Plug.Conn{params: %{"access_token" => access_token}} = conn, homeserver_token)
- when access_token == homeserver_token do
- conn
+ def call(%Plug.Conn{params: %{"access_token" => access_token}} = conn, homeserver_token) when is_binary(homeserver_token) do
+ verify_access_token(conn, homeserver_token)
end
- def call(%Plug.Conn{params: %{"access_token" => _access_token}} = conn, _homeserver_token) do
- Logger.warn("Received invalid homeserver token")
-
- respond_error(conn, 403)
+ def call(%Plug.Conn{params: %{"access_token" => access_token}} = conn, homeserver_token) when is_function(homeserver_token, 0) do
+ verify_access_token(conn, homeserver_token.())
end
def call(conn, _opts) do
@@ -34,6 +31,20 @@ defmodule MatrixAppServiceWeb.AuthPlug do
respond_error(conn, 401)
end
+ defp verify_access_token(
+ %Plug.Conn{params: %{"access_token" => access_token}} = conn,
+ homeserver_token
+ )
+ when access_token == homeserver_token do
+ conn
+ end
+
+ defp verify_access_token(conn, _homeserver_token) do
+ Logger.warn("Received invalid homeserver token")
+
+ respond_error(conn, 403)
+ end
+
defp respond_error(conn, error_code) do
conn
|> put_status(error_code)