diff options
Diffstat (limited to 'lib/pleroma/web/oauth/app.ex')
-rw-r--r-- | lib/pleroma/web/oauth/app.ex | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/lib/pleroma/web/oauth/app.ex b/lib/pleroma/web/oauth/app.ex new file mode 100644 index 000000000..ff52ba82e --- /dev/null +++ b/lib/pleroma/web/oauth/app.ex @@ -0,0 +1,29 @@ +defmodule Pleroma.Web.OAuth.App do + use Ecto.Schema + import Ecto.{Changeset} + + schema "apps" do + field :client_name, :string + field :redirect_uris, :string + field :scopes, :string + field :website, :string + field :client_id, :string + field :client_secret, :string + + timestamps() + end + + def register_changeset(struct, params \\ %{}) do + changeset = struct + |> cast(params, [:client_name, :redirect_uris, :scopes, :website]) + |> validate_required([:client_name, :redirect_uris, :scopes]) + + if changeset.valid? do + changeset + |> put_change(:client_id, :crypto.strong_rand_bytes(32) |> Base.url_encode64) + |> put_change(:client_secret, :crypto.strong_rand_bytes(32) |> Base.url_encode64) + else + changeset + end + end +end |