CftClub.ru
Клуб специалистов ЦФТ-Банк

Сменить профиль пользователю

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа и журналирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеВт Авг 11, 2015 08:35   Сменить профиль пользователю Ответить с цитатой
Полезность: Нет оценки
Здравствуйте!

Изменяю пользователю профиль. При этом пароль пользователя становится EXPIRED Sad
Можно как-то сделать, чтобы при изменении профиля пароль не протухал?
Делаю под IBS. И у него нет прав alter user.

Код:
    for i in v_usr_Arr.first..v_usr_arr.last
    loop
        select name, properties into v_name, v_prop from users where username = v_usr_arr(i);
        secadmin.ModifyProps(cProperties => v_prop, PropName => 'PROFILE', bSet => false);
        secadmin.ModifyProps(cProperties => v_prop, PropName => 'PROFILE DEFAULT_ATEST', bSet => true);
       -- DBMS_OUTPUT.PUT_LINE(v_prop);
        SECADMIN.EDITUSER(v_usr_arr(i), v_name, 'U', null, v_prop, '', null, null);
       
    end loop;
molokov
Участник со стажем


Вступление в Клуб: 28.09.2007
СообщениеСр Авг 12, 2015 08:12    Ответить с цитатой
Полезность: 1
Привет, Алексей !
Без alter не как, если ни хочется чтобы пароль не протухал.
Попроси на время.
в 2006 году делал так :

declare
NONEXISTING_PROFILE exception;
pragma exception_init(NONEXISTING_PROFILE, -2380);
prp varchar2(20) := '|PROFILE';
prps varchar2(2000);
pos1 pls_integer;
pos2 pls_integer;
usrName varchar2(30);
profileName varchar2(16) := upper(trim('DEFAULT_ATEST'));
begin

FOR cr IN (select username usrName
from ibs.users where username like 'USER%' )
LOOP
begin
select trim(properties) into prps from ibs.users
where username = cr.usrName;
exception when NO_DATA_FOUND then
dbms_output.put_line('Пользователь не найден.');
return;
end;
pos1 := instr(prps, prp);
if pos1 > 0 then
pos2 := instr(prps, '|', pos1 + 1);
if pos2 > 0 then
prps := substr(prps, 1, pos1 - 1) || substr(prps, pos2);
else
prps := substr(prps, 1, pos1 - 1);
end if;
end if;
if nvl(substr(prps, 1, 1), ' ') <> '|' then
prps := '|' || prps;
end if;
prps := prp || ' ' || profileName || prps;

update ibs.users set properties = prps
where username = cr.usrName;
commit;
begin
execute immediate 'alter user ' || cr.usrName || ' profile ' || profileName;
exception when NONEXISTING_PROFILE then
null;
end;
dbms_output.put_line('Признак установлен.');

COMMIT;
END LOOP;
end;
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Авг 12, 2015 10:07    Ответить с цитатой
Полезность: Нет оценки
Что изголяетесь? Laughing
Не проще вот так делать? http://cftclub.ru/viewtopic.php?t=4078
molokov
Участник со стажем


Вступление в Клуб: 28.09.2007
СообщениеСр Авг 12, 2015 11:40    Ответить с цитатой
Полезность: Нет оценки
тут вопрос был в другом -" При этом пароль пользователя становится EXPIRED"
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Авг 12, 2015 11:52    Ответить с цитатой
Полезность: Нет оценки
Я под sys делаю, у меня ничего не EXPIRED Rolling Eyes
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеСр Авг 12, 2015 13:04    Ответить с цитатой
Полезность: Нет оценки
ЦФТ ответили на консультацию - при смене профиля штатными средствами пароль у пользователя всегда станет EXPIRED.

Эх, придется права alter user выпрашивать )
lexus
Профи


Вступление в Клуб: 28.09.2007
СообщениеПт Авг 14, 2015 09:30    Ответить с цитатой
Полезность: Нет оценки
molokov пишет:
Привет, Алексей !
Без alter не как, если ни хочется чтобы пароль не протухал.
Попроси на время.
в 2006 году делал так :
<...>
update ibs.users set properties = prps
where username = cr.usrName;
commit;
<...> END LOOP;
end;

Саша, спасибо тебе за наводку!
Я, почему-то, думал, что вся users триггером закрыта на редактирование. А оказалось - properties спокойно апдейтить можно.
Так и сделал.
Zab
Участник


Вступление в Клуб: 30.08.2013
СообщениеСр Май 17, 2017 11:02    Ответить с цитатой
Полезность: Нет оценки
Добрый день!

Ребята, подскажите, ничего не изменилось в этом функционале, а именно в части протухания пароля по-дефолту?
Можно ли сейчас сменить пароль пользаку без последующего запроса на смену?
yaffil
Профи


Вступление в Клуб: 18.08.2011
СообщениеСр Май 17, 2017 12:56    Ответить с цитатой
Полезность: Нет оценки
Zab пишет:
Добрый день!

Ребята, подскажите, ничего не изменилось в этом функционале, а именно в части протухания пароля по-дефолту?
Можно ли сейчас сменить пароль пользаку без последующего запроса на смену?


Варианты:
1. Через прямой запрос alter user
2. Сбросить в Арме доступа - зайти под ним и сменить самому и дать уже готовый вариант

Хотя последующего запроса можно трактовать по разному. Если это только к смене сейчас относится - то я написал, если на всегда - то надо выводить юзера в другой профиль, если ваш предполагает смену пароля с определённой периодичностью.
Zab
Участник


Вступление в Клуб: 30.08.2013
СообщениеЧт Май 18, 2017 14:04    Ответить с цитатой
Полезность: Нет оценки
yaffil пишет:

Варианты:
1. Через прямой запрос alter user
2. Сбросить в Арме доступа - зайти под ним и сменить самому и дать уже готовый вариант

Хотя последующего запроса можно трактовать по разному. Если это только к смене сейчас относится - то я написал, если на всегда - то надо выводить юзера в другой профиль, если ваш предполагает смену пароля с определённой периодичностью.

Понял, спасибо.
Задавая вопрос, я полагал, что может ЦФТ за прошедшее время как-то обновило функционал пакета secadmin.*, добавили флаг типа NOT_EXPIRED и т.п...
А вообще, альтер_юзера нету, поэтому приходится лепить из того, что есть.
Можно ли перетащить пользака в другой профиль, сменить пароль, а потом вернуть? Не будет ли при этом действующий пароль протухать?
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Администрирование доступа и журналирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах