mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-29 07:53:23 +00:00
202 lines
5.4 KiB
JavaScript
202 lines
5.4 KiB
JavaScript
import { signOut, signIn } from 'next-auth/react';
|
|
import { errorHandler, requestResponseHandler } from './actionsHandlers';
|
|
import {
|
|
BE_AUTH_LOGIN_URL,
|
|
BE_AUTH_REFRESH_JWT_URL,
|
|
BE_AUTH_REGISTER_URL,
|
|
BE_AUTH_PROFILES_URL,
|
|
BE_AUTH_PROFILES_ROLES_URL,
|
|
BE_AUTH_RESET_PASSWORD_URL,
|
|
BE_AUTH_NEW_PASSWORD_URL,
|
|
FE_USERS_LOGIN_URL,
|
|
} from '@/utils/Url';
|
|
import { PARENT_FILTER } from '@/utils/constants';
|
|
|
|
/**
|
|
* Login action
|
|
*/
|
|
export const login = (data) => {
|
|
return signIn('credentials', {
|
|
redirect: false,
|
|
email: data.email,
|
|
password: data.password,
|
|
role_type: data.role_type,
|
|
});
|
|
};
|
|
|
|
/**
|
|
* Login user with API
|
|
*/
|
|
export const getJWT = (data) => {
|
|
const request = new Request(`${BE_AUTH_LOGIN_URL}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(data),
|
|
credentials: 'include',
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
export const refreshJWT = (data) => {
|
|
const request = new Request(`${BE_AUTH_REFRESH_JWT_URL}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
body: JSON.stringify(data),
|
|
credentials: 'include',
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
/**
|
|
* Disconnects the user after confirming the action.
|
|
* If `NEXT_PUBLIC_USE_FAKE_DATA` environment variable is set to 'true', it will log a fake disconnect and redirect to the login URL.
|
|
* Otherwise, it will call `signOut` from NextAuth.js to handle the logout.
|
|
*
|
|
* @function
|
|
* @name disconnect
|
|
* @returns {void}
|
|
*/
|
|
export const disconnect = () => {
|
|
signOut({ callbackUrl: FE_USERS_LOGIN_URL });
|
|
};
|
|
|
|
export const fetchProfileRoles = (
|
|
establishment,
|
|
filter = PARENT_FILTER,
|
|
page = '',
|
|
pageSize = ''
|
|
) => {
|
|
let url = `${BE_AUTH_PROFILES_ROLES_URL}?filter=${filter}&establishment_id=${establishment}`;
|
|
if (page !== '' && pageSize !== '') {
|
|
url = `${BE_AUTH_PROFILES_ROLES_URL}?filter=${filter}&establishment_id=${establishment}&page=${page}`;
|
|
}
|
|
return fetch(url, {
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
},
|
|
})
|
|
.then(requestResponseHandler)
|
|
.catch(errorHandler);
|
|
};
|
|
|
|
export const updateProfileRoles = (id, data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_PROFILES_ROLES_URL}/${id}`, {
|
|
method: 'PUT',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const deleteProfileRoles = async (id, csrfToken) => {
|
|
const response = await fetch(`${BE_AUTH_PROFILES_ROLES_URL}/${id}`, {
|
|
method: 'DELETE',
|
|
headers: {
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
});
|
|
|
|
if (!response.ok) {
|
|
// Extraire le message d'erreur du backend
|
|
const errorData = await response.json();
|
|
const errorMessage =
|
|
errorData?.error ||
|
|
'Une erreur est survenue lors de la suppression du profil.';
|
|
|
|
// Jeter une erreur avec le message spécifique
|
|
throw new Error(errorMessage);
|
|
}
|
|
|
|
return response.json();
|
|
};
|
|
|
|
export const fetchProfiles = () => {
|
|
return fetch(`${BE_AUTH_PROFILES_URL}`)
|
|
.then(requestResponseHandler)
|
|
.catch(errorHandler);
|
|
};
|
|
|
|
export const createProfile = (data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_PROFILES_URL}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const deleteProfile = (id, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_PROFILES_URL}/${id}`, {
|
|
method: 'DELETE',
|
|
headers: {
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const updateProfile = (id, data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_PROFILES_URL}/${id}`, {
|
|
method: 'PUT',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const sendNewPassword = (data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_NEW_PASSWORD_URL}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const subscribe = (data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_REGISTER_URL}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|
|
|
|
export const resetPassword = (uuid, data, csrfToken) => {
|
|
const request = new Request(`${BE_AUTH_RESET_PASSWORD_URL}/${uuid}`, {
|
|
method: 'POST',
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
'X-CSRFToken': csrfToken,
|
|
},
|
|
credentials: 'include',
|
|
body: JSON.stringify(data),
|
|
});
|
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
|
};
|