 -- Name: sec_session_id_seq; Type: SEQUENCE SET; Schema: public; Owner: postgres
 --
 
-SELECT pg_catalog.setval('sec_session_id_seq', 84, true);
+SELECT pg_catalog.setval('sec_session_id_seq', 138, true);
 
 
 --

  select * into l_user from sec_user_by_name(p_user_name);
  --наличие полномочий на смену чужих учетных данных или попытка сменить свои
  select sec_session_has_permission(p_session_id, 'sec_user_authcred.reset_any') or (l_session.user_id = l_user.id) into ok;
  if (ok) then -- полномочий достаточно
    l_uac := sec_user_authcred_by_pk(l_user.id, p_auth_path_id);
    -- сохраняем текщие учетные данные в журнал изменений
    insert into sec_user_authcred_log (log_id, when_logged, user_id, auth_path_id, credential, credential_hash, valid_from, valid_till)
    values (default, clock_timestamp(), l_uac.user_id, l_uac.auth_path_id, l_uac.credential, l_uac.credential_hash, l_uac.valid_from, l_uac.valid_till);
    -- TODO: написать проверку политики учетных данных и вызвать её здесь
    -- меняем учетные данные
    update sec_user_authcred
       set credential = sec_user_authcred_encrypt(l_session.id, user_id, p_credential, auth_path_id),
           credential_hash = sec_user_authcred_hash(l_session.id, user_id, p_credential, p_auth_path_id)
     where user_id = l_user.id
       and auth_path_id = l_uac.auth_path_id;
    -- если учетные данные изменены
    ok := found;
  else
    raise WARNING 'This is not you session or you has no permission (%) to change other`s credential', 'sec_user_authcred.reset_any';
  end if;
  return ok;
end;
$$;


  values (l_user.id, p_auth_path_id, null, null, clock_timestamp(), clock_timestamp()+interval '1 month')
  returning * into l_uac;
  -- регистрируем событие
  perform sec_event_log_start(p_session_id, 'sec_user', 'create', xmlforest(l_user));
  -- проверка учетных данных (пароля) на соответствие политике. 
  /*
  select * into res from sec_user_authcred_comply_policy(p_session_id, l_user.id, null, p_credential, p_auth_path_id);
