Расширение для регистрации пользователей

61 views
Skip to first unread message

Aleks Star.

unread,
Sep 27, 2011, 8:15:35 AM9/27/11
to Frog CMS RU
Здравствуйте, уже год использую эту ЦМС с версии 0.9.5.
После того, как обнаружил Вашу сборку 1.0.2 - сразу начал использовать
её.
Причина - костыли заменились на колёса.
Всё-ещё не понимаю тех "умников", которые пишут, что ЦМС не очень.
Для веб-программиста и верстальщика (2 в 1) это просто must have: все
функции можно писать напрямую как задумываешь, верстать в точности так
как хочешь (ни единого лишнего кода), вставлять части кода туда где
надо, не выдумывать разных Smarty (пока работаешь один ставить эту
систему "от дурака" не стал).

Конечно, кеширования не хватает, но можно покумекать с хостингом и
настроить eAccelerator и memCache, или сделать папку cache и, напрягая
апач редиректом, тяжёлое туда заливать.

Сейчас я остро столкнулся с проблемой регистрации пользователя:
первоначально, чтобы регистрируясь и войдя на сайт получить доступ к
дополнительному контенту.
Заметно, что базовая вешь тут уже есть - 3 группы пользователей. Но
они были сделаны для доступа к админке и редакции некоторого контента.

Очень хочется что-то простое, добавляющее новый тип "пользователь",
helper для регистрации (добавления пользователя-only в БД) и простой
вызов в шаблоне $this->access(к примеру) для определения зашёл ли
пользователь на сайт или гость. А свои формы и личные кабинеты это
дело наживное.

---
Я понимаю, что Flexo в активной стадии разработки. Думаю, эту задачу
можно портировать по причине базовой идентичности проектов.

Если есть у кого материал по теме FrogCMS 1.0.2 + регистрация
пользователей/закрытый контент - прошу ко мне на почту %)

Александр Маслаков

unread,
Sep 27, 2011, 9:31:47 AM9/27/11
to frog-...@googlegroups.com
Могу набросать алгоритм (пока для Flexo CMS), по которому можно легко сделать регистрацию пользователей, добавляя их в группу, к примеру, «Guest».

Переходите в phpMyAdmin, в таблицу permission, добавляем роль «Guest».

На странице регистрации пишем простую форму-сниппет:

------------- НАЧАЛО КОДА ---------------

<?php

$error = false;
$success = false;

if (!empty($_POST['data']))
{
   $data = $_POST['data'];

   if (empty($data['name']) || empty($data['username']) || empty($data['email']) || empty($data['password']))
   {
       $error = 'Не введены обязательные данные: Имя, Логин, Эл. почта или Пароль!';
   } // Можно дополнительно проверить email на валидность
   else
   {
       $user = new User();
       $user->name = $data['name']; // здесь нужно сделать экранирование от запрещенных символов
       $user->username = $data['username']; // здесь нужно сделать экранирование от запрещенных символов
       $user->email = $data['email']; // здесь нужно сделать экранирование от запрещенных символов
       $user->password = sha1($data['password']);
       if ($user->save())
       {
            UserPermission::setPermissionsFor($user->id, 4); // здесь 4 — это ID роли «Guest» в таблице permission (можно присвоить любое ID, но помните, что пользователи с ролями Admin, Developer, Editor имеют доступ к админке)
            $success = 'Пользователь зарегистрирован! Можете войти: ' . get_url('admin/login');
       }
       else
       {
            $error = 'Ошибка при записи в БД.';
       }
   }
}

?>

<h2>Форма регистрации</h2>

<?php if($error): ?><p class="error">'. $error .'</p><?php endif; ?>

<?php if (!$success): ?>
<form action="<?php echo get_url('reg'); ?>" method="post">
<p><lable>Имя:</label> <input type="text" name="data[name]" /></p>
<p><lable>Логин:</label> <input type="text" name="data[username]" /></p>
<p><lable>Эл. почта:</label> <input type="text" name="data[email]" /></p>
<p><lable>Пароль:</label> <input type="text" name="data[password]" /></p>
<p><input type="submit" value="Отправить" /></p>
</form>
<?php endif; ?>

