Fix oauth2 (for real) (#179)
[akkoma] / lib / pleroma / web / mastodon_api / controllers / auth_controller.ex
index eb6639fc58a8ad956778df8de369843f3237655d..f415e5931ee0a189f098e9bbd592f4938b5d80fd 100644 (file)
@@ -7,7 +7,6 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
 
   import Pleroma.Web.ControllerHelper, only: [json_response: 3]
 
-  alias Pleroma.Helpers.AuthHelper
   alias Pleroma.Helpers.UriHelper
   alias Pleroma.User
   alias Pleroma.Web.OAuth.App
@@ -34,7 +33,6 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
         |> UriHelper.modify_uri_params(%{"access_token" => oauth_token.token})
 
       conn
-      |> AuthHelper.put_session_token(oauth_token.token)
       |> redirect(to: redirect_to)
     else
       _ -> redirect_to_oauth_form(conn, params)
@@ -42,9 +40,9 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
   end
 
   def login(conn, params) do
-    with %{assigns: %{user: %User{}, token: %Token{app_id: app_id}}} <- conn,
+    with %{assigns: %{user: %User{}, token: %Token{app_id: app_id, token: token}}} <- conn,
          {:ok, %{id: ^app_id}} <- local_mastofe_app() do
-      redirect(conn, to: local_mastodon_post_login_path(conn))
+      redirect(conn, to: local_mastodon_post_login_path(conn) <> "?access_token=#{token}")
     else
       _ -> redirect_to_oauth_form(conn, params)
     end
@@ -53,7 +51,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
   defp redirect_to_oauth_form(conn, _params) do
     with {:ok, app} <- local_mastofe_app() do
       path =
-        o_auth_path(conn, :authorize,
+        Routes.o_auth_path(conn, :authorize,
           response_type: "code",
           client_id: app.client_id,
           redirect_uri: ".",
@@ -68,9 +66,8 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
   def logout(conn, _) do
     conn =
       with %{assigns: %{token: %Token{} = oauth_token}} <- conn,
-           session_token = AuthHelper.get_session_token(conn),
-           {:ok, %Token{token: ^session_token}} <- RevokeToken.revoke(oauth_token) do
-        AuthHelper.delete_session_token(conn)
+           {:ok, %Token{token: _session_token}} <- RevokeToken.revoke(oauth_token) do
+        conn
       else
         _ -> conn
       end
@@ -90,7 +87,7 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
   defp local_mastodon_post_login_path(conn) do
     case get_session(conn, :return_to) do
       nil ->
-        masto_fe_path(conn, :index, ["getting-started"])
+        Routes.masto_fe_path(conn, :index, ["getting-started"])
 
       return_to ->
         delete_session(conn, :return_to)