Skip to content

Commit 9876ce9

Browse files
committed
Refacto and UI imrpovement
1 parent ea14e81 commit 9876ce9

2 files changed

Lines changed: 48 additions & 3 deletions

File tree

src/Controllers/AdminController.php

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
use App\Repositories\WidgetRepository;
1212
use App\Services\ApiWrapper;
1313
use Exception;
14+
use MailchimpTransactional\ApiClient;
1415
use Psr\Http\Message\ResponseInterface as Response;
1516
use Psr\Http\Message\ServerRequestInterface as Request;
1617
use Slim\Flash\Messages;
@@ -30,6 +31,7 @@ public function __construct(
3031
private ApiWrapper $apiWrapper,
3132
private AccessTokenRepository $accessTokenRepository,
3233
private AuthorizationCodeRepository $authorizationCodeRepository,
34+
private ApiClient $mailchimp,
3335
) {}
3436

3537
/**
@@ -102,11 +104,54 @@ public function newUser(Request $request, Response $response): Response
102104
return $this->redirectToRoute($request, $response, 'app_admin_index');
103105
}
104106

105-
$this->userRepository->insert($email);
106-
$this->messages->addMessage('success', 'Utilisateur créé : ' . $email);
107+
$user = $this->userRepository->insert($email);
108+
$user = $this->userRepository->insertResetToken($user);
109+
110+
$routeParser = RouteContext::fromRequest($request)->getRouteParser();
111+
$resetUrl = $_SERVER['WEBSITE_DOMAIN'] . $routeParser->urlFor('app_reset_password', ["token" => $user->reset_token]);
112+
113+
$this->mailchimp->messages->send([
114+
"message" => [
115+
"from_email" => "contact@helloasso.io",
116+
"from_name" => "HelloAsso",
117+
"subject" => "Bienvenue sur HelloAsso Stream !",
118+
"html" => $this->buildWelcomeEmail($resetUrl),
119+
"to" => [["email" => $user->email]],
120+
],
121+
]);
122+
123+
$this->messages->addMessage('success', 'Utilisateur créé : ' . $email . ' — un email de bienvenue a été envoyé.');
107124
return $this->redirectToRoute($request, $response, 'app_admin_index');
108125
}
109126

127+
/**
128+
* Génère le contenu HTML de l'email de bienvenue envoyé aux nouveaux utilisateurs.
129+
*/
130+
private function buildWelcomeEmail(string $resetUrl): string
131+
{
132+
return <<<HTML
133+
<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; color: #333;">
134+
<h1 style="color: #2C88D9;">Bienvenue sur HelloAsso Stream ! 🎉</h1>
135+
<p>Bonjour,</p>
136+
<p>Un compte vient d'être créé pour vous sur <strong>HelloAsso Stream</strong>, l'outil qui vous permet de suivre vos collectes en temps réel.</p>
137+
<p>Pour commencer, définissez votre mot de passe en cliquant sur le bouton ci-dessous :</p>
138+
<p style="text-align: center; margin: 30px 0;">
139+
<a href="{$resetUrl}" style="background-color: #2C88D9; color: #fff; padding: 12px 24px; text-decoration: none; border-radius: 6px; font-weight: bold;">Définir mon mot de passe</a>
140+
</p>
141+
<p style="font-size: 12px; color: #888;">Ou copiez ce lien dans votre navigateur : {$resetUrl}</p>
142+
<hr style="border: none; border-top: 1px solid #eee; margin: 30px 0;" />
143+
<h2 style="color: #2C88D9;">Que pourrez-vous faire une fois connecté ?</h2>
144+
<h3>📊 Créer un Stream</h3>
145+
<p>Un <strong>stream</strong> vous permet d'avoir un <strong>compteur en temps réel</strong> lié à un formulaire de don HelloAsso. Idéal pour afficher la progression d'une collecte lors d'un live ou sur votre site.</p>
146+
<h3>🎯 Créer un Évènement</h3>
147+
<p>Un <strong>évènement</strong> vous permet d'avoir un <strong>compteur en temps réel</strong> qui agrège <strong>plusieurs streams</strong> (et donc plusieurs formulaires de don). Parfait pour suivre une campagne de collecte globale composée de plusieurs initiatives.</p>
148+
<hr style="border: none; border-top: 1px solid #eee; margin: 30px 0;" />
149+
<p>À très vite sur la plateforme ! 🚀</p>
150+
<p>L'équipe HelloAsso</p>
151+
</div>
152+
HTML;
153+
}
154+
110155
public function newEvent(Request $request, Response $response): Response
111156
{
112157
$user = $request->getAttribute('user');

src/views/stream/index-admin.html.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
<div class="mb-3">
4141
<label for="user_email" class="form-label">Email</label>
4242
<input type="email" class="form-control" id="user_email" name="user_email" placeholder="utilisateur@exemple.com" required>
43-
<div class="form-text">Un mot de passe aléatoire sera généré. L'utilisateur devra utiliser « Mot de passe oublié » pour le définir.</div>
43+
<div class="form-text">Un email de bienvenue sera envoyé avec un lien pour définir son mot de passe.</div>
4444
</div>
4545
<button type="submit" class="btn btn-success">✅ Créer l'utilisateur</button>
4646
</form>

0 commit comments

Comments
 (0)