Как добавить возможность выбора группы при регистрации?

#16 18 апреля 2014 в 16:21
Pasha,

В общем… по п.1 что выше писал, для редактирования группы в настройках пользователя, необходимо:

1. Открыть components/users/frontend.php, и после 232 строки:

Добавить:
  1. $users['group_id'] = cmsCore::request('group_id', 'int');
  2. if($users['group_id'] == 1 || $users['group_id'] == 2 ){unset($users['group_id']); cmsCore::addSessionMessage($_LANG['WRONG_GROUP'], 'error'); $errors = true;}
В итоге при редактировании группы в настройках, если подставлять через исходный код группу 1 или 2, то после нажатия на "Сохранить" выкинет ошибку WRONG_GROUP. Надеюсь, так уже будет правильно)

По вопросу при регистрации, так и остается

  1. if($group_id == 1 || $group_id == 2 ){unset($group_id); cmsCore::addSessionMessage($_LANG['WRONG_GROUP'], 'error'); $errors = true;}
Т.е., если через исходный код менять группу, то выдаст ошибку WRONG_GROUP. Но здесь и проблемка, поскольку, если поле не заполнено, то выкидывает на ошибку, мол проверить правильность ввода логина и пароля. Что надо дописать, чтобы не выкидывало ее, а сохраняло в пользователи? Пока не знаю.

p.s. Идентификаторы групп это тоже понятие весьма относительное и при некотором стечении обстоятельств они запросто могут поменяться

Pasha
Сами по себе не поменяются. Разве что через БД. Но смысла в этом не вижу, поскольку ИД группы админа, в основном, не меняется. Остальные, возможно, для сортировки по ИД, можно и через БД сменить. Но все же, такое может быть в проекте одном на миллион) Я не думаю, что кто-то таким страдает.

не идите на поводу у изначально неправильных и устаревших решений.

Pasha

Они же рабочие. Почему отказываться? При том, немного отредактировав код — получаем то, что необходимо. В фронтендах все так записано, и я полагаю, что никоим образом не считается устаревшим. Ведь тогда надо было бы переписывать весь файл фронтенда)

Все проверил, вроде бы работает)
#17 18 апреля 2014 в 16:54

if($users['group_id'] == 1 || $users['group_id'] == 2 ){unset........

Отлично, проверяем две группы. А завтра или через год я решу что мне нужна еще одна привилегированная группа (ну мало ли) и без задней мысли добавлю ее через админку. Естественно получу очередной group_id, ну пусть например будет номер 25… И? Начинаем все условия переписывать? Или вы думаете что такого никогда не будет? Вообщем коль по взрослому делать не хотите, то пускай "вроде бы работает". smile
#18 18 апреля 2014 в 17:02
Pasha, дело не в том, что не хочу, а в том, что мои познания в этом деле весьма не велики) "По-взрослому" — имеется ввиду плагин/компонент/модуль?

Одним достаточно и двух групп для проверки. Неким, кому необходимо больше групп для проверки — это уже второй вопрос просто)
#19 18 апреля 2014 в 17:19
Получается необходима все равно обязательное указание группы именно при регистрации, а на личной страничке не обязательно.
Может еще кто-то подскажет решение?
#20 18 апреля 2014 в 18:12
Stecc, я так и не понял, что Вам в итоге нужно. Выбор группы при регистрации, верно? Т.е., если человек выбирает группу, то он после регистрации попадает в выбранную. Если не выбрал, то по-умолчанию попадает в Пользователи. Верно?

Редактирование в профиле — не нужно? Или и то и то надо, или что конкретно надо?) Я уже запутался.
#21 18 апреля 2014 в 19:07


Stecc, я так и не понял, что Вам в итоге нужно. Выбор группы при регистрации, верно? Т.е., если человек выбирает группу, то он после регистрации попадает в выбранную. Если не выбрал, то по-умолчанию попадает в Пользователи. Верно?

Редактирование в профиле — не нужно? Или и то и то надо, или что конкретно надо?) Я уже запутался.

scanread

Я себе на сайт такое уже сделал) Выбор ПРОФЕССИЙ называется
#22 18 апреля 2014 в 19:07
только делал месяц назад! Такой уже есть тут на форуме
#23 18 апреля 2014 в 19:11
AMIGO.UZ, а ссылку можно?
#24 18 апреля 2014 в 19:11
scanread, Pasha хотел сказать, что при получении группы её надо проверять не на "равна ли она админской?", а на "есть ли она в списке разрешённых?".
#25 18 апреля 2014 в 19:18
lokanaft, т.е., верно понимаю:

создаю переменную $check_group = [цифры через запятую] — которую необходимо дальше уже проверять через if? В итоге правка кода минимальная, если вдруг надо добавить какую-то группу второй админской, стоит всего лишь в переменную добавить ее номер.

?

Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст
#27 18 апреля 2014 в 20:10

Я себе на сайт такое уже сделал) Выбор ПРОФЕССИЙ называется

AMIGO.UZ

только делал месяц назад! Такой уже есть тут на форуме

AMIGO.UZ
Ссылку на это просил, выбор профессий, дабы код сравнить )
#28 18 апреля 2014 в 20:55

создаю переменную $check_group = [цифры через запятую] — которую необходимо дальше уже проверять через if? В итоге правка кода минимальная, если вдруг надо добавить какую-то группу второй админской, стоит всего лишь в переменную добавить ее номер.


Ладно, раз намеков не понимают, скажу в лоб. Не нужно пытаться отлавливать то что запрещенно, гораздо надежнее и проще пропускать только то, что разрешено. В вашем случае не нужно писать if (id==1 || id==2), идите от обратного if (id != 5 || id != 6), то не разрешать
Повторяю, дожмите до конца метод request, откройте файл и посмотрите что он делает сейчас и что он может (должен) делать на самом деле. Гарантирую, что половина if которые вы хотите применять основываясь на старом коде отпадет сама по себе…
#29 18 апреля 2014 в 21:38


Stecc, я так и не понял, что Вам в итоге нужно. Выбор группы при регистрации, верно? Т.е., если человек выбирает группу, то он после регистрации попадает в выбранную. Если не выбрал, то по-умолчанию попадает в Пользователи. Верно?

Редактирование в профиле — не нужно? Или и то и то надо, или что конкретно надо?) Я уже запутался.

scanread

Желательно чтобы обязательное указание при регистрации было, т.е. выбор среди нескольких групп, тогда в профиле он уже ни к чему. Да и не желательно чтоб юзер после регистрации менял группу.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.