Packages
pow
1.0.17
1.0.39
1.0.38
1.0.37
1.0.36
1.0.35
1.0.34
1.0.33
1.0.32
1.0.31
1.0.30
1.0.29
1.0.28
1.0.27
1.0.26
1.0.25
1.0.24
1.0.23
1.0.22
1.0.21
1.0.20
1.0.19
1.0.18
1.0.17
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-rc.4
1.0.0-rc.3
1.0.0-rc.2
1.0.0-rc.1
1.0.0-rc.0
0.1.0-rc.1
0.1.0-alpha.8
0.1.0-alpha.7
retired
0.1.0-alpha.6
0.1.0-alpha.5
0.1.0-alpha.4
0.1.0-alpha.3
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha
Robust user authentication solution
Security advisory:
This version has known vulnerabilities.
View advisories
Current section
Files
Jump to
Current section
Files
lib/extensions/invitation/ecto/context.ex
defmodule PowInvitation.Ecto.Context do
@moduledoc """
Handles invitation context for user.
"""
alias Pow.{Config, Ecto.Context, Operations}
alias PowInvitation.Ecto.Schema
@doc """
Creates an invited user.
See `PowInvitation.Ecto.Schema.invite_changeset/3`.
"""
@spec create(Context.user(), map(), Config.t()) :: {:ok, Context.user()} | {:error, Context.changeset()}
def create(inviter_user, params, config) do
user_mod = Config.user!(config)
user_mod
|> struct()
|> user_mod.invite_changeset(inviter_user, params)
|> Context.do_insert(config)
end
@doc """
Updates an invited user and accepts invitation.
See `PowInvitation.Ecto.Schema.accept_invitation_changeset/2`.
"""
@spec update(Context.user(), map(), Config.t()) :: {:ok, Context.user()} | {:error, Context.changeset()}
def update(user, params, config) do
user
|> Schema.accept_invitation_changeset(params)
|> Context.do_update(config)
end
@doc """
Finds an invited user by the `invitation_token` column.
Ignores users with `:invitation_accepted_at` set.
"""
@spec get_by_invitation_token(binary(), Config.t()) :: Context.user() | nil
def get_by_invitation_token(token, config) do
[invitation_token: token]
|> Operations.get_by(config)
|> case do
%{invitation_accepted_at: nil} = user -> user
_ -> nil
end
end
end