Integrace ověřování uživatelů do aplikací Qodly

Automaticky přeloženo z Deepl

V tomto blogu se zaměříme na zásadní téma ověřování. Pro ilustraci naší diskuse použijeme příklad aplikace určené k psaní výročních hodnocení výkonnosti zaměstnanců. Tato aplikace umožňuje uživatelům bezpečný přístup k jejich účtům pomocí ověření jejich e-mailu a hesla.

Aplikace pro hodnocení výkonnosti

Přehled ověřování

Ověřování je základním kamenem každé webové aplikace a zajišťuje, že k citlivým informacím nebo k provádění konkrétních akcí mohou přistupovat pouze oprávnění uživatelé. V našem příkladu je přihlašovací proces jednoduchý, ale efektivní a ukazuje, jak 4D Qodly Pro bezpečně a efektivně zvládá ověřování.

Proces přihlášení

Přihlašovací formulář se nachází na stránce „login“ a skládá se z následujících částí:

  • Dvě vstupní pole: propojená s e-mailem datového zdroje a heslem.
  • Tlačítko „Přihlásit se“: spustí proces ověřování.

This is a login page for a "Performance Review" system. The design is split into two sections:
* Left Side (Red Background)
        Displays the Performance Review title with an icon of a building and a person.

* Right Side (White Background)
        Contains a "Welcome!" message.
        Two input fields for Email and Password, with the password field having an eye icon to toggle visibility.
        A "Forgot your password?" link.
        A red "Sign in" button for user authentication.

V aplikaci Qodly Studio jsou ve vyhrazené sekci šablon k dispozici další předpřipravené šablony formulářů pro přihlašovací funkce. Tyto šablony lze přizpůsobit tak, aby vyhovovaly konkrétním požadavkům vaší aplikace.

Funkce: Authentify()

Když uživatel klikne na tlačítko „Přihlásit se“, zavolá se funkce „ds.authentify()“ s e-mailem a heslem jako parametry.

The OnClick function in this UI is set up to authenticate a user when they click a button. Here’s how it works:
1. Event Trigger
* The function is executed onClick of the button.
2. Function Call
* Calls an exposed function named ds.authentify, which likely handles authentication.
3. Parameters Passed
* email (Text) → Taken from the page input.
* password (Text) → Also taken from the page input.
* pageName (set to "app") → Likely specifies which page or context the authentication is for.
4. Result Handling
* The function returns a result (Text), which could be used to verify if authentication was successful.

Informace o uživateli, jako je e-mail a heslo, jsou uloženy v databázi v tabulce „Employee“. Ve funkci „authentify()“ se provede jednoduchý dotaz do databáze, aby se informace ověřily.

Zde je uveden kód, který tento proces ilustruje:

exposed Function authentify($email: Text; $password: Text) : Text
$employee :=This.Employee.query("Email = :1"; $email).first()
If ($employee#Null)
If (Verify password hash($password; $employee.Password))
Session.setPrivileges("user")
Web Form .setMessage("Authentication successful")
Else
Web Form .setError("Authentication failed")
End if
Else
Web Form .setError("Authentication failed")
End if

Správa uživatelských oprávnění

Před ověřením uživatele je nezbytné omezit přístup k citlivým datům a funkcím. Toto zabezpečení zajišťuje správa oprávnění.

Nejprve máme privilegium označené jako „none“, které disponuje všemi právy ke zdroji dat (ds) a zajišťuje komplexní přístup k databázi. Pozoruhodné je, že toto privilegium není přiděleno žádnému uživateli, čímž je zachováno bezpečné prostředí. Když jsou práva přidělena jednomu privilegiu, jsou automaticky odebrána všem ostatním, což účinně zabezpečuje systém.

This screenshot shows a privilege management interface where a set of permissions are assigned to a data source (ds).
Read: Allowed
Create: Allowed
Update: Allowed
Delete: Allowed
Execute: Allowed

Dále jsme přidali privilegium s názvem „autentizovat“. Oprávnění „promote“ je přiřazeno funkci „ds.authentify()“. To znamená, že kdykoli je tato funkce zavolána, automaticky se použije oprávnění „authentify“.

Poté zajistíme, aby byla k příslušným datovým třídám nebo používaným funkcím přidána požadovaná oprávnění pro autentizaci. V našem příkladu přiřadíme datové třídě „Employee“ oprávnění „Read“ a „Execute“.

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

Nakonec aktivujeme možnost„Vynutit přihlášení„. Tato volba umožňuje řídit počet otevřených webových relací, které vyžadují licence 4D Client. Uživatele můžete také kdykoli odhlásit a snížit tak počet zachovaných licencí.

Tento vícevrstvý systém oprávnění pomáhá zabránit neoprávněnému přístupu a zajišťuje bezpečný provoz aplikace.

Chcete-li se dozvědět více, přečtěte si příspěvek na našem blogu: Vynutit přihlášení se stává výchozím nastavením pro všechny REST Auth.

Přidání funkce odhlášení

Pro zvýšení uživatelského komfortu a zabezpečení je důležité poskytnout možnost odhlášení. V našem příkladu:

  • Tlačítko Odhlásit je umístěno v pravém horním rohu stránky „Hlavní“.
  • K tomuto tlačítku je v události „Při kliknutí“ přidána akce „odhlášení“.

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

To umožňuje uživatelům bezpečně ukončit relaci, vymazat veškerá aktivní oprávnění a ochránit citlivá data.

Další kroky

Ověřování a správa oprávnění jsou základem pro vytváření bezpečných webových aplikací. Chcete-li se dále seznámit s možnostmi ověřování a správy oprávnění, nahlédněte do následujících zdrojů:

Doporučujeme vám, abyste si tyto koncepty vyzkoušeli implementovat ve svých vlastních aplikacích. Máte dotazy nebo postřehy? Zapojte se do diskuse ve fóru nebo se podělte o své názory v komentářích níže. Zůstaňte naladěni na další článek z naší série!

Vanessa Talbot
• Product Owner • Vanessa Talbot se připojila k programovému týmu 4D v červnu 2014. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Od svého příchodu pracovala na definování klíčových prvků ve 4D. Pracovala na většině nových funkcí preemptivního multi-threadingu a také na velmi složitém tématu: nové architektuře pro enginované aplikace. Vanessa má titul z Telecom Saint-Etienne. Svou kariéru začala ve Výzkumném ústavu kriminalistickém jako vývojářka pro audiovizuální oddělení. Působila také v mediální a lékařské oblasti jako expertka na technickou podporu, produkci i dokumentaci novinek.