Пароль на доступ к функциям программы

8 views
Skip to first unread message

Mihail Korolchuk

unread,
Dec 25, 2007, 1:32:21 PM12/25/07
to
Привет, All !

Возникла необходимость ограничить доступ к некоторым функциям разаработанного
ПО. Существуют ли какие-либо бесплатные компоненты для организации достаточно
надежного хранения, шифрования, вывода диалогов запросов/изменения паролей?

В rxlib есть что-то типа rxlogindialog, но, к сожалению, отсутствует справка по
работе с ним :(

Аривидерчи, All.

... Быстро только раки зимуют.

Del

unread,
Dec 26, 2007, 1:56:20 AM12/26/07
to
Mihail Korolchuk пишет:

> Возникла необходимость ограничить доступ к некоторым функциям разаработанного
> ПО. Существуют ли какие-либо бесплатные компоненты для организации достаточно
> надежного хранения, шифрования, вывода диалогов запросов/изменения паролей?
>
> В rxlib есть что-то типа rxlogindialog, но, к сожалению, отсутствует справка по
> работе с ним :(

Вот ты мне объясни. Hафига тебе какие-то компоненты? "Где найти компонент,
помещающий льва в клетку?". Сделай руками, что мешает? Подключи мозг, блин.

По порядку.

0. Предположим, главная форма у тебя называется frmMain (ну, это ты ниже
увидишь). Добавляй в раздел public переменную Rights: Integer;

1. Делаем форму, называем, к примеру - frmLogin, на ней - два поля ввода и
соответствующие подписи к ним. Лоигн и пароль. В поле ввода пароля ставим в
свойство PasswordChar любой символ (обычно - *, можешь влепить пробел, так
прикольнее, никто сразу не сосчитает количество символов пароля, ежели будет
подсматривать:) ). Еще приделываем там пару кнопок - ОК и Отмена с
соотвествующими ModalResult

2. Где-нибудь, например в разделе public твоей формы объявляешь переменную
xRights: Integer;

3. В обработчике нажатия кнопки ОК пишем примерно так:
procedure TfrmLogin.btnOkClick(Sender: TObject);
begin
(* тут пишешь проверку логина и пароля, а так же при
правильном логине/пароле получаешь уровень прав доступа.
Предположим, у тебя есть два уровня: администратор системы
и оператор. Если введен логин/пароль оператора, то в
xRights пишем 1, если логин/пароль админа - пишем 2.
Если логин/пароль неправильные, то пишешь в коде вот так:
ModalResult := mrNone;
*)
end;

4. Открываем файл проекта (это который dpr) и в нем пишем примерно так:

var LoginCorrect: Boolean;
Rights: Integer;
begin
Application.Initialize; // это уже написано
LoginCorrect := False;
with TfrmLogin.Create(nil) do
try
LoginCorrect := ShowModal = mrOk;
Rights = xRights;
finally
Free;
end;
if LoginCorrect then begin
// это у тебя уже написано. Соотвественно,
// если ты будешь добавлять в проект еще формы,
// до их создание тоже переносишь сюда
Application.CreateForm(frmMain, TfrmMain);
frmMain.Rights := Rights; // это допишешь руками
Application.Run;
end;
end.

5. В тех местах, где надо ограничить доступ, проверяй переменную
frmMain.Rights. Hапример:

//-- Сохранение какого-то файла -----------------------------
procedure TfrmMain.acSaveFileExecute(Sender: TObject);
begin
// если в другом юните, то соотв. пишем frmMain.Rights
// А тут можно просто Rights или Self.Rights
if Rights <> 2 then begin
ShowMessage('У вас недостаточно прав для выполнения этого действия');
Exit;
end;
end;

По шифрованию - ну уж сам напрягись, подумай. Hапример, на вкладке INDY Misc.
есть IdCoderMD5 - по нему хелп есть :) Можешь сам как-нить организовать
шифрование - как фантазия подскажет.

--
Шмырев А. А.

Reply all
Reply to author
Forward
0 new messages