Merge branch 'develop' into 'develop'
[akkoma] / lib / pleroma / user.ex
index 39d8cca768aeb7222b654de3d119fbf2ba409683..938b57d90c47322e754e02704cc8c459519e4edd 100644 (file)
@@ -34,6 +34,13 @@ defmodule Pleroma.User do
     end
   end
 
+  def banner_url(user) do
+    case user.info["banner"] do
+      %{"url" => [%{"href" => href} | _]} -> href
+      _ -> nil
+    end
+  end
+
   def ap_id(%User{nickname: nickname}) do
     "#{Web.base_url}/users/#{nickname}"
   end
@@ -90,6 +97,25 @@ defmodule Pleroma.User do
     |> validate_length(:name, min: 1, max: 100)
   end
 
+  def password_update_changeset(struct, params) do
+    changeset = struct
+    |> cast(params, [:password, :password_confirmation])
+    |> validate_required([:password, :password_confirmation])
+    |> validate_confirmation(:password)
+
+    if changeset.valid? do
+      hashed = Pbkdf2.hashpwsalt(changeset.changes[:password])
+      changeset
+      |> put_change(:password_hash, hashed)
+    else
+      changeset
+    end
+  end
+
+  def reset_password(user, data) do
+    Repo.update(password_update_changeset(user, data))
+  end
+
   def register_changeset(struct, params \\ %{}) do
     changeset = struct
     |> cast(params, [:bio, :email, :name, :nickname, :password, :password_confirmation])