Jump to content

Переменная


Serg

Recommended Posts

Добрый день!

Объявляю в MainForm переменную. При авторизации пользователь вводит свой код. Код отправляется в эту переменную.

Правильно ли я понимаю что переменные в MainForm уникальны для каждой сессии?

Заходят 2 клиента. Начинаются 2 сессии. После авторизации второго клиента  более ранняя сессия отображает код введенный 2 ым клиентом. переменная общая для всех сессий?

В чем моя ошибка?

 

Спасибо!

Link to comment
Share on other sites

  • 1 year later...

Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа).

Если завершить сервер, зайти пользователем, то все прекрасно, все админки скрыты, но после этого и админ заходит как пользователь. Не могу никак понять в чем проблема. получается что MainModule не уникален для каждой сессии ?

 

Link to comment
Share on other sites

  • Administrators
54 minutes ago, Dmitriy said:

Такая же проблема сейчас, начинается новая сессия с другой машины под другим пользователем, но в итоге мы видим все доступные меню для первого пользователя (админа).

Если завершить сервер, зайти пользователем, то все прекрасно, все админки скрыты, но после этого и админ заходит как пользователь. Не могу никак понять в чем проблема. получается что MainModule не уникален для каждой сессии ?

  

Hello,

Are you using HyperServer?

Link to comment
Share on other sites

31 minutes ago, Sherzod said:

Уникален.

Возможно надо вызывать beforelogin и обнулять все переменные и все запросы в sql подчищать, может есть какие - то примеры реализации разграничения прав доступа к тем или иным элементам mainform в зависимости от пользователя?

Я только начал изучать Unigui, возможно не  все нюансы еще постиг, приведу пример как  я разграничиваю (пытаюсь) права:

UnimainModule

 var
       LoggedUser,Otdel,filename : string;
   
  adminmode: boolean;

-----------------------------------------------------

UniloginModule

procedure TUniLoginForm1.UniBitBtn1Click(Sender: TObject);
var
hash: string;
begin

    UniMainModule.q_pass.SQL.Clear;
    UniMainModule.Q_pass.SQL.Add('select * from users where fio ='''+unicombobox1.Text+'''');
    UniMainModule.Q_pass.Active:=true;

   adminmode:=false;
   // режим входа для журнала заявок
 //  hash := THashSHA2.GetHashString(UniEdit1.Text,THashSHA2.TSHA2Version.SHA256);

     if UniMainModule.q_pass.FieldByName('pass').Value = UniEdit1.Text  then
    begin
       if (UniMainModule.q_pass.FieldByName('Zayavki_org_adm').AsBoolean = true) then
    
      adminmode:=true;

        Otdel:= UniMainModule.q_pass.FieldByName('otdel').AsString;
        LoggedUser := UniComboBox1.Text;

        if UniCheckBox1.Checked then
          begin
            UniApplication.Cookies.SetCookie('_loginname', UniComboBox1.Text, Date + 30.0); // Expires 30 days from now
            UniApplication.Cookies.SetCookie('_pwd', UniEdit1.Text, Date + 30.0);
          end;

        ModalResult := mrOK;
    end
    else
    ShowMessage('Введен неверный пароль');

 

 

Main - главная форма

procedure TMainForm.UniFormCreate(Sender: TObject);
begin

 UniLabel1.Caption := LoggedUser;

if adminmode=true  then
  begin
    admin.Visible:=true;  // Пункты в UniMenuItems1
    biot.visible:=true;//
  end
  else
   admin.Visible:=false;

----------------------------------------------------------------

Так же у меня есть PageControl в котором я создаю фремы, правильно - ли там проверять переменные из MainModule для активации\деактивации тех или иных контролов

либо это все надо делать в другом месте?

Link to comment
Share on other sites

Конечно же глобальные переменные модуля не могут быть по-клиентскими, а вот поля по-клиентских экземпляров UniMainModule могут и будут.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...