Skip to main content

Login

To first access any FIYGE endpoints a user must authenticate using the login endpoints.

Request​

POST /access_controls/users/login.json

Form Data​

data[users][user_name]: username@fiyge.com
data[users][user_password]: password123!

Request Success​

{
"errors": [],
"message": ["login successfully"],
"social_providers": [],
"http_referer": false,
"refresh_token": "RT-refreshtoken",
"access_token": "accesstoken",
"session_name": "PHPSESSID",
"session_id": "accesstoken",
"inherit_views": 1,
"alias": "users",
"singular": "user",
"model": "users",
"controllerClass": "\\module\\access_controls\\controller\\users",
"modelClass": "\\module\\access_controls\\model\\users",
"notEmptyField": {
"users": {
"user_name": "user_name",
"user_password": "user_password"
}
},
"user_id": "123",
"user_fullname": "Michael",
"data": {
"users": {
//includes json data of the user
}
}
}

We will use access_token in subsequent requests to authenticate and refresh_token once access_token is invalid

Request Error​

{
"errors": [
"Invalid Password"
],
"message": [
"Login failed"
],

}

Note: Failed logins return 200 OK with a non-empty errors

Making Requests​

To start making requests we will need to attach the access token as a Bearer Token inside the headers.

const fetchOptions = {
headers: { Authorization: `Bearer ${accessToken}` },
};

const response = await fetch(url.toString(), fetchOptions);

Login Example​

Here is a code snippet

src/api/auth.ts
async function login(email: string, password: string) {
const url = new URL(`access_controls/users/login.json`, api);

const formData = new FormData();
formData.append("data[users][user_name]", email);
formData.append("data[users][user_password]", password);

try {
const loginRequest = await fetch(url, {
method: "POST",
body: formData,
});

const loginJSON = await loginRequest.json();
const { errors, access_token, refresh_token, data } = loginJSON;

if (hasError(errors)) {
const errorMessage = formatError(errors);
return {
error: true,
message: errorMessage as string,
};
}

return {
error: false,
message: "Successfully logged in",
data: {
accessToken: access_token,
refreshToken: refresh_token,
userData: data,
},
};
} catch (err) {
console.error(err);
return {
error: true,
message: "Error logging in",
};
}
}