mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-12-23 17:54:22 +00:00
Fix more build errors
This commit is contained in:
parent
839c2c6a12
commit
2e310b3ec8
|
@ -7,77 +7,12 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
|
||||||
|
|
||||||
import Pleroma.Web.ControllerHelper, only: [json_response: 3]
|
import Pleroma.Web.ControllerHelper, only: [json_response: 3]
|
||||||
|
|
||||||
alias Pleroma.Helpers.AuthHelper
|
|
||||||
alias Pleroma.Helpers.UriHelper
|
|
||||||
alias Pleroma.User
|
|
||||||
alias Pleroma.Web.OAuth.App
|
|
||||||
alias Pleroma.Web.OAuth.Authorization
|
|
||||||
alias Pleroma.Web.OAuth.Token
|
|
||||||
alias Pleroma.Web.OAuth.Token.Strategy.Revoke, as: RevokeToken
|
|
||||||
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
alias Pleroma.Web.TwitterAPI.TwitterAPI
|
||||||
|
|
||||||
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
|
action_fallback(Pleroma.Web.MastodonAPI.FallbackController)
|
||||||
|
|
||||||
plug(Pleroma.Web.Plugs.RateLimiter, [name: :password_reset] when action == :password_reset)
|
plug(Pleroma.Web.Plugs.RateLimiter, [name: :password_reset] when action == :password_reset)
|
||||||
|
|
||||||
@local_mastodon_name "Mastodon-Local"
|
|
||||||
|
|
||||||
@doc "GET /web/login"
|
|
||||||
# Local Mastodon FE login callback action
|
|
||||||
def login(conn, %{"code" => auth_token} = params) do
|
|
||||||
with {:ok, app} <- local_mastofe_app(),
|
|
||||||
{:ok, auth} <- Authorization.get_by_token(app, auth_token),
|
|
||||||
{:ok, oauth_token} <- Token.exchange_token(app, auth) do
|
|
||||||
redirect_to =
|
|
||||||
conn
|
|
||||||
|> local_mastodon_post_login_path()
|
|
||||||
|> 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)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def login(conn, params) do
|
|
||||||
with %{assigns: %{user: %User{}, token: %Token{app_id: app_id}}} <- conn,
|
|
||||||
{:ok, %{id: ^app_id}} <- local_mastofe_app() do
|
|
||||||
redirect(conn, to: local_mastodon_post_login_path(conn))
|
|
||||||
else
|
|
||||||
_ -> redirect_to_oauth_form(conn, params)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
defp redirect_to_oauth_form(conn, _params) do
|
|
||||||
with {:ok, app} <- local_mastofe_app() do
|
|
||||||
path =
|
|
||||||
Routes.o_auth_path(conn, :authorize,
|
|
||||||
response_type: "code",
|
|
||||||
client_id: app.client_id,
|
|
||||||
redirect_uri: ".",
|
|
||||||
scope: Enum.join(app.scopes, " ")
|
|
||||||
)
|
|
||||||
|
|
||||||
redirect(conn, to: path)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@doc "DELETE /auth/sign_out"
|
|
||||||
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)
|
|
||||||
else
|
|
||||||
_ -> conn
|
|
||||||
end
|
|
||||||
|
|
||||||
redirect(conn, to: "/")
|
|
||||||
end
|
|
||||||
|
|
||||||
@doc "POST /auth/password"
|
@doc "POST /auth/password"
|
||||||
def password_reset(conn, params) do
|
def password_reset(conn, params) do
|
||||||
nickname_or_email = params["email"] || params["nickname"]
|
nickname_or_email = params["email"] || params["nickname"]
|
||||||
|
@ -86,23 +21,4 @@ defmodule Pleroma.Web.MastodonAPI.AuthController do
|
||||||
|
|
||||||
json_response(conn, :no_content, "")
|
json_response(conn, :no_content, "")
|
||||||
end
|
end
|
||||||
|
|
||||||
defp local_mastodon_post_login_path(conn) do
|
|
||||||
case get_session(conn, :return_to) do
|
|
||||||
nil ->
|
|
||||||
Routes.masto_fe_path(conn, :index, ["getting-started"])
|
|
||||||
|
|
||||||
return_to ->
|
|
||||||
delete_session(conn, :return_to)
|
|
||||||
return_to
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
@spec local_mastofe_app() :: {:ok, App.t()} | {:error, Ecto.Changeset.t()}
|
|
||||||
def local_mastofe_app do
|
|
||||||
App.get_or_make(
|
|
||||||
%{client_name: @local_mastodon_name, redirect_uris: "."},
|
|
||||||
["read", "write", "follow", "push", "admin"]
|
|
||||||
)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,35 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang='en'>
|
|
||||||
<head>
|
|
||||||
<meta charset='utf-8'>
|
|
||||||
<meta content='width=device-width, initial-scale=1' name='viewport'>
|
|
||||||
<title>
|
|
||||||
<%= Config.get([:instance, :name]) %>
|
|
||||||
</title>
|
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
|
||||||
<link rel="manifest" type="applicaton/manifest+json" href="<%= Routes.masto_fe_path(Pleroma.Web.Endpoint, :manifest) %>" />
|
|
||||||
|
|
||||||
<meta name="theme-color" content="<%= Config.get([:manifest, :theme_color]) %>" />
|
|
||||||
|
|
||||||
<script crossorigin='anonymous' src="/packs/locales.js"></script>
|
|
||||||
<script crossorigin='anonymous' src="/packs/locales/glitch/en.js"></script>
|
|
||||||
|
|
||||||
<link rel='preload' as='script' crossorigin='anonymous' href='/packs/features/getting_started.js'>
|
|
||||||
<link rel='preload' as='script' crossorigin='anonymous' href='/packs/features/compose.js'>
|
|
||||||
<link rel='preload' as='script' crossorigin='anonymous' href='/packs/features/home_timeline.js'>
|
|
||||||
<link rel='preload' as='script' crossorigin='anonymous' href='/packs/features/notifications.js'>
|
|
||||||
<script id='initial-state' type='application/json'><%= initial_state(@token, @user, @custom_emojis) %></script>
|
|
||||||
|
|
||||||
<script src="/packs/core/common.js"></script>
|
|
||||||
<link rel="stylesheet" media="all" href="/packs/core/common.css" />
|
|
||||||
|
|
||||||
<script src="/packs/flavours/glitch/common.js"></script>
|
|
||||||
<link rel="stylesheet" media="all" href="/packs/flavours/glitch/common.css" />
|
|
||||||
|
|
||||||
<script src="/packs/flavours/glitch/home.js"></script>
|
|
||||||
</head>
|
|
||||||
<body class='app-body no-reduce-motion system-font'>
|
|
||||||
<div class='app-holder' data-props='{"locale":"en"}' id='mastodon'>
|
|
||||||
</div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,91 +0,0 @@
|
||||||
# Pleroma: A lightweight social networking server
|
|
||||||
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
|
||||||
# SPDX-License-Identifier: AGPL-3.0-only
|
|
||||||
|
|
||||||
defmodule Pleroma.Web.MastoFEView do
|
|
||||||
use Pleroma.Web, :view
|
|
||||||
alias Pleroma.Config
|
|
||||||
alias Pleroma.User
|
|
||||||
alias Pleroma.Web.MastodonAPI.AccountView
|
|
||||||
alias Pleroma.Web.MastodonAPI.CustomEmojiView
|
|
||||||
|
|
||||||
def initial_state(token, user, custom_emojis) do
|
|
||||||
limit = Config.get([:instance, :limit])
|
|
||||||
|
|
||||||
%{
|
|
||||||
meta: %{
|
|
||||||
streaming_api_base_url: Pleroma.Web.Endpoint.websocket_url(),
|
|
||||||
access_token: token,
|
|
||||||
locale: "en",
|
|
||||||
domain: Pleroma.Web.Endpoint.host(),
|
|
||||||
admin: "1",
|
|
||||||
me: "#{user.id}",
|
|
||||||
unfollow_modal: false,
|
|
||||||
boost_modal: false,
|
|
||||||
delete_modal: true,
|
|
||||||
auto_play_gif: false,
|
|
||||||
display_sensitive_media: false,
|
|
||||||
reduce_motion: false,
|
|
||||||
max_toot_chars: limit,
|
|
||||||
mascot: User.get_mascot(user)["url"]
|
|
||||||
},
|
|
||||||
poll_limits: Config.get([:instance, :poll_limits]),
|
|
||||||
rights: %{
|
|
||||||
delete_others_notice: present?(user.is_moderator),
|
|
||||||
admin: present?(user.is_admin)
|
|
||||||
},
|
|
||||||
compose: %{
|
|
||||||
me: "#{user.id}",
|
|
||||||
default_privacy: user.default_scope,
|
|
||||||
default_sensitive: false,
|
|
||||||
allow_content_types: Config.get([:instance, :allowed_post_formats])
|
|
||||||
},
|
|
||||||
media_attachments: %{
|
|
||||||
accept_content_types: [
|
|
||||||
".jpg",
|
|
||||||
".jpeg",
|
|
||||||
".png",
|
|
||||||
".gif",
|
|
||||||
".webm",
|
|
||||||
".mp4",
|
|
||||||
".m4v",
|
|
||||||
"image\/jpeg",
|
|
||||||
"image\/png",
|
|
||||||
"image\/gif",
|
|
||||||
"video\/webm",
|
|
||||||
"video\/mp4"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
settings: user.mastofe_settings || %{},
|
|
||||||
push_subscription: nil,
|
|
||||||
accounts: %{user.id => render(AccountView, "show.json", user: user, for: user)},
|
|
||||||
custom_emojis: render(CustomEmojiView, "index.json", custom_emojis: custom_emojis),
|
|
||||||
char_limit: limit
|
|
||||||
}
|
|
||||||
|> Jason.encode!()
|
|
||||||
|> Phoenix.HTML.raw()
|
|
||||||
end
|
|
||||||
|
|
||||||
defp present?(nil), do: false
|
|
||||||
defp present?(false), do: false
|
|
||||||
defp present?(_), do: true
|
|
||||||
|
|
||||||
def render("manifest.json", _params) do
|
|
||||||
%{
|
|
||||||
name: Config.get([:instance, :name]),
|
|
||||||
description: Config.get([:instance, :description]),
|
|
||||||
icons: Config.get([:manifest, :icons]),
|
|
||||||
theme_color: Config.get([:manifest, :theme_color]),
|
|
||||||
background_color: Config.get([:manifest, :background_color]),
|
|
||||||
display: "standalone",
|
|
||||||
scope: Pleroma.Web.Endpoint.url(),
|
|
||||||
start_url: Routes.masto_fe_path(Pleroma.Web.Endpoint, :index, ["getting-started"]),
|
|
||||||
categories: [
|
|
||||||
"social"
|
|
||||||
],
|
|
||||||
serviceworker: %{
|
|
||||||
src: "/sw.js"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
Loading…
Reference in a new issue