Гость
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / изменить пароль пользователя / 8 сообщений из 8, страница 1 из 1
06.04.2012, 18:28
    #37742461
Ygor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Нужно изменить пароль пользователя в самописном приложение. Накопал такой код:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
/*begin
wwv_flow_api.set_security_group_id(apex_util.find_security_group_id('test'));
end;*/

DECLARE
    l_user_id                       NUMBER;
    l_workspace                     VARCHAR2(255);
    l_user_name                     VARCHAR2(100);
    l_first_name                    VARCHAR2(255);
    l_last_name                     VARCHAR2(255);
    l_web_password                  VARCHAR2(255);
    l_email_address                 VARCHAR2(240);
    l_start_date                    DATE;
    l_end_date                      DATE;
    l_employee_id                   NUMBER(15,0);
    l_allow_access_to_schemas       VARCHAR2(4000);
    l_person_type                   VARCHAR2(1);
    l_default_schema                VARCHAR2(30);
    l_groups                        VARCHAR2(1000);
    l_developer_role                VARCHAR2(60);
    l_description                   VARCHAR2(240);
    l_account_expiry                DATE;
    l_account_locked                VARCHAR2(1);
    l_failed_access_attempts        NUMBER;
    l_change_password_on_first_use  VARCHAR2(1);
    l_first_password_use_occurred   VARCHAR2(1);
BEGIN
    l_user_id := APEX_UTIL.GET_USER_ID('test_user');

APEX_UTIL.FETCH_USER(
    p_user_id                       => l_user_id,
    p_workspace                     => l_workspace,
    p_user_name                     => l_user_name,
    p_first_name                    => l_first_name,
    p_last_name                     => l_last_name,
    p_web_password                  => l_web_password,
    p_email_address                 => l_email_address,
    p_start_date                    => l_start_date,
    p_end_date                      => l_end_date,
    p_employee_id                   => l_employee_id,
    p_allow_access_to_schemas       => l_allow_access_to_schemas,
    p_person_type                   => l_person_type,
    p_default_schema                => l_default_schema,
    p_groups                        => l_groups,
    p_developer_role                => l_developer_role,
    p_description                   => l_description,
    p_account_expiry                => l_account_expiry,
    p_account_locked                => l_account_locked,
    p_failed_access_attempts        => l_failed_access_attempts,
    p_change_password_on_first_use  => l_change_password_on_first_use,
    p_first_password_use_occurred   => l_first_password_use_occurred);
APEX_UTIL.EDIT_USER (
    p_user_id                       => l_user_id,
    p_user_name                     => l_user_name,
    p_first_name                    => l_first_name,
    p_last_name                     => l_last_name,
    p_web_password                  => '123',
    p_new_password                  => '123',
    p_email_address                 => l_email_address,
    p_start_date                    => l_start_date,
    p_end_date                      => l_end_date,
    p_employee_id                   => l_employee_id,
    p_allow_access_to_schemas       => l_allow_access_to_schemas,
    p_person_type                   => l_person_type,
    p_default_schema                => l_default_schema,
    p_group_ids                     => l_groups,
    p_developer_roles               => l_developer_role,
    p_description                   => l_description,
    p_account_expiry                => l_account_expiry,
    p_account_locked                => l_account_locked,
    p_failed_access_attempts        => 0,
    p_change_password_on_first_use  => 'N',
    p_first_password_use_occurred   => 'N');
    
END;



Но после его выполнения пользователем test_user невозможно залогинится, апекс виснет, кроме того нельзя сделать еплай админом в Manage Users and Groups на этом пользователе, тоже виснет.
...
Рейтинг: 0 / 0
07.04.2012, 11:02
    #37742846
Rikki-Tikki
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Ygor,
уточните, пожалуйста, какую схему аутентификации Вы используете в приложении, в котором запускаете этот код?
...
Рейтинг: 0 / 0
07.04.2012, 13:55
    #37742939
suPPLer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Есть у меня ощущение, что этот код Вы запустили в каком-нибудь TOAD или SQL Developer. Для начала закончите транзакцию явно: выполните COMMIT или ROLLBACK.
...
Рейтинг: 0 / 0
09.04.2012, 10:49
    #37744679
Ygor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
1. Аутентификация апексовая
2. Фиксацию транзакции действительно не делаю, думал автоматическая фиксация. Дописал commit, зависания нет, но новый пароль не принимает, и поменять в "Manage Users and Groups " тоже не удается. Еплай делается но зайти пользователем нельзя (Invalid Login Credentials)
...
Рейтинг: 0 / 0
09.04.2012, 11:30
    #37744752
Ygor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Проблему снимаю, разобрался. Всем спасибо за участие.
...
Рейтинг: 0 / 0
25.12.2012, 11:38
    #38091617
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Делаю, что то подобное:
После логина и при загрузке главной страницы проверяю ф-ей APEX_UTIL.CHANGE_PASSWORD_ON_FIRST_USE(p_user_name => :APP_USER) необходимо ли сменить пароль при первом входе и если положительно то перекидываю на страницу смены пароля.
Работает на ура, но после смены пароля и при последующем входе, данная проверка дает опять true и перекидывает снова на страницу логина...

Нашел еще функцию - APEX_UTIL.PASSWORD_FIRST_USE_OCCURRED(p_user_name => :APP_USER) - которая показывает был ли сменен пароль после создания пользователя и в связе с предыдущей ф-ей можно было организовать:
Код: sql
1.
 IF APEX_UTIL.CHANGE_PASSWORD_ON_FIRST_USE(p_user_name => :APP_USER) AND NOT APEX_UTIL.PASSWORD_FIRST_USE_OCCURRED(p_user_name => :APP_USER) THEN


Но данный иф всегда дает true.

Начал дальше смотреть, можно редактировать пользователя и убрать флаг начальной смены пароля - APEX_UTIL.EDIT_USER. Но у сожалению он требует админа апекса, а работа идет от обычного конечного пользователя.

Что можете подсказать оп данной трабле?

Спасибо
...
Рейтинг: 0 / 0
25.12.2012, 17:19
    #38092320
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
есть параметр "Account Expiration and Locking" в Administration > Manage Service > Set Workspace Preferences
и если оно стоит в энеблед то данный диалог будет запущен автоматически, и все сделает как надо, так что видимо это дело не катамизируешь без лигина Admin'а apex.
...
Рейтинг: 0 / 0
26.12.2012, 17:12
    #38093841
kasik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
изменить пароль пользователя
Вопрос про кастомизацию страницы смены пароля актуально, как из нее выйти можно?
...
Рейтинг: 0 / 0
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / изменить пароль пользователя / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]