summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md9
-rw-r--r--lib/pleroma/web/mastodon_api/mastodon_api_controller.ex17
-rw-r--r--lib/pleroma/web/oauth/oauth_controller.ex1
-rw-r--r--priv/repo/migrations/20190203185340_split_hide_network.exs6
4 files changed, 17 insertions, 16 deletions
diff --git a/README.md b/README.md
index 9d1feaae5..d39731ef4 100644
--- a/README.md
+++ b/README.md
@@ -11,15 +11,16 @@ For clients it supports both the [GNU Social API with Qvitter extensions](https:
Client applications that are committed to supporting Pleroma:
* Mastalab (Android, Streaming Ready)
+* nekonium (Android, Streaming Ready)
* Tusky (Android, No Streaming)
* Twidere (Android, No Streaming)
-* Mast (iOS)
-* Amaroq (iOS)
+* Mast (iOS, Paid)
+* Amaroq (iOS, No Streaming)
Client applications that are known to work well:
-* Tootdon (Android + iOS)
-* Tootle (iOS)
+* Tootdon (Android + iOS, No Streaming)
+* Tootle (iOS, No Streaming)
* Whalebird (Windows + Mac + Linux)
No release has been made yet, but several servers have been online for months already. If you want to run your own server, feel free to contact us at @lain@pleroma.soykaf.com or in our dev chat at #pleroma on freenode or via matrix at <https://matrix.heldscal.la/#/room/#freenode_#pleroma:matrix.org>.
diff --git a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
index b6a3c895c..dbe7c2554 100644
--- a/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
@@ -26,12 +26,14 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
require Logger
@httpoison Application.get_env(:pleroma, :httpoison)
+ @local_mastodon_name "Mastodon-Local"
action_fallback(:errors)
def create_app(conn, params) do
- with cs <- App.register_changeset(%App{}, params) |> IO.inspect(),
- {:ok, app} <- Repo.insert(cs) |> IO.inspect() do
+ with cs <- App.register_changeset(%App{}, params),
+ false <- cs.changes[:client_name] == @local_mastodon_name,
+ {:ok, app} <- Repo.insert(cs) do
res = %{
id: app.id |> to_string,
name: app.client_name,
@@ -1154,16 +1156,13 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
defp get_or_make_app() do
- with %App{} = app <- Repo.get_by(App, client_name: "Mastodon-Local") do
+ find_attrs = %{client_name: @local_mastodon_name, redirect_uris: "."}
+
+ with %App{} = app <- Repo.get_by(App, find_attrs) do
{:ok, app}
else
_e ->
- cs =
- App.register_changeset(%App{}, %{
- client_name: "Mastodon-Local",
- redirect_uris: ".",
- scopes: "read,write,follow"
- })
+ cs = App.register_changeset(%App{}, Map.put(find_attrs, :scopes, "read,write,follow"))
Repo.insert(cs)
end
diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex
index 4d4e85836..8ec963c79 100644
--- a/lib/pleroma/web/oauth/oauth_controller.ex
+++ b/lib/pleroma/web/oauth/oauth_controller.ex
@@ -37,6 +37,7 @@ defmodule Pleroma.Web.OAuth.OAuthController do
true <- Pbkdf2.checkpw(password, user.password_hash),
{:auth_active, true} <- {:auth_active, User.auth_active?(user)},
%App{} = app <- Repo.get_by(App, client_id: client_id),
+ true <- redirect_uri in String.split(app.redirect_uris),
{:ok, auth} <- Authorization.create_authorization(app, user) do
# Special case: Local MastodonFE.
redirect_uri =
diff --git a/priv/repo/migrations/20190203185340_split_hide_network.exs b/priv/repo/migrations/20190203185340_split_hide_network.exs
index 9c44e8aff..8b7a9151b 100644
--- a/priv/repo/migrations/20190203185340_split_hide_network.exs
+++ b/priv/repo/migrations/20190203185340_split_hide_network.exs
@@ -2,9 +2,9 @@ defmodule Pleroma.Repo.Migrations.SplitHideNetwork do
use Ecto.Migration
def up do
- execute("UPDATE users SET info = jsonb_set(info, '{hide_network}'::text[], 'false'::jsonb) WHERE NOT(info::jsonb ? 'hide_network')")
- execute("UPDATE users SET info = jsonb_set(info, '{hide_followings}'::text[], info->'hide_network')")
- execute("UPDATE users SET info = jsonb_set(info, '{hide_followers}'::text[], info->'hide_network')")
+ execute("UPDATE users SET info = jsonb_set(info, '{hide_network}'::text[], 'false'::jsonb) WHERE NOT(info::jsonb ? 'hide_network') AND local")
+ execute("UPDATE users SET info = jsonb_set(info, '{hide_followings}'::text[], info->'hide_network') WHERE local")
+ execute("UPDATE users SET info = jsonb_set(info, '{hide_followers}'::text[], info->'hide_network') WHERE local")
end
def down do