Przejdź do treści

Profile klienta WEB

Profile są mechanizmem w kliencie WEB, który umożliwia wyświetlanie aplikacji odpowiednio spersonalizowanej dla użytkowników. Dzięki temu możemy dowolnie konfigurować główne menu klienta WEB dla różnych grup użytkowników.

Podczas konfiguracji profilu w smd ustawiamy następujące właściwości:

  • W parametrze Name konfigurujemy nazwę profilu, która będzie się wyświetlała w kliencie WEB po zalogowaniu.
  • W parametrze LoginProcedure podajemy nazwę procedury z bazy, która jest odpowiedzialna za odpowiednie logowanie. Sygnatura procedury wygląda następująco:

    <nazwa_procedury\> (
      USR varchar(40),  <- login
      PSW varchar(40),  <- hasło, najlepiej zahashowane wstępnie
      OLDPSW varchar(40),
      ID varchar(255)) <- przekazać NULL
    returns (
      USERID varchar(255),
      USERLOGIN varchar(255), <- rzeczywisty login
      IMIE varchar(255), <- imię
      NAZWISKO varchar(255), <- nazwisko
      UWAGI varchar(1024),
      SUPERVISOR smallint, <- 0=zwykły użytkownik, 1=administrator, 2=developer (ma dostęp np do Neos Experta)
      SUPERVISEGROUP varchar(255),
      EMAIL varchar(255),
      GRUPA varchar(1024),
      SENTE smallint, <- 1=użytkownik z firmy Sente (mimo że nie jest developerem to ma dostęp do Neos Experta)
      MODULES varchar(1024),
      APPLICATIONS varchar(255),
      OTABLE varchar(40),
      OREF integer,
      MUST_CHANGE smallint,
      DAYS_TO_CHANGE integer,
      LAST_CHANGE timestamp,
      NAMESPACE varchar(40),
      USERUUID varchar(40), <- UUID roli neosowej w jakiej działa użytkownik
      LICENCELIMIT SMALLINT_ID)
    

W kliencie VCL hasła są hashowane na dwa sposoby. Z tego powodu klient WEB wysyła hasło zhashowane na dwa sposoby i są one przekazywane do procedury w parametrach PSW i OLDPSW. Jeżeli będziesz miał problemy z logowaniem to sprawdź w swojej procedurze czy z dobrego hasła korzystasz.

