{"id":499,"date":"2026-03-29T16:32:40","date_gmt":"2026-03-29T16:32:40","guid":{"rendered":"https:\/\/nuplo.org\/?page_id=499"},"modified":"2026-04-27T11:50:53","modified_gmt":"2026-04-27T11:50:53","slug":"obsluga-uzytkownikow","status":"publish","type":"page","link":"https:\/\/nuplo.org\/pl\/tworzenie-oprogramowania-w-erze-agentow-ai\/obsluga-uzytkownikow\/","title":{"rendered":"Obs\u0142uga u\u017cytkownik\u00f3w"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\" id=\"wstep-zarzadzanie-uzytkownikami-czyli-kto-ma-klucze-do-twojej-cyfrowej-kuchni-0\">Wst\u0119p &#8211; Zarz\u0105dzanie u\u017cytkownikami, czyli kto ma klucze do Twojej cyfrowej kuchni?<\/h3>\n\n\n\n<p>Nawet je\u015bli Tw\u00f3j kod jest nieskazitelny, przeszed\u0142 wszystkie testy jednostkowe, a lintery nie znajduj\u0105 w nim ani jednej zb\u0119dnej spacji, aplikacja wci\u0105\u017c mo\u017ce sta\u0107 si\u0119 \u017ar\u00f3d\u0142em problem\u00f3w. Dlaczego? Bo techniczna poprawno\u015b\u0107 to tylko po\u0142owa sukcesu &#8211; drug\u0105 jest kontrola nad tym, w czyje r\u0119ce oddajesz gotowe narz\u0119dzia.<\/p>\n\n\n\n<p>Wyobra\u017a sobie sytuacj\u0119, w kt\u00f3rej u\u017cytkownik Twojej aplikacji nagle usuwa popisowy przepis drugiego u\u017cytkownika, a nowo zarejestrowany go\u015b\u0107 zmienia konfiguracj\u0119 ca\u0142ego systemu. Kompletny chaos &#8211; dlaczego? Zabrak\u0142o solidnego systemu zarz\u0105dzania uprawnieniami.<\/p>\n\n\n\n<p>Zarz\u0105dzanie dost\u0119pem to jak bycie mened\u017cerem restauracji &#8211; to Ty decydujesz, kto wchodzi na sal\u0119, kto ma prawo wej\u015b\u0107 na zaplecze, a kto dostaje klucze do spi\u017carni. Niezale\u017cnie od tego, czy budujesz ma\u0142\u0105 aplikacj\u0119, czy ogromny system korporacyjny, musisz wdro\u017cy\u0107 pancerne drzwi i logiczny mechanizm nadawania uprawnie\u0144. W tym rozdziale dowiesz si\u0119, jak zbudowa\u0107 system, kt\u00f3ry przetrwa ka\u017cd\u0105 kuchenn\u0105 rewolucj\u0119.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"uwierzytelnianie-vs-autoryzacja-1\">Uwierzytelnianie vs. Autoryzacja<\/h2>\n\n\n\n<p>Zanim zaczniesz pisa\u0107 skomplikowane systemy zarz\u0105dzania, musisz zrozumie\u0107 dwa fundamentalne, ca\u0142kowicie r\u00f3\u017cne procesy, kt\u00f3re zawsze nast\u0119puj\u0105 po sobie w \u015bci\u015ble okre\u015blonej kolejno\u015bci:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uwierzytelnianieauthentication-kim-jestes-2\">Uwierzytelnianie(Authentication): Kim jeste\u015b?<\/h3>\n\n\n\n<p><strong>Uwierzytelnianie <\/strong>to proces weryfikacji to\u017csamo\u015bci. Go\u015b\u0107 podchodz\u0105cy do drzwi Twojej aplikacji musi udowodni\u0107, kim jest, podaj\u0105c np. e-mail i has\u0142o. Dodatkowo mo\u017cna do\u0142\u0105czy\u0107 weryfikacj\u0119 2FA np. przesy\u0142aj\u0105c kod dost\u0119pu na adres e-mail.&nbsp; Powszechnie wdra\u017ca si\u0119 te\u017c protok\u00f3\u0142 OAuth2, pozwalaj\u0105cy zalogowa\u0107 si\u0119 do aplikacji przez konto Google czy GitHub, dzi\u0119ki temu Tw\u00f3j system w og\u00f3le nie przetwarza cudzych hase\u0142, a jedynie otrzymuje token potwierdzaj\u0105cy to\u017csamo\u015b\u0107.. Dopiero gdy dane si\u0119 zgadzaj\u0105, drzwi uchylaj\u0105 si\u0119 na tyle, by wpu\u015bci\u0107 go do \u015brodka.<\/p>\n\n\n\n<p><strong>Wa\u017cna zasada<\/strong>: Has\u0142a to &#8222;produkty \u0142atwo psuj\u0105ce si\u0119\u201d &#8211; nigdy nie przechowuj ich w czystym tek\u015bcie! System powinien zapisywa\u0107 jedynie skr\u00f3ty hase\u0142 (<strong>hasze<\/strong>). Dzi\u0119ki temu, nawet je\u015bli kto\u015b w\u0142amie si\u0119 do bazy, nie pozna prawdziwego has\u0142a u\u017cytkownika.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"autoryzacja-authorization-co-wolno-ci-robic-3\">Autoryzacja (Authorization): Co wolno Ci robi\u0107?<\/h3>\n\n\n\n<p>Dopiero po potwierdzeniu to\u017csamo\u015bci wkracza <strong>Autoryzacja<\/strong>, czyli ustalenie: &#8222;Co wolno Ci zrobi\u0107 w tej kuchni?\u201d. Ten podzia\u0142 jest kluczowy, by utrzyma\u0107 porz\u0105dek w systemie. Podobnie jak w architekturze tr\u00f3jwarstwowej oddzielamy frontend od logiki biznesowej, tak w zarz\u0105dzaniu u\u017cytkownikami musimy oddzieli\u0107 fakt bycia zalogowanym od posiadania konkretnych uprawnie\u0144.<\/p>\n\n\n\n<p><strong>Uwaga:<\/strong> Uwierzytelnianie zawsze dzieje si\u0119 jako pierwsze. Najpierw pytasz, kim kto\u015b jest, a dopiero potem decydujesz, co mo\u017ce zrobi\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cztery-podstawowe-narzedzia-kucharza-uprawnienia-4\">Cztery podstawowe narz\u0119dzia kucharza (Uprawnienia)<\/h3>\n\n\n\n<p>Zanim wpu\u015bcimy u\u017cytkownik\u00f3w do systemu, musimy ustali\u0107, jakie narz\u0119dzia oddamy w ich r\u0119ce. W in\u017cynierii oprogramowania uprawnienia zazwyczaj sprowadzaj\u0105 si\u0119 do czterech fundamentalnych akcji (znanych jako <strong>CRUD<\/strong>):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Read (Odczyt)<\/strong>: Podgl\u0105d przepisu. Go\u015b\u0107 mo\u017ce wej\u015b\u0107, przeczyta\u0107 sk\u0142adniki, ale niczego nie zmieni.<\/li>\n\n\n\n<li><strong>Write (Zapis)<\/strong>: Pozwala na stworzenie nowego przepisu od zera i dodanie go do bazy.<\/li>\n\n\n\n<li><strong>Edit (Edycja)<\/strong>: Umo\u017cliwia aktualizowanie i poprawianie tego, co ju\u017c istnieje (np. zmiana ilo\u015bci m\u0105ki w przepisie).<\/li>\n\n\n\n<li><strong>Delete (Usuwanie)<\/strong>: Decyzja ostateczna. Przepis znika na zawsze. To narz\u0119dzie, podobnie jak najostrzejszy n\u00f3\u017c w kuchni, powinno trafia\u0107 wy\u0142\u0105cznie w r\u0119ce tych, kt\u00f3rym w pe\u0142ni ufamy.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"podwazamy-zalozenia-jak-zorganizowac-personel-5\">Podwa\u017camy za\u0142o\u017cenia: Jak zorganizowa\u0107 personel?<\/h2>\n\n\n\n<p>Pocz\u0105tkuj\u0105cy tw\u00f3rcy aplikacji zak\u0142adaj\u0105, \u017ce wystarcz\u0105 im dwa rodzaje u\u017cytkownik\u00f3w: &#8222;Admin&#8221; (kt\u00f3ry mo\u017ce wszystko) i &#8222;Zwyk\u0142y U\u017cytkownik&#8221; (kt\u00f3ry mo\u017ce niewiele). Szybko podwa\u017cymy ten schemat. Gdy aplikacja ro\u015bnie, taki podzia\u0142 to za ma\u0142o i prowadzi do tworzenia tzw. &#8222;spaghetti kodu&#8221; pe\u0142nego warunk\u00f3w. W bran\u017cy stosuje si\u0119 sprawdzone modele.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"rbac-role-based-access-control-czyli-system-przypisania-do-stanowiska-6\">RBAC (Role-Based Access Control), czyli system przypisania do stanowiska<\/h3>\n\n\n\n<p>To najpopularniejsze podej\u015bcie. Zamiast przypisywa\u0107 uprawnienia ka\u017cdej osobie z osobna, tworzymy role i przypisuje je u\u017cytkownikom.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stanowisko Szefa (Administrator):<\/strong> Ma klucz do ka\u017cdej szafki, mo\u017ce zarz\u0105dza\u0107 personelem i usuwa\u0107 dowolne tre\u015bci.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stanowisko Kucharza (Edytor):<\/strong> Ma dost\u0119p do blat\u00f3w i przypraw; mo\u017ce tworzy\u0107 i poprawia\u0107 przepisy, ale nie mo\u017ce ich trwale kasowa\u0107 z menu.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Stanowisko Go\u015bcia (Czytelnik):<\/strong> Ma dost\u0119p jedynie do sali jadalnej: mo\u017ce przegl\u0105da\u0107 kart\u0119 da\u0144, ale nie ma wst\u0119pu na zaplecze.<\/li>\n<\/ul>\n\n\n\n<p>To podej\u015bcie jest niezwykle skalowalne. Gdy Twoja aplikacja uro\u015bnie do rozmiar\u00f3w &#8222;kulinarnego imperium\u201d, nie musisz programowa\u0107 uprawnie\u0144 dla ka\u017cdego nowego u\u017cytkownika z osobna &#8211; po prostu przypisujesz go do istniej\u0105cego stanowiska.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"abac-attribute-based-access-control-czyli-dostep-szyty-na-miare-7\">ABAC (Attribute-Based Access Control), czyli dost\u0119p szyty na miar\u0119<\/h3>\n\n\n\n<p>Co jednak w sytuacji, gdy chcesz, aby u\u017cytkownik m\u00f3g\u0142 usun\u0105\u0107 przepis, ale tylko ten, kt\u00f3ry sam stworzy\u0142? RBAC tutaj zawodzi, bo &#8222;Edytor&#8221; m\u00f3g\u0142by usun\u0105\u0107 wszystko. Z pomoc\u0105 przychodzi ABAC. W tym modelu dost\u0119p zale\u017cy od atrybut\u00f3w: kim jeste\u015b, co chcesz zrobi\u0107 i jakie s\u0105 warunki.<\/p>\n\n\n\n<p><strong>System sprawdza:<\/strong> Czy ID autora przepisu zgadza si\u0119 z ID aktualnie zalogowanego u\u017cytkownika? Je\u015bli tak \u2013 przycisk &#8222;Usu\u0144&#8221; staje si\u0119 aktywny. To pot\u0119\u017cne narz\u0119dzie, kt\u00f3re daje ogromn\u0105 elastyczno\u015b\u0107.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"acl-access-control-lists-czyli-lista-gosci-8\">ACL (Access Control Lists), czyli lista go\u015bci<\/h3>\n\n\n\n<p>Je\u015bli Twoja ksi\u0105\u017cka kucharska ma dzia\u0142a\u0107 jak Google Docs, gdzie udost\u0119pniasz konkretny element tylko wybranym osobom, u\u017cyjesz list kontroli dost\u0119pu (<strong>ACL<\/strong>). Ka\u017cdy przepis ma swoj\u0105 prywatn\u0105 list\u0119 zaproszonych go\u015bci z przypisanymi prawami (np. Alicja mo\u017ce edytowa\u0107, Bob tylko czyta\u0107).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"bilety-wstepu-jak-system-rozpoznaje-uzytkownikow-9\">Bilety wst\u0119pu: Jak system rozpoznaje u\u017cytkownik\u00f3w?<\/h2>\n\n\n\n<p>Aplikacja musi w jaki\u015b spos\u00f3b &#8222;pami\u0119ta\u0107&#8221;, \u017ce jeste\u015b zalogowany, gdy przechodzisz mi\u0119dzy ekranami. Wsp\u00f3\u0142czesne systemy robi\u0105 to za pomoc\u0105 token\u00f3w \u2013 specjalnych cyfrowych dokument\u00f3w, kt\u00f3re aplikacja przesy\u0142a w tle:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Token ID (Identyfikator):<\/strong> Odpowiada na pytanie &#8222;Kim jeste\u015b?&#8221;. Zawiera Twoje imi\u0119, rol\u0119 i e-mail, u\u017cywany by kuchnia wiedzia\u0142a, kto przekroczy\u0142 pr\u00f3g.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Token Access (Klucz do spi\u017carni): <\/strong>To on m\u00f3wi serwerowi, co wolno Ci zrobi\u0107 i jest sprawdzany przy ka\u017cdym Twoim klikni\u0119ciu. Jest wydawany na kr\u00f3tki czas, co zwi\u0119ksza bezpiecze\u0144stwo.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dobre-rady-szefa-zasady-bezpieczenstwa-10\">Dobre Rady Szefa: Zasady bezpiecze\u0144stwa<\/h3>\n\n\n\n<p>Podsumowuj\u0105c rozw\u00f3j naszej aplikacji na tym etapie, musisz wdro\u017cy\u0107 kilka kluczowych praktyk, aby nie stworzy\u0107 zautomatyzowanego ba\u0142aganu<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Zasada Najmniejszego Uprzywilejowania (PoLP):<\/strong> Ka\u017cdy u\u017cytkownik powinien dosta\u0107 absolutne minimum uprawnie\u0144 potrzebnych do wykonania swojego zadania. Je\u015bli kto\u015b ma tylko gotowa\u0107 z Twoich przepis\u00f3w, nie dawaj mu uprawnie\u0144 do edycji!<\/li>\n\n\n\n<li><strong>Zachowaj prostot\u0119: <\/strong>Nie tw\u00f3rz setek skomplikowanych r\u00f3l, je\u015bli na obecnym etapie potrzebujesz tylko dw\u00f3ch.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Audytuj dost\u0119py:<\/strong> Ludzie odchodz\u0105 i zmieniaj\u0105 zainteresowania. Regularnie sprawdzaj, czy nikt nie zachowa\u0142 dost\u0119pu (tzw. pe\u0142zanie uprawnie\u0144 &#8211; permission creep), kt\u00f3rego ju\u017c nie potrzebuje.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"podsumowanie-11\">Podsumowanie<\/h3>\n\n\n\n<p>Nasz produkt zanotowa\u0142 ogromny przyrost! Zbudowali\u015bmy logiczny system zarz\u0105dzania u\u017cytkownikami. Skonfigurowali\u015bmy role, zabezpieczyli\u015bmy aplikacj\u0119 przed nieautoryzowanym dost\u0119pem i pozwolili\u015bmy ludziom bezpiecznie ze sob\u0105 wsp\u00f3\u0142pracowa\u0107. Nasza cyfrowa ksi\u0105\u017cka kucharska nie jest ju\u017c tylko prywatnym notatnikiem, ale bezpieczn\u0105 platform\u0105 dla wielu os\u00f3b.<br>Jednak nawet najdoskonalszy system uprawnie\u0144 nie ochroni nas przed jednym: awari\u0105 sprz\u0119tu lub przypadkowym b\u0142\u0119dem w kodzie, kt\u00f3ry uszkodzi nasze dane. Skoro mamy ju\u017c pewno\u015b\u0107, \u017ce do naszej kuchni wchodz\u0105 tylko zaufani go\u015bcie, czas zadba\u0107 o to, by ich drogocenne przepisy nigdy nie znikn\u0119\u0142y &#8211; nawet je\u015bli ca\u0142y budynek nagle zniknie z mapy. Przejd\u017amy zatem do tematu <strong>backup\u00f3w<\/strong>, czyli jak zbudowa\u0107 cyfrowy sejf, kt\u00f3ry przetrwa ka\u017cd\u0105 burz\u0119.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"materialy-12\">Materia\u0142y<\/h2>\n\n\n\n<p>Materia\u0142y do samodzielnej nauki zwi\u0105zane z tym tematem:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.geeksforgeeks.org\/computer-networks\/difference-between-authentication-and-authorization\/\">Autentykacja vs autoryzacja<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.forestadmin.com\/blog\/user-roles-and-permissions-in-software-development\">Role u\u017cytkownik\u00f3w i uprawnienia w tworzeniu oprogramowania<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/dev.to\/anna_p_s\/best-practices-for-managing-users-roles-and-permissions-5140\">Najlepsze praktyki zarz\u0105dzania u\u017cytkownikami, rolami i uprawnieniami<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.zluri.com\/blog\/role-based-access-control\">Role-Based Access Control (RBAC)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=5GG-VUvruzE\">Jak zarz\u0105dza\u0107 uprawnieniami jak do\u015bwiadczony deweloper<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=jI4K7L-LI58\">Zarz\u0105dzanie rolami u\u017cytkownik\u00f3w<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=DT6Zy1X3ytM&amp;t=6s\">Autoryzacja<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=4Uya_I_Oxjk&amp;t=20s\">Role-Based Access Control (RBAC)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=rvZ35YW4t5k&amp;t=246s\">RBAC vs ABAC<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/www.youtube.com\/watch?v=9JPnN1Z_iSY&amp;t=1s\">Autentykacja<\/a><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Wst\u0119p &#8211; Zarz\u0105dzanie u\u017cytkownikami, czyli kto ma klucze do Twojej cyfrowej kuchni? Nawet je\u015bli Tw\u00f3j kod jest nieskazitelny, przeszed\u0142 wszystkie testy jednostkowe, a lintery nie znajduj\u0105 w nim ani jednej zb\u0119dnej spacji, aplikacja wci\u0105\u017c mo\u017ce sta\u0107 si\u0119 \u017ar\u00f3d\u0142em problem\u00f3w. Dlaczego? Bo techniczna poprawno\u015b\u0107 to tylko po\u0142owa sukcesu &#8211; drug\u0105 jest kontrola nad tym, w czyje [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":415,"menu_order":9,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-499","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/499","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/comments?post=499"}],"version-history":[{"count":6,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/499\/revisions"}],"predecessor-version":[{"id":817,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/499\/revisions\/817"}],"up":[{"embeddable":true,"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/pages\/415"}],"wp:attachment":[{"href":"https:\/\/nuplo.org\/pl\/wp-json\/wp\/v2\/media?parent=499"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}