A simple library to handle user management over AWS Cognito service.
The following functionality is covered;
- User registration
- Confirm registration (with the confirmation code received from AWS, by email)
- User authentication
- Fetch user data by an access token
- Fetch user data by username
- Change user password
- Update user attributes
- Reset a forgotten password
Online documentation is available here.
To use cognitex
with your projects, edit your mix.exs
file to add it as a dependency:
def deps do
[
{:cognitex, "~> 0.1.0"}
]
end
An example config might look like this:
config :aws,
key: "<AWS_ACCESS_KEY_ID>",
secret: "<AWS_SECRET_ACCESS_KEY>",
region: "<AWS_REGION>",
client_id: "<AWS_CLIENT_ID>",
user_pool_id: "<AWS_USER_POOL_ID>"
First, we will set up a new AWS Cognito user pool with the correct configuration.
- Visit your AWS console and go to the AWS Cognito service. Click on "Manage your User Pools" and click "Create a User Pool".
- Specify a name for your pool and click "Review Defaults".
- Optional: edit the password policy to remove some of the requirements. If you are just testing, using simple passwords will make it easier.
- Click the "edit client" link. Specify a name for your app and be sure to disable the client secret and enable the
ADMIN_NO_SRP_AUTH
option. - Click "Create pool". Take note of the Pool Id at the top of the page and click on the apps page. Here, take note of the App client id.
iex> Cognitex.sign_up("[email protected]", "Test123", name: "John", family_name: "Smith")
{:ok,
%{
"CodeDeliveryDetails" => %{
"AttributeName" => "email",
"DeliveryMedium" => "EMAIL",
"Destination" => "j***@e***.co"
},
"UserConfirmed" => false,
"UserSub" => "uuid"
}
}
iex> Cognitex.sign_up("[email protected]", "Test123", name: "John", family_name: "Smith")
{:error,
%{
message: "An account with the given email already exists.",
status: "UsernameExistsException"
}
}
Full documentation is available here.
- Official Cognito API reference:
This library is released under the MIT License.
It is based on: