Merge branch 'support/issue_480' into 'develop'
[akkoma] / lib / pleroma / user.ex
index b8a7a3fae706716a5b20a74b70003bbd03948786..41d6e9dc6a3c71449d6c8b7a8645fb96a2b6197b 100644 (file)
@@ -49,6 +49,12 @@ defmodule Pleroma.User do
 
   def remote_or_auth_active?(%User{} = user), do: !user.local || auth_active?(user)
 
+  def visible_for?(%User{} = user, for_user \\ nil) do
+    User.remote_or_auth_active?(user) || (for_user && for_user.id == user.id) ||
+      User.superuser?(for_user)
+  end
+
+  def superuser?(nil), do: false
   def superuser?(%User{} = user), do: user.info && User.Info.superuser?(user.info)
 
   def avatar_url(user) do
@@ -199,6 +205,7 @@ defmodule Pleroma.User do
       |> validate_confirmation(:password)
       |> unique_constraint(:email)
       |> unique_constraint(:nickname)
+      |> validate_exclusion(:nickname, Pleroma.Config.get([Pleroma.User, :restricted_nicknames]))
       |> validate_format(:nickname, local_nickname_regex())
       |> validate_format(:email, @email_regex)
       |> validate_length(:bio, max: 1000)