------------- КОНЕЦ КОДА ---------------

Весь сниппет писался от руки, и 100% в этом коде есть ошибки, поэтому придется пораскинуть чем ни будь.
Если запустить этот код все же удастся, то пожалуйста, отпишитесь. Даже если не удастся: все равно будем думать что с ним делать дальше…

А дальше для избранных страниц выбираем доступ для пользователей с ролями «Guest», и в сэлэктбоксе «Необходим вход», выбираем «Обязательно».
Теперь при попытке открыть страницу будет выводиться форма для входа.

Можно все это упаковать в плагин регистрации, и сделать вывод ссылки «Регистрация» в форме «Входа».

вторник, 27 сентября 2011 г. пользователь Aleks Star. писал:
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком
группы "Frog CMS RU" в Группах Google.
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
frog-...@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:
frog-cms-ru...@googlegroups.com
Чтобы выполнить другие действия, посетите страницу группы
http://groups.google.ru/group/frog-cms-ru?hl=ru


--
С уважением, Маслаков Александр.
Разработка сайтов: дизайн, программирование, подготовка информации, сопровождение.

Тел.: +38 099 669–15–06
Портфолио: www.up.dn.ua
Эл. почта: in...@up.dn.ua
Skype: up.dn.ua

sartas

unread,
Sep 27, 2011, 11:33:22 AM9/27/11
to Frog CMS RU
У wolf cms есть плагин Account, можно портировать его

http://www.wolfcms.org/repository/28

Aleks Star.

unread,
Sep 28, 2011, 6:14:51 AM9/28/11
to frog-...@googlegroups.com
Полезная информация по поводу группы. Добавил - при создании появилась в админке как возможный вариант выбора.
Этой детали не хватает 3 нюанса:
1) Свой путь отправки формы (вместо admin/login). Для того, чтобы не было связи со входом в админку и визуально и в плане безопасности.
2) Предусмотреть вариант, где целевую страницу показать всё-же нужно, не спрашивая заранее логин/пароль, а выводя информацию, скажем, вместо ссылки фразу "доступна только зарегистрированным пользователям". Так можно реализовать дополнительной вставкой $this->user_is_user() и для совместимости кинуть функцию в helper.
3) Случай, когда страница не должна быть доступна полностью, мне кажется следует реализовать вкладкой, где 2 столбика: имя раздела(или url) и галочка доступа(галка есть - доступ только зарегистрированным). Так можно на отдельной вкладке независимо от функционала CMS (в плане доступа к админке, которая и реализована через «Необходим вход») быстро расставить полностью закрытые страницы с редиректом на страницу "Войти".

Aleks Star.

unread,
Sep 28, 2011, 6:16:02 AM9/28/11
to frog-...@googlegroups.com
Ах, забыл ещё кое что...
Как в этом случае можно реализовать ссылку активации аккаунта?

Aleks Star.

unread,
Sep 28, 2011, 6:16:21 AM9/28/11
to frog-...@googlegroups.com
Спасибо, попробую портировать, о результатах сообщу.

Александр Маслаков

unread,
Sep 28, 2011, 7:18:21 AM9/28/11
to frog-...@googlegroups.com
1) Концепция системы не предполагает сокрытие страницы входа в админку, хотя для пользователей конечно лучше, когда есть выбор.

2) Делается просто условием:

<?php if ( ! AuthUser::isLoggedIn()): ?>Вы не вошли!<?php endif; ?>
<?php if ( ! AuthUser::hasPermission(array('guest'))): ?>У вас нет прав!<?php endif; ?>

3) Довольно правильная идея — комплексная установка параметров для страниц.

среда, 28 сентября 2011 г. пользователь Aleks Star. писал:
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком
группы "Frog CMS RU" в Группах Google.
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
frog-...@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:
frog-cms-ru...@googlegroups.com
Чтобы выполнить другие действия, посетите страницу группы
http://groups.google.ru/group/frog-cms-ru?hl=ru

Aleks Star.

unread,
Oct 2, 2011, 8:02:10 AM10/2/11
to Frog CMS RU
Попробовал допилить под мод frog 1.0.2 и понял, что функционал в
плагине базовый, такой, который можно реализовать снипеттами и своим
набором страниц.
Но на всякий случай выкладываю что вышло - http://insane.su/fm/account_frog-v0.1a.rar
Из недоработок:
- не встраивается в шаблон, а просто выводится без него
- Логин и логаут через /admin/

