Specification
Apiary | |
PATCH | mithril/api/users/{user_id}/authentication_factors{2fa_id}/actions/set_factor |
Scope | authentication_factor:set_factor |
Purpose
Update value of factor (after RESET logical status of 2fa)
Request parameters
- token
- user_id
- 2fa_id
- new_factor
Logic WS
- Validate token & scope
- Validate user_id FK
- Validate 2fa_id FK
Get 2FA item by 2fa_id for non-blocked user by $.user_id
SELECT * FROM authentication_factors AS 2FA INNER JOIN user AS U ON 2FA.user_id = U.id WHERE U.id = $.user_id AND 2FA.id = $.2fa_id AND U.is_active = TRUE AND U.is_blocked = FALSE
- If (exist 2FA item for user) AND (token_type = access_token_type) AND (2FA.factor <> "" AND 2FA.factor <> NULL) - update 2FA item (set values) to logical status = ACTIVE :
- 2FA.factor = new_factor
- 2FA.update_at = now()
- If (exist 2FA item for user) AND (token_type = 2fa_access_token_type) AND (2FA.factor = "" OR 2FA.factor = NULL) - update 2FA item (set values) to logical status = ACTIVE :
- 2FA.factor = new_factor
- 2FA.update_at = now()
- Else return 401 error
- If (exist 2FA item for user) AND (token_type = access_token_type) AND (2FA.factor <> "" AND 2FA.factor <> NULL) - update 2FA item (set values) to logical status = ACTIVE :
- Return 200
- ...
Response
- 200 if 2FA successful set new.factor + 2FA_object_view
- 4xx in other case