Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

Смена пароля в IBase   Найти похожие ветки 

 
psa247   (2008-02-25 18:38) [0]

Скажите, почему не результат функция возвращает True
но пароль все равно не меняется

function TData.ChangePass(param : TUser): boolean;
begin
 try
   CloseConnections;
   OpenConnections(SuperUser);
   IBSecurityService.Active := True;
   IBSecurityService.UserName := param.Name;
   IBSecurityService.Password := param.Pass;
   IBSecurityService.FirstName := "";
   IBSecurityService.MiddleName := "";
   IBSecurityService.LastName := "";
   try
     IBSecurityService.ModifyUser;
     Result := True;
   except
     Result := False;
   end ;
   IBSecurityService.Active := False;
 except
   Result := False;
 end;
 CloseConnections;
end;

где

type
 TUser = class
   Name: string;
   Pass: string;
   NewPass: string;
   Path: string;
   BaseName: string;
   Right: boolean;
   end;


 
Johnmen ©   (2008-02-25 19:19) [1]

Во-первых, что за "CloseConnections" и "OpenConnections"?
Во-вторых, не ясно, указаны ли параметры пользователя при коннекте.
И в-третьих, известный баг метода ModifyUser, приводящий к добавлению юзера, исправлен только в прошлом году в последней версии IBX.


 
psa247   (2008-02-25 20:03) [2]

procedure TData.CloseConnections;
begin
 // Закрываем соединение
 try
   if IBDatabase <> nil then
   begin
     IBDatabase.Connected := False;
     IBDatabase.Close;
   end;
 except
   Application.MessageBox("Ошибка закрытия ИБ !","Внимание !",MB_ICONERROR);
 end;
end;

function TData.OpenConnections(param: TUser): string;
begin
 CloseConnections;

 // Открываем соединение
 try
   if IBDatabase <> nil then
   begin
     IBDatabase.DatabaseName := param.Path;
     IBDatabase.LoginPrompt := False;
     IBDatabase.SQLDialect := 3;
     IBDatabase.Params.Clear;
     IBDatabase.Params.Add("CONNECT DATABASE "+param.BaseName);
     IBDatabase.Params.Add("USER_NAME="+param.Name);
     IBDatabase.Params.Add("PASSWORD="+param.Pass);
     IBDatabase.Params.Add("lc_ctype=WIN1251");

     IBDatabase.Connected := True;
     Result := "";
   end;
 except
   Result := param.Path;
   if GetLastError<>0 then
     Result := SysErrorMessage(GetLastError) +chr(13)+ Result;
 end;
end;

SuperUser - SYSDBA
в параметре процедуры передается "пользователь" для которого меняется пароль


 
Johnmen ©   (2008-02-25 21:11) [3]

Интересно, ты сам то понимаешь, что пишешь?


 
psa247   (2008-02-26 21:36) [4]


> Johnmen ©

Нет, может пояснишь ?


 
Johnmen ©   (2008-02-26 22:07) [5]


> psa247   (26.02.08 21:36) [4]
> Нет, может пояснишь ?

Нет, я тоже не понимаю.


 
psa247   (2008-02-27 17:31) [6]


> Johnmen ©   (26.02.08 22:07) [5]

На том и договорились. Не понимаешь - проходим мимо


 
DjeiDi   (2008-04-23 22:43) [7]

Может, уже поздно, но как вариант могу предложить.
Эту часть

  try
    IBSecurityService.ModifyUser;
    Result := True;
  except
    Result := False;
  end ;

переписать следующим образом:
 
   try
    // здесь пробуешь
    IBSecurityService.ModifyUser;
  except
    // если не получилось, функция возвратит ЛОЖЬ и прервется
    Result := False;
    Exit;
  end ;
  // в случае успеха, функция вернет ИСТИНУ
  Result := True;
  IBSecurityService.Active := False;


Ну и как другой вариант попробуй переписать функцию так


function TData.ChangePass(param : TUser): boolean;
begin
CloseConnections;
try
  OpenConnections(SuperUser);
except
  Result := False;
   Exit;
end;
IBSecurityService.Active := True;
IBSecurityService.UserName := param.Name;
IBSecurityService.Password := param.Pass;
IBSecurityService.FirstName := "";
IBSecurityService.MiddleName := "";
IBSecurityService.LastName := "";
try
  IBSecurityService.ModifyUser;
except
  Result := False;
  Exit;
end ;
Result := True;
IBSecurityService.Active := False;

CloseConnections;
end;


 
Loginov Dmitry ©   (2008-04-23 22:52) [8]

> Может, уже поздно, но как вариант могу предложить.


Насколько помнится, в IBSecurityService параметры коннекта, заданные в design-time слетают. Их нужно заново указывать в run-time.


 
Johnmen ©   (2008-04-24 00:03) [9]

Ё-моё, ну что за мода пошла на гробокопательство и некрофилию? Заняться что-ли нечем? Словарик англо-русский почитал бы - узнал бы много полезного. Что Джей Ди это JD, а не то букоффсочетание, коем себя обозначил...



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.005 c
15-1221240792
java73
2008-09-12 21:33
2008.11.09
Размер файлов после компиляции


8-1187600870
leonidus
2007-08-20 13:07
2008.11.09
приложение с GDI+ не запустилось на Win2000, что делать?


2-1222870861
KirillRepin
2008-10-01 18:21
2008.11.09
можно ли из OpenDialog получить имя файла и путь


15-1221592286
Городской Шаман
2008-09-16 23:11
2008.11.09
Вот Фленова ругаете, а у самих ошибка в статье.


3-1209101225
дучф_ч
2008-04-25 09:27
2008.11.09
при удалении полей таблицы ее размер не уменьшается





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский