Merge branch 'account' into preprod

This commit is contained in:
isUnknown 2025-09-03 11:01:27 +02:00
commit d8fe9ad13a
21 changed files with 655 additions and 95 deletions

View file

@ -29,11 +29,14 @@ return [
],
'routes' => [
require(__DIR__ . '/routes/logout.php'),
require(__DIR__ . '/routes/login.php'),
require(__DIR__ . '/routes/toggle-favorite.php'),
require(__DIR__ . '/routes/upload-images.php'),
require(__DIR__ . '/routes/save-page.php'),
require(__DIR__ . '/routes/save-file.php'),
require(__DIR__ . '/routes/remove-file.php'),
require(__DIR__ . '/routes/update-password.php'),
require(__DIR__ . '/routes/update-email.php'),
require(__DIR__ . '/routes/upload-pdf.php'),
require(__DIR__ . '/routes/validate-brief.php'),
require(__DIR__ . '/routes/request-project-creation.php'),

View file

@ -0,0 +1,35 @@
<?php
return [
"pattern" => "login.json",
"method" => "POST",
"action" => function () {
$json = file_get_contents("php://input");
$data = json_decode($json);
$kirby = kirby();
$email = $data->email;
$password = $data->password;
if(V::email($email)) {
try {
$kirby->auth()->login($email, $password);
return json_encode([
"status" => "success",
"role" => (string) $kirby->user()->role()
]);
} catch (Exception $e) {
return json_encode([
"status" => "error",
"message" => "<strong>Email ou mot de passe invalide.</strong><br>Contactez l'administrateur pour demander la réinitialisation de vos informations de connexion."
]);
}
} else {
return json_encode([
"status" => "error",
"message" => "<strong>Email invalide.</strong>"
]);
}
},
];

View file

@ -10,6 +10,6 @@ return [
session_start();
}
go(site()->panel()->url());
go(site()->url() . '/login');
},
];

View file

@ -0,0 +1,22 @@
<?php
return [
'pattern' => '/update-email.json',
'method' => 'POST',
'action' => function() {
$json = file_get_contents("php://input");
$data = json_decode($json);
try {
kirby()->user()->changeEmail($data->email);
return [
'status' => 'success'
];
} catch (\Throwable $th) {
return [
'status' => 'error',
'message' => 'Impossible de mettre à jour l\'email : ' . $th->getMessage() . ' in file ' . $th->getFile() . ' line ' . $th->getLine()
];
}
}
];

View file

@ -0,0 +1,22 @@
<?php
return [
'pattern' => '/update-password.json',
'method' => 'POST',
'action' => function() {
$json = file_get_contents("php://input");
$data = json_decode($json);
try {
kirby()->user()->changePassword($data->password);
return [
'status' => 'success'
];
} catch (\Throwable $th) {
return [
'status' => 'error',
'message' => 'Impossible de mettre à jour le mot de passe : ' . $th->getMessage() . ' in file ' . $th->getFile() . ' line ' . $th->getLine()
];
}
}
];

View file

@ -1,27 +1,46 @@
<?php
return function ($page, $kirby, $site) {
if (!$kirby->user()) {
go($site->panel()->url());
if (!$kirby->user() && $page->uri() !== 'login') {
go('/login');
}
$data = $page->toArray();
$data['template'] = (string) $page->template();
$data['newInspirations'] = (bool) page('inspirations')->children()->findBy('new', 'true');
$userData = [
"role" => (string) $kirby->user()->role(),
"uuid" => (string) $kirby->user()->uuid()
];
if ($kirby->user()->client()->exists() && $kirby->user()->client()->isNotEmpty()) {
$userData['client'] = [
"name" => (string) $kirby->user()->client()->toPage()->title(),
"uuid" => (string) $kirby->user()->client()->toPage()->uuid()
if ($kirby->user()) {
$userData = [
"name" => (string) $kirby->user()->name()->or(null),
"email" => (string) $kirby->user()->email(),
"role" => (string) $kirby->user()->role(),
"uuid" => (string) $kirby->user()->uuid()
];
if ($kirby->user()->client()->exists() && $kirby->user()->client()->isNotEmpty()) {
$userData['client'] = [
"name" => (string) $kirby->user()->client()->toPage()->title(),
"uuid" => (string) $kirby->user()->client()->toPage()->uuid()
];
if ($kirby->user()->client()->toPage()->logo()->isNotEmpty()) {
$userData['client']["logo"] = $kirby->user()->client()->toPage()->logo()->toFile()->url();
}
}
if ($kirby->user()->projects()->exists() && $kirby->user()->projects()->isNotEmpty()) {
$userData['projects'] = $kirby->user()->projects()->toPages()->map(function ($project) {
return [
"title" => (string) $project->title(),
"uri" => (string) $project->uri(),
"step" => (string) $project->getStepLabel(),
];
})->data;
}
}
return [
'genericData' => $data,
'userData' => $userData
'userData' => $userData ?? null
];
};

View file

@ -0,0 +1,6 @@
<?php
echo json_encode([
"page" => $genericData,
"user" => $userData
]);

View file

@ -0,0 +1 @@
<?php snippet('generic-template') ?>

View file

@ -0,0 +1,13 @@
<?php
$specificData = [
"exampleField" => $page->exampleField(),
"exampleHardData" => 'Example hard value'
];
$pageData = array_merge($genericData, $specificData);
echo json_encode([
"page" => $pageData,
"user" => $userData
]);

View file

@ -0,0 +1 @@
<?php snippet('generic-template') ?>

View file

@ -1,7 +1,15 @@
<?php
if (!$kirby->user()) {
return json_encode([
'page' => $genericData,
'user' => []
]);
}
function getProjectData($project)
{
{
$data = [
'title' => $project->title()->value(),
'url' => $project->url(),