You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
spa_instat_tv/src/features/AuthServiceApp/requests/authСheck.tsx

61 lines
1.1 KiB

import { getClientSettings } from 'features/AuthStore/helpers'
import { getApiUrl } from '../config/routes'
const errorLexics = {
1: 'error_invalid_email_or_password',
4: 'error_user_not_found',
}
type FailedResponse = {
error: {
code: keyof typeof errorLexics,
message?: string,
},
ok: false,
}
type SuccessResponse = {
ok: true,
}
export const loginCheck = async (
email: string,
lang: string,
password: string,
redirect_url: string,
) => {
const {
client_id,
response_mode,
response_type,
scope,
} = getClientSettings()
const paramsUrl = {
client_id,
lang,
redirect_uri: redirect_url,
response_mode,
response_type,
scope,
}
const url = getApiUrl('/authorize-check')
const init: RequestInit = {
body: new URLSearchParams({
email,
password,
...paramsUrl as {},
}),
method: 'POST',
}
const response = await fetch(url, init)
const body: SuccessResponse | FailedResponse = await response.json()
if (body.ok) return Promise.resolve()
return Promise.reject(errorLexics[body.error.code])
}