Packages
phoenix_kit
1.7.149
1.7.208
1.7.207
1.7.206
1.7.205
1.7.204
1.7.203
1.7.202
1.7.201
1.7.200
1.7.199
1.7.198
1.7.197
1.7.196
1.7.194
1.7.193
1.7.192
1.7.191
1.7.190
1.7.189
1.7.187
1.7.186
1.7.185
1.7.184
1.7.183
1.7.182
1.7.181
1.7.180
1.7.179
1.7.178
1.7.177
1.7.176
1.7.175
1.7.174
1.7.173
1.7.172
1.7.171
1.7.170
1.7.169
1.7.168
1.7.167
1.7.166
1.7.165
1.7.164
1.7.162
1.7.161
1.7.160
1.7.159
1.7.157
1.7.156
1.7.155
1.7.154
1.7.153
1.7.152
1.7.151
1.7.150
1.7.149
1.7.146
1.7.145
1.7.144
1.7.143
1.7.138
1.7.133
1.7.132
1.7.131
1.7.130
1.7.128
1.7.126
1.7.125
1.7.121
1.7.120
1.7.119
1.7.118
1.7.117
1.7.116
1.7.115
1.7.114
1.7.113
1.7.112
1.7.111
1.7.110
1.7.109
1.7.108
1.7.107
1.7.106
1.7.105
1.7.104
1.7.103
1.7.102
1.7.101
1.7.100
1.7.99
1.7.98
1.7.97
1.7.96
1.7.95
1.7.94
1.7.93
1.7.92
1.7.91
1.7.90
1.7.89
1.7.88
1.7.87
1.7.86
1.7.85
1.7.84
1.7.83
1.7.82
1.7.81
1.7.80
1.7.79
1.7.78
1.7.77
1.7.76
1.7.75
1.7.74
1.7.71
1.7.70
1.7.69
1.7.66
1.7.65
1.7.64
1.7.63
1.7.62
1.7.61
1.7.59
1.7.58
1.7.57
1.7.56
1.7.55
1.7.54
1.7.53
1.7.52
1.7.51
1.7.49
1.7.44
1.7.43
1.7.42
1.7.41
1.7.39
1.7.38
1.7.37
1.7.36
1.7.34
1.7.33
1.7.31
1.7.30
1.7.29
1.7.28
1.7.27
1.7.26
1.7.25
1.7.24
1.7.23
1.7.22
1.7.21
1.7.20
1.7.19
1.7.18
1.7.17
1.7.16
1.7.15
1.7.14
1.7.13
1.7.12
1.7.11
1.7.10
1.7.9
1.7.8
1.7.7
1.7.6
1.7.5
1.7.4
1.7.3
1.7.2
1.7.1
1.7.0
1.6.20
1.6.19
1.6.18
1.6.17
1.6.16
1.6.15
1.6.14
1.6.13
1.6.12
1.6.11
1.6.10
1.6.9
1.6.8
1.6.7
1.6.6
1.6.5
1.6.4
1.6.3
1.5.2
1.5.1
1.5.0
1.4.9
1.4.8
1.4.7
1.4.6
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.2
1.3.1
1.3.0
1.2.10
1.2.9
1.2.8
1.2.7
1.2.5
1.2.4
1.2.2
1.2.1
1.2.0
1.1.0
1.0.0
A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more
Current section
Files
Jump to
Current section
Files
lib/phoenix_kit/audit_log/entry.ex
defmodule PhoenixKit.AuditLog.Entry do
@moduledoc """
Schema for audit log entries.
Tracks administrative actions performed in PhoenixKit, providing a complete
audit trail of sensitive operations.
## Fields
* `target_user_uuid` - The UUID of the user affected by the action
* `admin_user_uuid` - The UUID of the admin who performed the action
* `action` - The type of action performed (e.g., "admin_password_reset")
* `ip_address` - The IP address from which the action was performed
* `user_agent` - The user agent string of the client
* `metadata` - Additional metadata about the action (JSONB)
* `inserted_at` - Timestamp when the log entry was created
"""
use Ecto.Schema
import Ecto.Changeset
@type t :: %__MODULE__{
uuid: UUIDv7.t() | nil,
target_user_uuid: UUIDv7.t() | nil,
admin_user_uuid: UUIDv7.t() | nil,
action: String.t(),
ip_address: String.t() | nil,
user_agent: String.t() | nil,
metadata: map() | nil,
inserted_at: DateTime.t() | nil
}
@valid_actions [
"admin_password_reset",
"user_created",
"user_updated",
"user_deleted",
"user_confirmed",
"user_locked",
"user_unlocked",
"role_assigned",
"role_revoked"
]
@primary_key {:uuid, UUIDv7, autogenerate: true}
schema "phoenix_kit_audit_logs" do
field :target_user_uuid, UUIDv7
field :admin_user_uuid, UUIDv7
field :action, :string
field :ip_address, :string
field :user_agent, :string
field :metadata, :map
timestamps(type: :utc_datetime, updated_at: false)
end
@doc """
Creates a changeset for audit log entry.
## Required Fields
* `:target_user_uuid` - UUID of the affected user
* `:admin_user_uuid` - UUID of the admin performing the action
* `:action` - Type of action performed
## Optional Fields
* `:ip_address` - IP address of the admin
* `:user_agent` - User agent string
* `:metadata` - Additional metadata (JSONB)
"""
def changeset(entry, attrs) do
entry
|> cast(attrs, [
:target_user_uuid,
:admin_user_uuid,
:action,
:ip_address,
:user_agent,
:metadata
])
|> validate_required([:target_user_uuid, :admin_user_uuid, :action])
|> validate_inclusion(:action, @valid_actions)
end
@doc """
Returns the list of valid action types.
"""
def valid_actions, do: @valid_actions
end