cloak v0.7.0 Cloak.Fields.Map View Source
An Ecto.Type
to encrypt maps.
Configuration
You can customize the json library used for for converting the maps to and from JSON during encryption and decryption.
config :my_app, MyApp.Vault,
json_library: Jason
Migration
The database field must be of type :binary
.
add :encrypted_field, :binary
Usage
Define an Encrypted.Map
module in your project:
defmodule MyApp.Encrypted.Map do
use Cloak.Fields.Map, vault: MyApp.Vault
end
Then, define the type of your desired fields:
schema "table_name" do
field :encrypted_field, MyApp.Encrypted.Map
end
On encryption, the map will first be converted to JSON using the configured
:json_library
, and then encrypted. On decryption, the :json_library
will be used to convert it back to a map.
This means that on decryption, atom keys will become string keys.
# ON WRITE
%{hello: "world"}
# ON READ
# Keys converted to strings
%{"hello" => "world"}