mirror of
https://github.com/appwrite/appwrite.git
synced 2026-05-26 13:51:13 +00:00
Add notify to phone and oauth
This commit is contained in:
@@ -311,7 +311,7 @@ App::post('/v1/account/sessions/email')
|
||||
->addHeader('X-Fallback-Cookies', \json_encode([Auth::$cookieName => Auth::encodeSession($user->getId(), $secret)]));
|
||||
}
|
||||
|
||||
if ($project->getAttribute('auths', [])['notify'] ?? false) {
|
||||
if ($project->getAttribute('auths', [])['notify'] ?? false && !empty($user->getAttribute('email', ''))) {
|
||||
$body = $locale->getText("emails.authNotify.body");
|
||||
$subject = $locale->getText("emails.authNotify.subject");
|
||||
|
||||
@@ -378,7 +378,7 @@ App::post('/v1/account/sessions/email')
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setVariables($emailVariables)
|
||||
->setRecipient($email)
|
||||
->setRecipient($user->getAttribute('email'))
|
||||
->trigger();
|
||||
}
|
||||
|
||||
@@ -1532,7 +1532,8 @@ App::put('/v1/account/sessions/phone')
|
||||
->inject('locale')
|
||||
->inject('geodb')
|
||||
->inject('queueForEvents')
|
||||
->action(function (string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
|
||||
->inject('queueForMails')
|
||||
->action(function (string $userId, string $secret, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents, Mail $queueForMails) {
|
||||
|
||||
$userFromRequest = Authorization::skip(fn () => $dbForProject->getDocument('users', $userId));
|
||||
|
||||
@@ -1618,6 +1619,77 @@ App::put('/v1/account/sessions/phone')
|
||||
->setAttribute('current', true)
|
||||
->setAttribute('countryName', $countryName);
|
||||
|
||||
if ($project->getAttribute('auths', [])['notify'] ?? false && !empty($user->getAttribute('email', ''))) {
|
||||
$body = $locale->getText("emails.authNotify.body");
|
||||
$subject = $locale->getText("emails.authNotify.subject");
|
||||
|
||||
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||
$message
|
||||
->setParam('{{body}}', $body)
|
||||
->setParam('{{hello}}', $locale->getText("emails.authNotify.hello"))
|
||||
->setParam('{{footer}}', $locale->getText("emails.authNotify.footer"))
|
||||
->setParam('{{thanks}}', $locale->getText("emails.authNotify.thanks"))
|
||||
->setParam('{{signature}}', $locale->getText("emails.authNotify.signature"));
|
||||
$body = $message->render();
|
||||
|
||||
$smtp = $project->getAttribute('smtp', []);
|
||||
$smtpEnabled = $smtp['enabled'] ?? false;
|
||||
|
||||
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
|
||||
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
|
||||
$replyTo = "";
|
||||
|
||||
if ($smtpEnabled) {
|
||||
if (!empty($smtp['senderEmail'])) {
|
||||
$senderEmail = $smtp['senderEmail'];
|
||||
}
|
||||
if (!empty($smtp['senderName'])) {
|
||||
$senderName = $smtp['senderName'];
|
||||
}
|
||||
if (!empty($smtp['replyTo'])) {
|
||||
$replyTo = $smtp['replyTo'];
|
||||
}
|
||||
|
||||
$queueForMails
|
||||
->setSmtpHost($smtp['host'] ?? '')
|
||||
->setSmtpPort($smtp['port'] ?? '')
|
||||
->setSmtpUsername($smtp['username'] ?? '')
|
||||
->setSmtpPassword($smtp['password'] ?? '')
|
||||
->setSmtpSecure($smtp['secure'] ?? '');
|
||||
|
||||
$queueForMails
|
||||
->setSmtpReplyTo($replyTo)
|
||||
->setSmtpSenderEmail($senderEmail)
|
||||
->setSmtpSenderName($senderName);
|
||||
}
|
||||
|
||||
$device = $detector->getDevice();
|
||||
|
||||
$sessionCreatedAt = $session->getCreatedAt();
|
||||
$dateTime = new DateTimeImmutable($sessionCreatedAt);
|
||||
$date = $dateTime->format('Y-m-d');
|
||||
$time = $dateTime->format('H:i:s');
|
||||
|
||||
$emailVariables = [
|
||||
'direction' => $locale->getText('settings.direction'),
|
||||
'user' => $user->getAttribute('name'),
|
||||
'project' => $project->getAttribute('name'),
|
||||
'date' => $date,
|
||||
'time' => $time,
|
||||
'device' => $device['deviceBrand'] . " " . $device['deviceModel'] . " " . $device['deviceName'],
|
||||
'country' => $locale->getText('countries.' . strtolower($session->getAttribute('countryCode')), $locale->getText('locale.country.unknown')),
|
||||
'ip' => $request->getIP(),
|
||||
'redirect' => ''
|
||||
];
|
||||
|
||||
$queueForMails
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setVariables($emailVariables)
|
||||
->setRecipient($user->getAttribute('email'))
|
||||
->trigger();
|
||||
}
|
||||
|
||||
$response->dynamic($session, Response::MODEL_SESSION);
|
||||
});
|
||||
|
||||
@@ -2538,7 +2610,8 @@ App::patch('/v1/account/sessions/:sessionId')
|
||||
->inject('project')
|
||||
->inject('locale')
|
||||
->inject('queueForEvents')
|
||||
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $queueForEvents) {
|
||||
->inject('queueForMails')
|
||||
->action(function (?string $sessionId, Request $request, Response $response, Document $user, Database $dbForProject, Document $project, Locale $locale, Event $queueForEvents, Mail $queueForMails) {
|
||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
$sessionId = ($sessionId === 'current')
|
||||
? Auth::sessionVerify($user->getAttribute('sessions'), Auth::$secret, $authDuration)
|
||||
@@ -2586,9 +2659,80 @@ App::patch('/v1/account/sessions/:sessionId')
|
||||
$authDuration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
|
||||
|
||||
$queueForEvents
|
||||
->setParam('userId', $user->getId())
|
||||
->setParam('sessionId', $session->getId())
|
||||
->setPayload($response->output($session, Response::MODEL_SESSION));
|
||||
->setParam('userId', $user->getId())
|
||||
->setParam('sessionId', $session->getId())
|
||||
->setPayload($response->output($session, Response::MODEL_SESSION));
|
||||
|
||||
if ($project->getAttribute('auths', [])['notify'] ?? false && !empty($user->getAttribute('email', ''))) {
|
||||
$body = $locale->getText("emails.authNotify.body");
|
||||
$subject = $locale->getText("emails.authNotify.subject");
|
||||
|
||||
$message = Template::fromFile(__DIR__ . '/../../config/locale/templates/email-inner-base.tpl');
|
||||
$message
|
||||
->setParam('{{body}}', $body)
|
||||
->setParam('{{hello}}', $locale->getText("emails.authNotify.hello"))
|
||||
->setParam('{{footer}}', $locale->getText("emails.authNotify.footer"))
|
||||
->setParam('{{thanks}}', $locale->getText("emails.authNotify.thanks"))
|
||||
->setParam('{{signature}}', $locale->getText("emails.authNotify.signature"));
|
||||
$body = $message->render();
|
||||
|
||||
$smtp = $project->getAttribute('smtp', []);
|
||||
$smtpEnabled = $smtp['enabled'] ?? false;
|
||||
|
||||
$senderEmail = App::getEnv('_APP_SYSTEM_EMAIL_ADDRESS', APP_EMAIL_TEAM);
|
||||
$senderName = App::getEnv('_APP_SYSTEM_EMAIL_NAME', APP_NAME . ' Server');
|
||||
$replyTo = "";
|
||||
|
||||
if ($smtpEnabled) {
|
||||
if (!empty($smtp['senderEmail'])) {
|
||||
$senderEmail = $smtp['senderEmail'];
|
||||
}
|
||||
if (!empty($smtp['senderName'])) {
|
||||
$senderName = $smtp['senderName'];
|
||||
}
|
||||
if (!empty($smtp['replyTo'])) {
|
||||
$replyTo = $smtp['replyTo'];
|
||||
}
|
||||
|
||||
$queueForMails
|
||||
->setSmtpHost($smtp['host'] ?? '')
|
||||
->setSmtpPort($smtp['port'] ?? '')
|
||||
->setSmtpUsername($smtp['username'] ?? '')
|
||||
->setSmtpPassword($smtp['password'] ?? '')
|
||||
->setSmtpSecure($smtp['secure'] ?? '');
|
||||
|
||||
$queueForMails
|
||||
->setSmtpReplyTo($replyTo)
|
||||
->setSmtpSenderEmail($senderEmail)
|
||||
->setSmtpSenderName($senderName);
|
||||
}
|
||||
|
||||
$device = $detector->getDevice();
|
||||
|
||||
$sessionCreatedAt = $session->getCreatedAt();
|
||||
$dateTime = new DateTimeImmutable($sessionCreatedAt);
|
||||
$date = $dateTime->format('Y-m-d');
|
||||
$time = $dateTime->format('H:i:s');
|
||||
|
||||
$emailVariables = [
|
||||
'direction' => $locale->getText('settings.direction'),
|
||||
'user' => $user->getAttribute('name'),
|
||||
'project' => $project->getAttribute('name'),
|
||||
'date' => $date,
|
||||
'time' => $time,
|
||||
'device' => $device['deviceBrand'] . " " . $device['deviceModel'] . " " . $device['deviceName'],
|
||||
'country' => $locale->getText('countries.' . strtolower($session->getAttribute('countryCode')), $locale->getText('locale.country.unknown')),
|
||||
'ip' => $request->getIP(),
|
||||
'redirect' => ''
|
||||
];
|
||||
|
||||
$queueForMails
|
||||
->setSubject($subject)
|
||||
->setBody($body)
|
||||
->setVariables($emailVariables)
|
||||
->setRecipient($user->getAttribute('email'))
|
||||
->trigger();
|
||||
}
|
||||
|
||||
return $response->dynamic($session, Response::MODEL_SESSION);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user