Skip to content

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

Notifications You must be signed in to change notification settings

64j/ModxAccount

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

74 Commits
 
 
 
 

Repository files navigation

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

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published