Skip to content

Latest commit

 

History

History
131 lines (118 loc) · 3.95 KB

README.md

File metadata and controls

131 lines (118 loc) · 3.95 KB

ModxAccount

Личный кабинет веб пользователя MODx Evo

Сниппет для регистрации, входа, напоминания пароля и личного кабинета пользователя.

Создётся сниппет account с кодом

<?php
require MODX_BASE_PATH.'assets/snippets/account/snippet.account.php';
?>

Создаётся документ "Личный кабинет" -> псевдоним -> account
Далее в нём дочерние ресурсы
Регистрация -> register
Профиль -> profile
Восстановление пароля -> forgot

и на каждой странице ставится вызов сниппета

account

[!account?
&controller=`account`
&controllerRegister=`account/register`
&controllerLogin=`account`
&controllerForgot=`account/forgot`
&controllerProfile=`account/profile`
&success=``
&userGroupId=``
!]

register

[!account?
&controller=`account/register`
&controllerRegister=`account/register`
&controllerLogin=`account`
&controllerForgot=`account/forgot`
&controllerProfile=`account/profile`
&success=``
&userGroupId=``
!]

profile

[!account?
&controller=`account/profile`
&controllerRegister=`account/register`
&controllerLogin=`account`
&controllerForgot=`account/forgot`
&controllerProfile=`account/profile`
&success=``
&userGroupId=``
!]

forgot

[!account?
&controller=`account/forgot`
&controllerRegister=`account/register`
&controllerLogin=`account`
&controllerForgot=`account/forgot`
&controllerProfile=`account/profile`
&success=``
&userGroupId=``
!]

Вместо псевдонимов контроллеров &controller..., можно поставить id страниц на которых расположен тот или иной вызов сниппета.

&success - перенаправление после удачного действия сниппета.

&userGroupId - id групп, через запятую для нового зарегистрированного пользователя.

При создании вложенности документов, как указанно выше и используя вложенные URL, вызов сниппета можно сократить до одной строчки

[!account?&userGroupId=``!]

либо использовать свои шаблоны

[!account?
&tpl=`@FILE:assets/snippets/account/view/register.tpl.txt`
&userGroupId=``
!]

AJAX

Для работы через ajax используется ModxLoader - https://github.com/64j/ModxLoader

Капча

Используется эта https://github.com/64j/ModxCaptcha

либо создать сниппет captcha и вывести его на отдельной странице с шаблоном blank и типом text/plain

<?php
$chars = !empty($modx->config['captcha_words']) ? preg_replace('![^\w\d]*!', '', $modx->config['captcha_words']) : '1234567890';
$chars = substr(str_shuffle($chars), 0, 5);
if(isset($_REQUEST['key'])) {
	$_SESSION['veriword_' . md5($_REQUEST['key'])] = $chars;
} else {
	$_SESSION['veriword'] = $chars;
}
header("Pragma: no-cache");
header("Content-Type:image/png");
$img = imagecreate(210, 100);
imagecolorallocatealpha($img, 255, 255, 255, 127);
$color = imagecolorallocate($img, 0, 0, 0);
$x = 10;
for($i = 0; $i < strlen($chars); $i++) {
	$letter = mb_substr($chars, $i, 1, 'UTF-8');
	imagettftext($img, 70, rand(-10, 10), $x, 75, $color, MODX_MANAGER_PATH . "includes/ttf/ftb_____.ttf", $letter);
	$x += 35;
}
imagepng($img);
imagedestroy($img);
?>

Ветка обсуждения сниппета на форуме modx.im