Data structure
Entities (tables)
Authentication factors
This entity defines authentication factors entity information structure:
Column | Type | Purpose |
---|---|---|
id | uuid | |
user_id | uuid | User FK |
type | varchar | |
factor | varchar | Factor value |
is_active | boolean | |
inserted_at | timestamp | |
updateed_at | timestamp |
additional constraint: create unique index (user_id, type)
where factor is string which depends on factor type, examples:
type | factor |
---|---|
SMS | "+380677778899" |
PHONE | "+380677778899" |
"pupkin.vasya@gmail.com" |
Change User entity
- We need store for user 3 attribute:
- count logins fail
- count 2FA fail
- block status of user
Propose store counters parameters for 2FA in `users.priv_settings` as structure :
{
"login_error_counter"
:
0
,
"otp_error_counter"
:
0
}
Propose store information about blocked directly in entity `users`.
New columns:Column Type Purpose is_blocked boolean block_reason varchar (255), NULL
Сonstraints
- user have one active 2FA factor ( one of any type)
- unique index for `authentication_factors` on user_id+type