Страница 1 из 1

Запрет смены email пользователем !

СообщениеДобавлено: 26 апр 2014, 18:38
lial
Обнаружил такое не очень хорошее поведение (проверил на вашей демке re-pro) - теперь под пользователем зайти нельзя, если не вернуть ему с админки email:
Пользователь когда залогинен и хочет сменить свою контактную информацию - можно от фонаря набрать любой валидный адрес мыла типа skdaskdjaslk@askljdalksdjas.asjkdasjd - и он поменяется. Соответственно в БД будет некорректный мыл и пользователь обратно не зайдет.

Как пофиксить чтобы пользователь не мог менять мыло после регистрации. Видеть соответсвенно видел, но менять не мог??
Причем запретить не на только средствами фронтенда, а чтобы на бекенде тоже не шло сохранения ?

Re: Запрет смены email пользователем !

СообщениеДобавлено: 28 апр 2014, 09:51
andipas
lial писал(а):Обнаружил такое не очень хорошее поведение (проверил на вашей демке re-pro) - теперь под пользователем зайти нельзя, если не вернуть ему с админки email:
Пользователь когда залогинен и хочет сменить свою контактную информацию - можно от фонаря набрать любой валидный адрес мыла типа skdaskdjaslk@askljdalksdjas.asjkdasjd - и он поменяется. Соответственно в БД будет некорректный мыл и пользователь обратно не зайдет.

Как пофиксить чтобы пользователь не мог менять мыло после регистрации. Видеть соответсвенно видел, но менять не мог??
Причем запретить не на только средствами фронтенда, а чтобы на бекенде тоже не шло сохранения ?


Чтобы нельзя было менять мыло, нужно в модуле usercpanel изменить вывод формы. В версии до < 1.8 вывод формы в файле protected/modules/usercpanel/views/index.php

вместо:

Код: Выделить всё

    <div class="row">
        <?php echo $form->labelEx($model,'email'); ?>
        <?php echo $form->textField($model,'email',array('size'=>20,'maxlength'=>128, 'class' => 'width240')); ?>
        <?php echo $form->error($model,'email'); ?>
    </div>


можно сделать вывод, например так:

Код: Выделить всё

    <div class="row">
        <?php echo $form->labelEx($model,'email'); ?>
        <?php echo $model->email; ?>
        <?php echo $form->error($model,'email'); ?>
    </div>


в админке аналогично в файле protected/modules/users/views/backend/_form.php