mirror of
https://github.com/ClaperCo/Claper.git
synced 2026-02-24 20:19:48 +01:00
## ⚠️ Breaking changes - S3 variables are now named: S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, S3_REGION and S3_BUCKET - Users now have roles. Refer to the `roles` table and assign a role to a user with the `role_id` column in the `users` table. ## Features - Add Admin Panel to manage users and presentations - Add user roles: user, admin - Add `LANGUAGES` setting to configure available languages in the app - Add hideable presenter attendee count (#183 #155) - Add Hungarian translation (#161) - Add Latvian translation (#163) - Add custom S3 endpoint with `S3_SCHEME`, `S3_HOST`, `S3_PORT` and `S3_PUBLIC_URL` ## Fixes and improvements - Upgrade JS dependencies - Upgrade Elixir dependencies, including Phoenix Live View to 1.0.17 - Upgrade to Tailwind 4+ - Refactor view templates to use {} instead of <%= %> - Fix event name validation to be required - Docker image is now using Ubuntu instead of Alpine for better dependencies support - Fix scrollbar not showing in event manager when no presentation file (#164) (@aryel780) - Fix settings scroll for small screen (#168) - Fix duplicate key quiz when duplicate (#182) - Fix email change confirmation (#172) - Fix italian translation (#179) - Fix random poll choices (#184)
82 lines
2.4 KiB
Elixir
82 lines
2.4 KiB
Elixir
defmodule ClaperWeb.Notifiers.UserNotifier do
|
|
use Phoenix.Swoosh, view: ClaperWeb.UserNotifierView, layout: {ClaperWeb.LayoutView, :email}
|
|
use Gettext, backend: ClaperWeb.Gettext
|
|
|
|
def magic(email, url) do
|
|
new()
|
|
|> to(email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Connect to Claper"))
|
|
|> render_body("magic.html", %{url: url})
|
|
end
|
|
|
|
def welcome(email) do
|
|
new()
|
|
|> to(email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Next steps to boost your presentations"))
|
|
|> render_body("welcome.html", %{email: email})
|
|
end
|
|
|
|
def update_email(new_email, url) do
|
|
new()
|
|
|> to(new_email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Update email instructions"))
|
|
|> render_body("change.html", %{url: url})
|
|
end
|
|
|
|
def confirm(user, url) do
|
|
new()
|
|
|> to(user.email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Confirmation instructions"))
|
|
|> render_body("confirm.html", %{user: user, url: url})
|
|
end
|
|
|
|
def reset(user, url) do
|
|
new()
|
|
|> to(user.email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Reset password instructions"))
|
|
|> render_body("reset.html", %{user: user, url: url})
|
|
end
|
|
|
|
def confirm(user, url) do
|
|
new()
|
|
|> to(user.email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Confirmation instructions"))
|
|
|> render_body("confirm.html", %{user: user, url: url})
|
|
end
|
|
|
|
def reset(user, url) do
|
|
new()
|
|
|> to(user.email)
|
|
|> from(
|
|
{Application.get_env(:claper, :mail) |> Keyword.get(:from_name),
|
|
Application.get_env(:claper, :mail) |> Keyword.get(:from)}
|
|
)
|
|
|> subject(gettext("Reset password instructions"))
|
|
|> render_body("reset.html", %{user: user, url: url})
|
|
end
|
|
end
|