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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...