Merge branch 'fix/ldap-auth-issues' into 'develop'
[akkoma] / lib / pleroma / user.ex
index df9f34baa072d1fbe9cadaafd156b9083abd99fe..d1436a688455b2eeab07c883d612a56eeb1103c3 100644 (file)
@@ -638,17 +638,26 @@ defmodule Pleroma.User do
   @spec force_password_reset(User.t()) :: {:ok, User.t()} | {:error, Ecto.Changeset.t()}
   def force_password_reset(user), do: update_password_reset_pending(user, true)
 
-  # Used to auto-register LDAP accounts which don't have a password hash
-  def register_changeset(struct, params = %{password: password})
+  # Used to auto-register LDAP accounts which won't have a password hash stored locally
+  def register_changeset_ldap(struct, params = %{password: password})
       when is_nil(password) do
     params = Map.put_new(params, :accepts_chat_messages, true)
 
+    params =
+      if Map.has_key?(params, :email) do
+        Map.put_new(params, :email, params[:email])
+      else
+        params
+      end
+
     struct
     |> cast(params, [
       :name,
       :nickname,
+      :email,
       :accepts_chat_messages
     ])
+    |> validate_required([:name, :nickname])
     |> unique_constraint(:nickname)
     |> validate_exclusion(:nickname, Config.get([User, :restricted_nicknames]))
     |> validate_format(:nickname, local_nickname_regex())