powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / изменить пароль пользователя
8 сообщений из 8, страница 1 из 1
изменить пароль пользователя
    #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
изменить пароль пользователя
    #37742846
Rikki-Tikki
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ygor,
уточните, пожалуйста, какую схему аутентификации Вы используете в приложении, в котором запускаете этот код?
...
Рейтинг: 0 / 0
изменить пароль пользователя
    #37742939
Фотография suPPLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня ощущение, что этот код Вы запустили в каком-нибудь TOAD или SQL Developer. Для начала закончите транзакцию явно: выполните COMMIT или ROLLBACK.
...
Рейтинг: 0 / 0
изменить пароль пользователя
    #37744679
Ygor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Аутентификация апексовая
2. Фиксацию транзакции действительно не делаю, думал автоматическая фиксация. Дописал commit, зависания нет, но новый пароль не принимает, и поменять в "Manage Users and Groups " тоже не удается. Еплай делается но зайти пользователем нельзя (Invalid Login Credentials)
...
Рейтинг: 0 / 0
изменить пароль пользователя
    #37744752
Ygor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблему снимаю, разобрался. Всем спасибо за участие.
...
Рейтинг: 0 / 0
изменить пароль пользователя
    #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
изменить пароль пользователя
    #38092320
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть параметр "Account Expiration and Locking" в Administration > Manage Service > Set Workspace Preferences
и если оно стоит в энеблед то данный диалог будет запущен автоматически, и все сделает как надо, так что видимо это дело не катамизируешь без лигина Admin'а apex.
...
Рейтинг: 0 / 0
изменить пароль пользователя
    #38093841
kasik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос про кастомизацию страницы смены пароля актуально, как из нее выйти можно?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / изменить пароль пользователя
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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