Сменить профиль пользователю
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
lexus Профи
Вступление в Клуб: 28.09.2007
|
Вт Авг 11, 2015 08:35  Сменить профиль пользователю |
|
Полезность: Нет оценки
|
Здравствуйте!
Изменяю пользователю профиль. При этом пароль пользователя становится EXPIRED
Можно как-то сделать, чтобы при изменении профиля пароль не протухал?
Делаю под 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
|
|
|
molokov Участник со стажем
Вступление в Клуб: 28.09.2007
|
Ср Авг 12, 2015 11:40   |
|
Полезность: Нет оценки
|
тут вопрос был в другом -" При этом пароль пользователя становится EXPIRED" |
|
|
yaffil Профи
Вступление в Клуб: 18.08.2011
|
Ср Авг 12, 2015 11:52   |
|
Полезность: Нет оценки
|
Я под sys делаю, у меня ничего не EXPIRED |
|
|
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 и т.п...
А вообще, альтер_юзера нету, поэтому приходится лепить из того, что есть.
Можно ли перетащить пользака в другой профиль, сменить пароль, а потом вернуть? Не будет ли при этом действующий пароль протухать? |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|