ЕСОЗ - публічна документація
RC_(CSI-2483,CR-441)_Approve auth method request
Specification
Authorize user
Verify the validity of access token
Return 401 in case validation fails
Check scopes in order to perform this action (scope = 'authentication_method_request:write')
Return 403 in case invalid scope(s)
Logic
action = deactivate
validate auth_method_request.auth_method_current:
If auth_method_request.auth_method_current = OTP - Verificate sms (Invoke verification module to verify OTP (OTP Verification))
If auth_method_request.auth_method_current = OFFLINE - verificate download documents ( Media Content Storage)
Update authentication method request
Change entity status in IL_DB.authentication_method_request to COMPLETED
Set updated_at - now() (Get current date-time)
Set updated_by - user_id (Extract user from token)
Update mpi.person_authentication_method:
set ended_at = now() (Get current date-time)
action = update
validate auth_method_request.auth_method_current:
If auth_method_request.auth_method_current = OTP - Verificate sms (Invoke verification module to verify OTP (OTP Verification))
If auth_method_request.auth_method_current = OFFLINE - verificate download documents
Update authentication method request
Change entity status in IL_DB.authentication_method_request to COMPLETED
Set updated_at - now() (Get current date-time)
Set updated_by - user_id (Extract user from token)
Update mpi.person_authentication_method:
set
alias
(if it passed in request)
action = insert
if type =
THIRD_PERSON
, check that person fromauthentication_method.value
is an approved confidant for a person from request – exists active and approved confidant person relationship between person from request and person_id from authentication method value (using following logic: https://e-health-ua.atlassian.net/wiki/spaces/CSI/pages/17667883028 withperson_id
= person from request andconfidant_person_id
= value from auth method - expected:ok, :approved
response)in case of error - return 409 ('Cannot be confirmed by method with not approved confidant person relationship')
validate auth_method_request.auth_method_current:
If auth_method_request.auth_method_current = OTP - Verificate sms (Invoke verification module to verify OTP (OTP Verification))
If auth_method_request.auth_method_current = OFFLINE - verificate download documents
If il.authentication_method_request.authentication_method.type =
OFFLINE
verificate download documents
if type =
THIRD_PERSON
, setvalue = il.authentication_method_request.authentication_method.value
alias = il.authentication_method_request.authentication_method.alias
Start date: start_date = Current_date()
End date:
if (person.age < 18) { end_date =birth_date + no_self_auth_age - 1d;} else { end_date = start_date + third_person_term;}
Update authentication method request
Change entity status in IL_DB.authentication_method_request to COMPLETED
Set updated_at - now() (Get current date-time)
Set updated_by - user_id (Extract user from token)
Update mpi.person_asuthentication_methods
If active il.authentication_method_request.authentication_method.type = OTP or OFFLINE or NA,
person’s auth method that was before becomes inactive - set
ended_at
= now() (Get current date-time)set new auth_method in person_auth_methods. Set fields -
type
,phone_numer
,alias
(if it is in request)
If il.authentication_method_request.authentication_method.type = THIRD_PERSON
Add to table
person_auth_methods
row with type =third_person
. Set fields -type
,value
,alias
,ended_at
,started_at
Check if Person should be sent for verification*
- please note, (GraphQL) Create auth method refers to this validation.
Rules for validation of Persons
Person has OFFLINE auth method (check in Request)
Person’s age < no_self_auth_age and has document with type BIRTH_CERTIFICATE_FOREIGN (check in DB, within mpi.person.documents and mpi.person.confidant_person.documents_relationship)
Person’s age >= no_self_auth_age and has document with type PERMANENT_RESIDENCE_PERMIT (check in DB)
Send Person to manual verification process
checking Rule 01
If
$.authenticationMethod.type
=OFFLINE
and action =insert
then (
verification is neededSet
MPI.person_verifications.nhs_verification_status
=VERIFICATION_NEEDED
andSet
MPI.person_verifications.nhs_verification_reason
=RULES_TRIGGERED
andCreate
StateChangeEvent
in event manager with new verification status )
elseif
$.authenticationMethod.type
=OTP
and action =insert
andMPI.persons.verification_status
!=VERIFIED
then (
checking Rule 02-05if
(Person’sage
<no_self_auth_age
and has document with typeBIRTH_CERTIFICATE_FOREIGN
within mpi.person.documents and mpi.person.confidant_person[:].documents_relationship[:]) or (Person’sage
>=no_self_auth_age
and has document with typePERMANENT_RESIDENCE_PERMIT
) then
manual verification is neededSet
MPI.person_verifications.nhs_verification_status
=VERIFICATION_NEEDED
andSet
MPI.person_verifications.nhs_verification_reason
=RULES_TRIGGERED
andCreate StateChangeEvent in event manager with new verification status
else
manual verification is not neededSet
MPI.person_verifications.nhs_verification_status
=VERIFIED
andSet
MPI.person_verifications.nhs_verification_reason
=RULES_PASSED
andSet
MPI.person_verifications.nhs_verification_comment
=NULL
andCreate StateChangeEvent in event manager with new verification status
)
ЕСОЗ - публічна документація