style: order module directives per StrictModuleLayout
This commit is contained in:
parent
3f073d4365
commit
fe534319ee
88 changed files with 225 additions and 155 deletions
|
|
@ -8,7 +8,6 @@ defmodule Mv.Accounts.User do
|
|||
extensions: [AshAuthentication],
|
||||
authorizers: [Ash.Policy.Authorizer]
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias Ash.Resource.Preparation.Builtins
|
||||
|
|
@ -16,6 +15,8 @@ defmodule Mv.Accounts.User do
|
|||
alias Mv.Helpers.SystemActor
|
||||
alias Mv.OidcRoleSync
|
||||
|
||||
require Ash.Query
|
||||
|
||||
postgres do
|
||||
table "users"
|
||||
repo Mv.Repo
|
||||
|
|
|
|||
|
|
@ -24,12 +24,13 @@ defmodule Mv.Accounts.User.Validations.OidcEmailCollision do
|
|||
- Allow (new user will be created)
|
||||
"""
|
||||
use Ash.Resource.Validation
|
||||
require Logger
|
||||
|
||||
alias Mv.Accounts.User
|
||||
alias Mv.Accounts.User.Errors.PasswordVerificationRequired
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def init(opts), do: {:ok, opts}
|
||||
|
||||
|
|
|
|||
|
|
@ -38,6 +38,10 @@ defmodule Mv.Membership.Email do
|
|||
@min_length 5
|
||||
@max_length 254
|
||||
|
||||
# These compile-time constants are referenced by the `use` options below, so
|
||||
# they must be declared first; StrictModuleLayout cannot be satisfied by
|
||||
# reordering here without breaking the macro expansion.
|
||||
# credo:disable-for-next-line Credo.Check.Readability.StrictModuleLayout
|
||||
use Ash.Type.NewType,
|
||||
subtype_of: :string,
|
||||
constraints: [
|
||||
|
|
|
|||
|
|
@ -39,9 +39,10 @@ defmodule Mv.Membership.Group do
|
|||
data_layer: AshPostgres.DataLayer,
|
||||
authorizers: [Ash.Policy.Authorizer]
|
||||
|
||||
require Ash.Query
|
||||
alias Mv.Helpers
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
postgres do
|
||||
|
|
|
|||
|
|
@ -37,9 +37,9 @@ defmodule Mv.Membership.Member do
|
|||
data_layer: AshPostgres.DataLayer,
|
||||
authorizers: [Ash.Policy.Authorizer]
|
||||
|
||||
import Bitwise
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
import Bitwise
|
||||
|
||||
alias Ecto.Adapters.SQL, as: EctoSQL
|
||||
alias Mv.Helpers
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
|
@ -49,6 +49,7 @@ defmodule Mv.Membership.Member do
|
|||
alias Mv.MembershipFees.MembershipFeeCycle
|
||||
alias Mv.Repo
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@typedoc "An `Mv.Membership.Member` resource record."
|
||||
|
|
|
|||
|
|
@ -26,13 +26,15 @@ defmodule Mv.Membership do
|
|||
use Ash.Domain,
|
||||
extensions: [AshAdmin.Domain, AshPhoenix]
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias Ash.Error.Query.NotFound, as: NotFoundError
|
||||
alias Mv.Helpers.SystemActor
|
||||
alias Mv.Membership.JoinRequest
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.Membership.SettingsCache
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
admin do
|
||||
|
|
|
|||
|
|
@ -65,12 +65,12 @@ defmodule Mv.Membership.Setting do
|
|||
data_layer: AshPostgres.DataLayer,
|
||||
primary_read_warning?: false
|
||||
|
||||
alias Ash.Resource.Info, as: ResourceInfo
|
||||
|
||||
# Used in join_form_field_ids validation (compile-time to avoid recompiling regex and list on every validation)
|
||||
@uuid_pattern ~r/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i
|
||||
@valid_join_form_member_fields Mv.Constants.member_fields() |> Enum.map(&Atom.to_string/1)
|
||||
|
||||
alias Ash.Resource.Info, as: ResourceInfo
|
||||
|
||||
postgres do
|
||||
table "settings"
|
||||
repo Mv.Repo
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
defmodule Mix.Tasks.JoinRequests.CleanupExpired do
|
||||
@shortdoc "Deletes join requests in pending_confirmation with expired confirmation token"
|
||||
@moduledoc """
|
||||
Hard-deletes JoinRequests in status `pending_confirmation` whose confirmation link has expired.
|
||||
|
||||
|
|
@ -16,12 +17,10 @@ defmodule Mix.Tasks.JoinRequests.CleanupExpired do
|
|||
"""
|
||||
use Mix.Task
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
alias Mv.Membership.JoinRequest
|
||||
|
||||
@shortdoc "Deletes join requests in pending_confirmation with expired confirmation token"
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@impl Mix.Task
|
||||
def run(_args) do
|
||||
|
|
|
|||
|
|
@ -13,13 +13,14 @@ defmodule Mv.Accounts.User.Senders.SendNewUserConfirmationEmail do
|
|||
layout: {MvWeb.EmailLayoutView, "layout.html"}
|
||||
|
||||
use MvWeb, :verified_routes
|
||||
import Swoosh.Email
|
||||
use Gettext, backend: MvWeb.Gettext, otp_app: :mv
|
||||
|
||||
require Logger
|
||||
import Swoosh.Email
|
||||
|
||||
alias Mv.Mailer
|
||||
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Sends a confirmation email to a new user.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,13 +13,14 @@ defmodule Mv.Accounts.User.Senders.SendPasswordResetEmail do
|
|||
layout: {MvWeb.EmailLayoutView, "layout.html"}
|
||||
|
||||
use MvWeb, :verified_routes
|
||||
import Swoosh.Email
|
||||
use Gettext, backend: MvWeb.Gettext, otp_app: :mv
|
||||
|
||||
require Logger
|
||||
import Swoosh.Email
|
||||
|
||||
alias Mv.Mailer
|
||||
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Sends a password reset email to a user.
|
||||
|
||||
|
|
|
|||
|
|
@ -49,10 +49,10 @@ defmodule Mv.Authorization.Actor do
|
|||
adds complexity and potential for inconsistency.
|
||||
"""
|
||||
|
||||
require Logger
|
||||
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Ensures the actor (User) has their `:role` relationship loaded.
|
||||
|
||||
|
|
|
|||
|
|
@ -79,10 +79,13 @@ defmodule Mv.Authorization.Checks.HasPermission do
|
|||
"""
|
||||
|
||||
use Ash.Policy.Check
|
||||
require Ash.Query
|
||||
|
||||
import Ash.Expr
|
||||
|
||||
alias Mv.Authorization.Actor
|
||||
alias Mv.Authorization.PermissionSets
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@ defmodule Mv.EmailSync.Helpers do
|
|||
provides clean abstractions for email updates within transactions.
|
||||
"""
|
||||
|
||||
require Logger
|
||||
import Ecto.Changeset
|
||||
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Extracts the record from an Ash action result.
|
||||
|
||||
|
|
|
|||
|
|
@ -48,10 +48,10 @@ defmodule Mv.Helpers.SystemActor do
|
|||
|
||||
use Agent
|
||||
|
||||
require Ash.Query
|
||||
|
||||
alias Mv.Config
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@doc """
|
||||
Starts the SystemActor Agent.
|
||||
|
||||
|
|
|
|||
|
|
@ -27,11 +27,12 @@ defmodule Mv.Mailer do
|
|||
ENV takes priority over Settings (same pattern as OIDC and Vereinfacht).
|
||||
"""
|
||||
use Swoosh.Mailer, otp_app: :mv
|
||||
|
||||
import Swoosh.Email
|
||||
use Gettext, backend: MvWeb.Gettext, otp_app: :mv
|
||||
|
||||
import Swoosh.Email
|
||||
|
||||
alias Mv.Smtp.ConfigBuilder
|
||||
|
||||
require Logger
|
||||
|
||||
# Simple format check for test-email recipient only (e.g. allows a@b.c). Not for strict RFC validation.
|
||||
|
|
|
|||
|
|
@ -15,10 +15,10 @@ defmodule Mv.Membership.Import.ColumnResolver do
|
|||
This module has no Phoenix or web dependencies.
|
||||
"""
|
||||
|
||||
require Logger
|
||||
|
||||
alias Mv.Membership.Import.HeaderMapper
|
||||
|
||||
require Logger
|
||||
|
||||
@preview_row_limit 3
|
||||
|
||||
@type numbered_row :: {pos_integer(), [String.t()]}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,14 @@ defmodule Mv.Membership.Import.MemberCSV do
|
|||
MemberCSV.process_chunk(chunk, import_state.column_map, import_state.custom_field_map, [])
|
||||
"""
|
||||
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
alias Mv.Helpers.SystemActor
|
||||
alias Mv.Membership.Import.ColumnResolver
|
||||
alias Mv.Membership.Import.CsvParser
|
||||
alias Mv.Membership.Import.HeaderMapper
|
||||
alias MvWeb.Translations.FieldTypes
|
||||
|
||||
defmodule Error do
|
||||
@moduledoc """
|
||||
Error struct for CSV import errors.
|
||||
|
|
@ -101,17 +109,6 @@ defmodule Mv.Membership.Import.MemberCSV do
|
|||
groups_found: list(Mv.Membership.Group.t() | %{id: String.t(), name: String.t()})
|
||||
}
|
||||
|
||||
alias Mv.Membership.Import.ColumnResolver
|
||||
alias Mv.Membership.Import.CsvParser
|
||||
alias Mv.Membership.Import.HeaderMapper
|
||||
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
||||
# Import FieldTypes for human-readable type labels
|
||||
alias MvWeb.Translations.FieldTypes
|
||||
|
||||
# Configuration constants
|
||||
@default_max_errors 50
|
||||
@default_chunk_size 200
|
||||
|
|
|
|||
|
|
@ -17,13 +17,14 @@ defmodule Mv.Membership.MemberExport.Build do
|
|||
No translations/Gettext in this module - labels come from the web layer via a function.
|
||||
"""
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias Mv.Membership.{CustomField, CustomFieldValueFormatter, Member, MemberExportSort}
|
||||
alias MvWeb.MemberLive.Index
|
||||
alias MvWeb.MemberLive.Index.MembershipFeeStatus
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@custom_field_prefix Mv.Constants.custom_field_prefix()
|
||||
|
||||
@doc """
|
||||
|
|
|
|||
|
|
@ -12,12 +12,12 @@ defmodule Mv.Membership.MembersPDF do
|
|||
to avoid symlink issues and ensure isolation.
|
||||
"""
|
||||
|
||||
require Logger
|
||||
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
alias Mv.Config
|
||||
|
||||
require Logger
|
||||
|
||||
@template_filename "members_export.typ"
|
||||
|
||||
@doc """
|
||||
|
|
|
|||
|
|
@ -1,11 +1,4 @@
|
|||
defmodule Mv.MembershipFees.CycleGenerator do
|
||||
@typedoc "Aggregate counts returned by a batch cycle-generation run."
|
||||
@type results_summary :: %{
|
||||
success: non_neg_integer(),
|
||||
failed: non_neg_integer(),
|
||||
total: non_neg_integer()
|
||||
}
|
||||
|
||||
@moduledoc """
|
||||
Module for generating membership fee cycles for members.
|
||||
|
||||
|
|
@ -66,6 +59,13 @@ defmodule Mv.MembershipFees.CycleGenerator do
|
|||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@typedoc "Aggregate counts returned by a batch cycle-generation run."
|
||||
@type results_summary :: %{
|
||||
success: non_neg_integer(),
|
||||
failed: non_neg_integer(),
|
||||
total: non_neg_integer()
|
||||
}
|
||||
|
||||
@type generate_result ::
|
||||
{:ok, [MembershipFeeCycle.t()], [Ash.Notifier.Notification.t()]} | {:error, term()}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@ defmodule Mv.Release do
|
|||
or ADMIN_PASSWORD_FILE). Idempotent; can be run on every deployment or via shell
|
||||
to update the admin password without redeploying.
|
||||
"""
|
||||
@app :mv
|
||||
|
||||
alias Mv.Accounts
|
||||
alias Mv.Accounts.User
|
||||
alias Mv.Authorization.Role
|
||||
|
|
@ -21,6 +19,8 @@ defmodule Mv.Release do
|
|||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@app :mv
|
||||
|
||||
def migrate do
|
||||
_ = load_app()
|
||||
|
||||
|
|
|
|||
|
|
@ -7,15 +7,15 @@ defmodule Mv.Statistics do
|
|||
to Ash reads so that policies are enforced.
|
||||
"""
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
require Logger
|
||||
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.MembershipFees
|
||||
alias Mv.MembershipFees.MembershipFeeCycle
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@doc """
|
||||
Returns the earliest year in which any member has a join_date.
|
||||
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@ defmodule Mv.Vereinfacht.Changes.SyncLinkedMemberAfterUserChange do
|
|||
"""
|
||||
use Ash.Resource.Change
|
||||
|
||||
require Logger
|
||||
alias Mv.EmailSync.Loader
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def change(changeset, _opts, _context) do
|
||||
if Mv.Config.vereinfacht_configured?() and relevant_change?(changeset) do
|
||||
|
|
|
|||
|
|
@ -7,13 +7,15 @@ defmodule Mv.Vereinfacht do
|
|||
the linked member's email via Ecto (e.g. user email change).
|
||||
- `sync_members_without_contact/0` – Bulk sync of members without a contact ID.
|
||||
"""
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias Mv.Helpers
|
||||
alias Mv.Helpers.SystemActor
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.Vereinfacht.Client
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@doc """
|
||||
Tests the connection to the Vereinfacht API using the current configuration.
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@ defmodule MvWeb.TableComponents do
|
|||
TableComponents that can be used in tables as components (like a button for sorting, a filter...)
|
||||
"""
|
||||
use Phoenix.Component
|
||||
import MvWeb.CoreComponents
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
import MvWeb.CoreComponents
|
||||
|
||||
attr :field, :atom, required: true
|
||||
attr :label, :string, required: true
|
||||
attr :sort_field, :atom, default: nil
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@ defmodule MvWeb.ImportTemplateController do
|
|||
"""
|
||||
use MvWeb, :controller
|
||||
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.Membership.MembersCSV
|
||||
alias MvWeb.Authorization
|
||||
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
|
||||
# Standard member columns in template order, with their English and German headers
|
||||
# and a placeholder example value. Groups and fee type are importable extras.
|
||||
@columns [
|
||||
|
|
|
|||
|
|
@ -6,9 +6,10 @@ defmodule MvWeb.MemberExportController do
|
|||
Same permission and actor context as the member overview; 403 if unauthorized.
|
||||
"""
|
||||
use MvWeb, :controller
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership.CustomField
|
||||
alias Mv.Membership.CustomFieldSort
|
||||
|
|
@ -18,8 +19,7 @@ defmodule MvWeb.MemberExportController do
|
|||
alias MvWeb.MemberLive.Index.MembershipFeeStatus
|
||||
alias MvWeb.Translations.MemberFields
|
||||
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
require Ash.Query
|
||||
|
||||
@member_fields_allowlist (Mv.Constants.member_fields() |> Enum.map(&Atom.to_string/1)) ++
|
||||
["membership_fee_type", "groups"]
|
||||
|
|
|
|||
|
|
@ -7,15 +7,14 @@ defmodule MvWeb.MemberPdfExportController do
|
|||
"""
|
||||
|
||||
use MvWeb, :controller
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
require Logger
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership.{MemberExport, MemberExport.Build, MembersPDF}
|
||||
alias MvWeb.Translations.MemberFields
|
||||
|
||||
import MvWeb.ControllerHelpers, only: [current_actor: 1]
|
||||
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
require Logger
|
||||
|
||||
@payload_required_message "payload required"
|
||||
@invalid_json_message "invalid JSON"
|
||||
|
|
|
|||
|
|
@ -15,13 +15,14 @@ defmodule MvWeb.LinkOidcAccountLive do
|
|||
6. User is redirected to complete OIDC login
|
||||
"""
|
||||
use MvWeb, :live_view
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
alias AshAuthentication.Strategy.Password.Actions, as: PasswordActions
|
||||
alias Mv.Accounts.User, as: UserResource
|
||||
alias Mv.Helpers.SystemActor
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def mount(_params, session, socket) do
|
||||
# Use SystemActor for authorization during OIDC linking (user is not yet logged in)
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@ defmodule MvWeb.GlobalSettingsLive do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias Mv.Helpers
|
||||
|
|
@ -44,6 +43,8 @@ defmodule MvWeb.GlobalSettingsLive do
|
|||
alias MvWeb.Helpers.MemberHelpers
|
||||
alias MvWeb.Translations.MemberFields
|
||||
|
||||
require Ash.Query
|
||||
|
||||
on_mount {MvWeb.LiveHelpers, :ensure_user_role_loaded}
|
||||
|
||||
@impl true
|
||||
|
|
|
|||
|
|
@ -15,16 +15,16 @@ defmodule MvWeb.GroupLive.Show do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Logger
|
||||
|
||||
import Ash.Expr
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
import MvWeb.Authorization
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership
|
||||
alias MvWeb.Helpers.MemberHelpers, as: MemberHelpers
|
||||
alias MvWeb.Live.MemberDropdownNav
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
{:ok,
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@ defmodule MvWeb.ImportLive.Components do
|
|||
use Phoenix.Component
|
||||
use Gettext, backend: MvWeb.Gettext
|
||||
|
||||
import MvWeb.CoreComponents
|
||||
|
||||
use Phoenix.VerifiedRoutes,
|
||||
endpoint: MvWeb.Endpoint,
|
||||
router: MvWeb.Router,
|
||||
statics: MvWeb.static_paths()
|
||||
|
||||
import MvWeb.CoreComponents
|
||||
|
||||
@doc """
|
||||
Renders the info box explaining that data fields must exist before import
|
||||
and linking to Manage Member Data (custom fields).
|
||||
|
|
|
|||
|
|
@ -13,15 +13,15 @@ defmodule MvWeb.JoinRequestLive.Index do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Logger
|
||||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
import MvWeb.Authorization
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership
|
||||
alias MvWeb.Helpers.DateFormatter
|
||||
alias MvWeb.JoinRequestLive.Helpers, as: JoinRequestHelpers
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
actor = current_actor(socket)
|
||||
|
|
|
|||
|
|
@ -14,10 +14,8 @@ defmodule MvWeb.JoinRequestLive.Show do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Logger
|
||||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
import MvWeb.Authorization
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Constants
|
||||
alias Mv.Membership
|
||||
|
|
@ -26,6 +24,8 @@ defmodule MvWeb.JoinRequestLive.Show do
|
|||
alias MvWeb.JoinRequestLive.Helpers, as: JoinRequestHelpers
|
||||
alias MvWeb.Translations.MemberFields, as: MemberFieldsTranslations
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
if Membership.join_form_enabled?() do
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@ defmodule MvWeb.MemberLive.Form do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Logger
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1, submit_form: 3]
|
||||
|
||||
alias Mv.Membership
|
||||
|
|
@ -32,6 +31,8 @@ defmodule MvWeb.MemberLive.Form do
|
|||
alias MvWeb.Helpers.MemberHelpers
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
# Sort custom fields by name for display only
|
||||
|
|
|
|||
|
|
@ -26,8 +26,6 @@ defmodule MvWeb.MemberLive.Index do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
import Ash.Expr
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
|
|
@ -45,6 +43,9 @@ defmodule MvWeb.MemberLive.Index do
|
|||
alias MvWeb.MemberLive.Index.Formatter
|
||||
alias MvWeb.MemberLive.Index.MembershipFeeStatus
|
||||
|
||||
require Ash.Query
|
||||
require Logger
|
||||
|
||||
@custom_field_prefix Mv.Constants.custom_field_prefix()
|
||||
@boolean_filter_prefix Mv.Constants.boolean_filter_prefix()
|
||||
@group_filter_prefix Mv.Constants.group_filter_prefix()
|
||||
|
|
|
|||
|
|
@ -28,12 +28,13 @@ defmodule MvWeb.MemberLive.Index.DateFilter do
|
|||
`exit_date IS NULL OR exit_date > today` — a member who left today is hidden.
|
||||
"""
|
||||
|
||||
require Ash.Query
|
||||
import Ash.Expr
|
||||
|
||||
alias MvWeb.MemberLive.Index.CustomFieldValueLookup
|
||||
alias MvWeb.MemberLive.Index.FilterParams
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@join_date_from_param Mv.Constants.join_date_from_param()
|
||||
@join_date_to_param Mv.Constants.join_date_to_param()
|
||||
@exit_date_mode_param Mv.Constants.exit_date_mode_param()
|
||||
|
|
|
|||
|
|
@ -12,10 +12,9 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
|
|||
"""
|
||||
use MvWeb, :live_component
|
||||
|
||||
require Ash.Query
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
import MvWeb.Authorization, only: [can?: 3]
|
||||
import MvWeb.Helpers.AshErrorHelpers, only: [format_error: 1]
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership
|
||||
alias Mv.MembershipFees
|
||||
|
|
@ -25,6 +24,8 @@ defmodule MvWeb.MemberLive.Show.MembershipFeesComponent do
|
|||
alias Mv.MembershipFees.MembershipFeeType
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ defmodule MvWeb.MembershipFeeSettingsLive do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Ash.Query
|
||||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.Membership
|
||||
|
|
@ -18,6 +16,8 @@ defmodule MvWeb.MembershipFeeSettingsLive do
|
|||
alias Mv.MembershipFees.MembershipFeeType
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
actor = current_actor(socket)
|
||||
|
|
|
|||
|
|
@ -15,13 +15,13 @@ defmodule MvWeb.MembershipFeeTypeLive.Form do
|
|||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1, submit_form: 3]
|
||||
|
||||
require Ash.Query
|
||||
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.MembershipFees
|
||||
alias Mv.MembershipFees.MembershipFeeType
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
|
|
|
|||
|
|
@ -16,14 +16,14 @@ defmodule MvWeb.MembershipFeeTypeLive.Index do
|
|||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
require Ash.Query
|
||||
|
||||
alias Mv.Membership
|
||||
alias Mv.Membership.Member
|
||||
alias Mv.MembershipFees
|
||||
alias Mv.MembershipFees.MembershipFeeType
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Ash.Query
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
actor = current_actor(socket)
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@ defmodule MvWeb.RoleLive.Form do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
alias Mv.Authorization.PermissionSets
|
||||
|
||||
import MvWeb.RoleLive.Helpers, only: [format_error: 1]
|
||||
|
||||
alias Mv.Authorization.PermissionSets
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
~H"""
|
||||
|
|
|
|||
|
|
@ -13,13 +13,13 @@ defmodule MvWeb.RoleLive.Index do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
import MvWeb.RoleLive.Helpers, only: [permission_set_badge_variant: 1]
|
||||
|
||||
alias Mv.Accounts
|
||||
alias Mv.Authorization
|
||||
|
||||
require Ash.Query
|
||||
|
||||
import MvWeb.RoleLive.Helpers, only: [permission_set_badge_variant: 1]
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
actor = socket.assigns[:current_user]
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@ defmodule MvWeb.RoleLive.Show do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
import MvWeb.RoleLive.Helpers,
|
||||
only: [format_error: 1, permission_set_badge_variant: 1, opts_with_actor: 3]
|
||||
|
||||
alias Mv.Accounts
|
||||
|
||||
require Ash.Query
|
||||
|
||||
import MvWeb.RoleLive.Helpers,
|
||||
only: [format_error: 1, permission_set_badge_variant: 1, opts_with_actor: 3]
|
||||
|
||||
@impl true
|
||||
def mount(%{"id" => id}, _session, socket) do
|
||||
case Ash.get(
|
||||
|
|
|
|||
|
|
@ -6,13 +6,14 @@ defmodule MvWeb.StatisticsLive do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Logger
|
||||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1]
|
||||
|
||||
alias Mv.MembershipFees.MembershipFeeType
|
||||
alias Mv.Statistics
|
||||
alias MvWeb.Helpers.MembershipFeeHelpers
|
||||
|
||||
require Logger
|
||||
|
||||
@impl true
|
||||
def mount(_params, _session, socket) do
|
||||
# Only static assigns and fee types here; load_statistics runs once in handle_params
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@ defmodule MvWeb.UserLive.Form do
|
|||
"""
|
||||
use MvWeb, :live_view
|
||||
|
||||
require Jason
|
||||
import MvWeb.Authorization, only: [can?: 3]
|
||||
import MvWeb.ErrorHelpers, only: [format_ash_error: 1]
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1, submit_form: 3]
|
||||
|
||||
alias Mv.Accounts
|
||||
alias Mv.Accounts.User, as: UserResource
|
||||
|
|
@ -45,9 +47,7 @@ defmodule MvWeb.UserLive.Form do
|
|||
alias MvWeb.Helpers.MemberHelpers
|
||||
alias MvWeb.Live.MemberDropdownNav
|
||||
|
||||
import MvWeb.LiveHelpers, only: [current_actor: 1, submit_form: 3]
|
||||
import MvWeb.Authorization, only: [can?: 3]
|
||||
import MvWeb.ErrorHelpers, only: [format_ash_error: 1]
|
||||
require Jason
|
||||
|
||||
@impl true
|
||||
def render(assigns) do
|
||||
|
|
|
|||
|
|
@ -3,9 +3,10 @@ defmodule MvWeb.LiveUserAuth do
|
|||
Helpers for authenticating users in LiveViews.
|
||||
"""
|
||||
|
||||
import Phoenix.Component
|
||||
use MvWeb, :verified_routes
|
||||
|
||||
import Phoenix.Component
|
||||
|
||||
alias AshAuthentication.Phoenix.LiveSession
|
||||
alias Phoenix.LiveView
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue