Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Редактирование пользователей

00 голосов
4
Всем привет!

Возникла необходимость сменить всем зарегистрированнным пользователям сайта логин.(Поставить вместо логина - email пользователя)

В API я не нашел функционала, чтобы так сделать напрямую. Вижу тока вариант создания копии пользователя , в которой уже копировать те поля, которые необходимы. Мне кажется такой вариант геморным. Кто-нибудь сталкивался с подобным?
спросил 12 Фев, 13 от nka (160 баллов)

4 Ответы

00 голосов
из справки по Битриксу:

http://dev.1c-bitrix.ru/api_help/main/reference/cuser/update.php

Код
<?
$user = new CUser;
$fields = Array(
  "NAME"              => "Сергей",
  "LAST_NAME"         => "Иванов",
  "EMAIL"             => "ivanov@microsoft.com",
  "LOGIN"             => "ivan",
  "LID"               => "ru",
  "ACTIVE"            => "Y",
  "GROUP_ID"          => array(1,2),
  "PASSWORD"          => "123456",
  "CONFIRM_PASSWORD"  => "123456",
  );
$user->Update($ID, $fields);
$strError .= $user->LAST_ERROR;
?>



и для выбора всех пользователей CUser::Getlist():

http://dev.1c-bitrix.ru/api_help/main/reference/cuser/getlist.php
ответил 12 Фев, 13 от Poleolog (1,240 баллов)
00 голосов
Все уже сделано до нас.
Авторизация на сайте по e-mail'у.
ответил 09 Март, 13 от smileplz (8,020 баллов)
00 голосов
Цитата
Андрей Шилов пишет:
из справки по Битриксу:



http://dev.1c-bitrix.ru/api_help/main...update.php



спасибо! как же т я просмотрел :(


Цитата
Max Pryazhevsky пишет:
Все уже сделано до нас.

Авторизация на сайте по e-mail'у.



В том то и дело что нужно уже существующих перенести.
ответил 03 Апр, 13 от nka (160 баллов)
00 голосов
Цитата
Max Pryazhevsky пишет:
Все уже сделано до нас.
Авторизация на сайте по e-mail'у.

интересный вариант. Возьму на заметку.

я немного другой вариант использую. Добавляем в init.php:

Код
<?
AddEventHandler("main", "OnBeforeUserLogin", Array("Authuser", "OnBeforeUserLogin"));

class AuthUser
{

   function OnBeforeUserLogin($arFields)
       {
      $filter = Array("EMAIL" => $arFields["LOGIN"]);
      $rsUsers = CUser::GetList(($by="LAST_NAME"), ($order="asc"), $filter); 
      if($user = $rsUsers->GetNext()) 
         $arFields["LOGIN"]=$user["LOGIN"];
   }

   
    
}
?>


Одновременно работает авторизация и по емайл и по логину. Просто такая задача у меня сотяла. а если надо только по емайл то можно пустышку в $arFields["LOGIN"] вписывать чотбы он не аторизовывал по логину.

Ничего кастомизировть не надо. Пишем в поле логина емайл и проходим авторизацию.
ответил 29 Июль, 13 от Poleolog (1,240 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
2 ответов
спросил 01 Май, 14 от Savinga (140 баллов)
0 голосов
3 ответов
спросил 19 Фев, 14 от Disorder (100 баллов)