Nieskomentowane parametry procedury są nieistotne, używane tylko w logowaniu klienta VCL.

  • W parametrze ChangePasswordProcedure podajemy nazwę procedury z bazy, która jest odpowiedzialna za zmianę hasła operatora. Sygnatura procedury wygląda następująco:

    <nazwa_procedury> (
      USR varchar(40),
      PSW varchar(40),
      USERID varchar(255),
      USERLOGIN varchar(255),
      USERPASS varchar(255),
      IMIE varchar(255),
      NAZWISKO varchar(255),
      UWAGI varchar(1024),
      SUPERVISOR smallint,
      SUPERVISEGROUP varchar(255),
      EMAIL varchar(255),
      GRUPA varchar(1024),
      SENTE smallint,
      MODULES varchar(1024),
      APPLICATIONS varchar(255),
      OTABLE varchar(40),
      OREF integer,
      MUST_CHANGE smallint,
      DAYS_TO_CHANGE integer,
      USERUUID varchar(40) = null,
      LICENCELIMIT smallint = 0)
    returns (
      STATUS smallint,
      NEWUSERID integer,
      OLDUSERLOGIN varchar(40),
      MSG varchar(1024)
    

Serwer przy wywołaniu tej procedury uzupełnia następujące pola danymi:

  1. USR - login zalogowanego operatora (kto zmienia hasło),
  2. PSW - hasło zalogowanego operatora (autoryzacja operatora zmieniającego hasło)
  3. USERLOGIN - login zalogowanego operatora (jemu zmieniamy hasło)
  4. USERPASS - nowe hasło operatora
  5. OTABLE - nazwa tabeli z danymi zalogowanego operatora (wartość tą zwraca procedura logująca operatora)
  6. OREF - ref rekordu z danymi zalogowanego operatora (wartość tą zwraca procedura logująca operatora)

Nieskomentowane parametry procedury są nieistotne, używane tylko w kliencie VCL, serwer uzupełnia je nullami.

  • W parametrze Modules definiujemy jakie moduły aplikacji będą dostępne w danym profilu
  • Jeśli parametr RestrictMainMenu ustawimy na yes, to w menu głównym aplikacji pojawią się jedynie wpisy obiektów należących do modułów wymienionych w parametrze Modules. Nie pojawią się wpisy obiektów dostępnych publicznie i nie przypisanych do żadnych modułów. Domyślnie ten parametr nie jest ustawiony i wpisy obiektów nie przypisanych do żadnych modułów pojawiają się w menu głównym aplikacji dla każdego profilu.

Uwaga!

Pamiętaj, że operator zobaczy menu pochodzące ze wskazanych modułów, jeżeli ma do nich uprawnienia. Podczas logowania do klienta Web, Neos pobiera definicję obszarów (S_APPLICATIONS) i modułów (S_MODULES), a następnie wylicza część wspólną z obszarami i modułami, do których dostęp ma dany operator. Uprawnienia nadajemy z poziomu definicji operatora w kliencie Desktop.

  • W parametrze DefaultProject podajemy domyślny project dla profilu
  • W parametrze DefaultDatabase ustawiamy domyślną bazę danych dla profilu. Jeśli nie podamy domyślnej bazy dla profilu to aplikacje pobierze domyślną bazę ustawiono w sekcji [Configuration] pliku smd.
  • W parametrze StartMethod ustawiamy metodę statyczną, która uruchomi się po zalogowaniu do klienta WEB. Jeżeli chcemy aby po zalogowaniu uruchomiło się na start jakieś okno to trzeba o to się zatroszczyć w tej Metodzie.
  • W parametrze StartObject podajemy nazwę obiektu z którego będziemy wywoływać startową metodę. Nazwa obiektu powinna zostać podana razem z nawą projektu z którego pochodzi obiekt. Przykład SENTE.KLIENCI

Przykładowy profil w pliku smd wygląda tak:

[Profile:klient]
Name=Panel klienta
LoginProcedure=SYS_GET_USERINFO_UZYKLI
Modules=PKLI
RestrictMainMenu=yes
DefaultProject=SENTE
DefaultDatabase=esystem
StartObject=SENTE.KLIENCI
StartMethod=ShowPanel

[Profile:handlowiec]
Name=Panel klienta
LoginProcedure=SYS_GET_USERINFO_HANDLOWIEC
Modules=PHAN
DefaultProject=SENTE
DefaultDatabase=esystem

Uruchomienie aplikacji WEB z profilem

  1. Na stronie logowania do url dodajemy '/<nazwa profilu>' gdzie nazwa jest nazwą profilu a nie nazwą ustawianą w parametrze Name. Przykład localhost:9901/klient
  2. Jeżeli nie chcemy dodawać do url nazwy profilu to wystarczy w pliku smd w sekcji [BusinessPlatform] ustawić domyślny profil DefaultProfile. Wtedy po zalogowaniu automatycznie zostaniemy zalogowani na domyślny profil.
  3. Gdy chcemy się zalogować do aplikacji bez ustawiania profilu wystarczy w pliku smd nie konfigurować domyślnego profilu i nie dodawać do url nazwy profilu

IP klienta

Aby sprawdzić IP klienta, za pomocą połączył się on z serwerem WEB, należy odczytać wartość globala CLIENTIP. Jest on ustawiany tylko dla klienta WEB. Możemy go użyć na przykład w procedurze logującej. Jeżeli Neos serwer i klient stoją na jednej maszynie i używany jest interfejs localhost adres ip zwróci ciąg ::1.

Uwaga!

Pamiętaj, że sprawdzanie ip [nie jest]{.ul} niezawodną metodą zapewniania bezpieczeństwa, bo podszycie się pod cudze ip jest dziecinnie proste. Przez sposób w jaki została zaprojektowana sieć WEB adres IP odczytany przez serwer nie musi być tym, który jest używany przez maszynę kliencką. Chociażby z powodu mechanizmów takich jak NAT czy Proxy.