Files
Claper/lib/claper_web/notifiers/user_notifier.ex
Alex Lion 5bd4793b6e Version 2.4.0
## ⚠️ 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)
2025-12-26 14:46:16 +01:00

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