Aleks Star.

unread,
Oct 2, 2011, 8:05:41 AM10/2/11
to Frog CMS RU
Как в этом случае реализовать активацию аккаунта (через ссылку на
почте)?
Как сваять свою страницу логина/логаута, направляющую данные на admin/
login и admin/login/logout так, чтобы пользователь это не заметил? Ну
или на крайний случай свои страницы логина логаута, работающие как и
admin, но для аккаунтов типа <<Guest>>

On 28 сен, 15:18, Александр Маслаков <jmas.ukra...@gmail.com> wrote:
> 1) Концепция системы не предполагает сокрытие страницы входа в админку, хотя
> для пользователей конечно лучше, когда есть выбор.
>
> 2) Делается просто условием:
>
> <?php if ( ! AuthUser::isLoggedIn()): ?>Вы не вошли!<?php endif; ?>
> <?php if ( ! AuthUser::hasPermission(array('guest'))): ?>У вас нет
> прав!<?php endif; ?>
>

> 3) Довольно правильная идея -- комплексная установка параметров для страниц.


>
> среда, 28 сентября 2011 г. пользователь Aleks Star. писал:
>
>
>
>
>
>
>
>
>
> > Полезная информация по поводу группы. Добавил - при создании появилась в
> > админке как возможный вариант выбора.
> > Этой детали не хватает 3 нюанса:
> > 1) Свой путь отправки формы (вместо admin/login). Для того, чтобы не было
> > связи со входом в админку и визуально и в плане безопасности.
> > 2) Предусмотреть вариант, где целевую страницу показать всё-же нужно, не
> > спрашивая заранее логин/пароль, а выводя информацию, скажем, вместо ссылки
> > фразу "доступна только зарегистрированным пользователям". Так можно
> > реализовать дополнительной вставкой $this->user_is_user() и для
> > совместимости кинуть функцию в helper.
> > 3) Случай, когда страница не должна быть доступна полностью, мне кажется
> > следует реализовать вкладкой, где 2 столбика: имя раздела(или url) и галочка
> > доступа(галка есть - доступ только зарегистрированным). Так можно на
> > отдельной вкладке независимо от функционала CMS (в плане доступа к админке,
> > которая и реализована через <<Необходим вход>>) быстро расставить полностью
> > закрытые страницы с редиректом на страницу "Войти".
>
> >  --
> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком
> > группы "Frog CMS RU" в Группах Google.
> > Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу

> > frog-...@googlegroups.com <javascript:_e({}, 'cvml',
> > 'frog-...@googlegroups.com');>


> > Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:

> > frog-cms-ru...@googlegroups.com <javascript:_e({}, 'cvml',
> > 'frog-cms-ru%2Bunsu...@googlegroups.com');>


> > Чтобы выполнить другие действия, посетите страницу группы
> >http://groups.google.ru/group/frog-cms-ru?hl=ru
>
> --
> С уважением, Маслаков Александр.
> Разработка сайтов: дизайн, программирование, подготовка информации,
> сопровождение.
>

> Тел.: +38 099 669-15-06
> Портфолио:www.up.dn.ua<http://up.dn.ua/>
> Эл. почта: i...@up.dn.ua
> Skype: up.dn.ua

sartas

unread,
Oct 2, 2011, 8:50:07 AM10/2/11
to Frog CMS RU
Вспомнил, что был еще один плагин для фрога, еле ссылку нашел
https://github.com/band-x-media/Registered-Users

там есть подтверждение по email

Aleks Star.

unread,
Oct 4, 2011, 11:45:25 AM10/4/11
to Frog CMS RU
Подпилил под фрог. Можно тестить - http://insane.su/fm/registered_users-frog-v0.1a.rar

On 2 окт, 16:50, sartas <ardua...@gmail.com> wrote:
> Вспомнил, что был еще один плагин для фрога, еле ссылку нашелhttps://github.com/band-x-media/Registered-Users

Reply all
Reply to author
Forward
0 new messages