From 86393e4a2671649514b83d0405e4c22170755a9e Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Fri, 6 Feb 2026 00:16:29 +0000 Subject: [PATCH] Docs, screenshot of permissions view. --- README.md | 4 +++- docs/screenshots/master-permissions.webp | Bin 0 -> 26486 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 docs/screenshots/master-permissions.webp diff --git a/README.md b/README.md index efc882e..ffab527 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,8 @@ Run `systemctl reload caddy`. Now `app.example.com` requires the `myapp:login` p ### Step 4: Assign Permissions via Admin Panel +![Admin panel permissions](https://git.zi.fi/leovasanko/paskia/raw/main/docs/screenshots/master-permissions.webp) + 1. Go to `app.example.com/auth/admin/` 2. Create a permission, give it a name and scope `myapp:login` 3. Assign it to Organization @@ -134,7 +136,7 @@ import { apiJson } from 'https://cdn.jsdelivr.net/npm/paskia@latest/dist/paskia. const data = await apiJson('/api/sensitive', { method: 'POST' }) ``` -When a 401/403 occurs, the auth dialog appears automatically, then the request retries. +When a 401/403 occurs, the auth dialog appears automatically, and the request retries after authentication. To protect the API path with a different permission, update your Caddyfile: diff --git a/docs/screenshots/master-permissions.webp b/docs/screenshots/master-permissions.webp new file mode 100644 index 0000000000000000000000000000000000000000..5990d724ba3c384506da807c47b9d93659b22444 GIT binary patch literal 26486 zcmWIYbaTr~XJ80-bqWXzuuw=!XJ8P>VV=vVHH)K-#cra<0-vQzl$8`pEFv}tac1WI zshRn&E4|)(f7#u2FY0&H#r{r}Rjdz$@Axd!{C^&9`L{~rC{_OKVDz_ci(^Ex0}Dzck}!F z3;(bFdVBvRUS7j!Sr4tR6_%!k18skd%CUKhKETzCEO zP3mT2@nr1`k<@yW%)&J{zr^Cir376MorsM|N4v#HqI~T{7s=N!gYx1P+)e-9#tZ05tl0Su2o2+N=syDcIV0{C_u~VGftHZq9 zt_$^w1*bBso=cRfpqe;mU@s3L6t{E){7vn71+d+VRti zrljm(kZ81XaTRw+CMj%uJ09E$3@8wrxrAp)wcTVE>(*cwp}YwR3LfY7-*aw{)JbeG z_%Bv@BzL!hzapp@5IQf%$x*+g((1_`sf?a&zMrm{)CHbf>_>8juzyN&7NT53bjYU4 zw>Lx9ZSnXur@Jq4_J8q3UiC{)nHwf&Z@L*}>-scLLv?B>IN|e@?p?X)pZFFhR@JG& zie?=X;_V)8=zK3&M@kyrXv=1L)8W(CRjVGT$#wq!UHaf}{D0H8>YKAwC$A7$dbw2d zfb7MaiM(2?TT8EqO@Grqx8*=16AMezpSE`<@7s^;Unsjg`eKawss4SUGDI92NqsOwLg!|qvvk)+?J>lYxz5O za-;VBCER-pFWSBovMafL#*y*SV}q^be|rS4|B}Cu8ZI?C(y4RlmxG{kis&*j_IjS7 z?CGmJ>l%u}!w;I=@m%~ITyCrSS=m)bxm|JJa91K;((oT!Ke?gnbBd%yMQRZWiV&ot z_rgrRwmE8RqHZlLQ&9Z8V_nFy>!&K7##z^FpZk3APl(}4!BejaG_f4s^g3O5*3E6# zisN!G{4rWsK}r=Pa;}o!zC)?*T)&=b!IV_agVT&-jd}I9pZUGI`(nrp?jUY4&CcuY z2BL)wl6GZ6fn6=O3Hpxd)$;pF{Hr{OZ+5hnx_#K?2#(T(6G9V+&K)2d7}c1wwpRYK zIL_U#?Cdm6|6c9lNqJt5h6*YdPfw^lRj{^XwfQDV*N)3e&fGtj4RJKVgk!4T$yRes zpP}*d+q~ZwN*R~vd|&hTd6a9|*?EsIKfi44d$4L|;soaBFW$zto^SpqFsHUVENA{nNO}PH@-AxUP`LV{)j7ITh zPIG3w^j*=y`+m~#BLR{A;ZtrDf8;G#b$W5=sw)M$?E;&al%B|&P0x9IYeMhNIk!0V z?^?5Z9~7OcTycbV(~D=iOSc7{7GVF)aj0SPlEZJxW^s9b$U8Z2&-Ev{4$KRM!@?GNMcaDbaXx|QGWoVHmEhfGJvQqK zLPQ$Y*8K@%Q+^*Iw0)`Z&JGpM?_OanzOnZou^Rts$=Ykcyx48Q#e1=L-a0dDbo}(Y z5_j)9<}M{PY1?{XE~&%ciqj~9=(K|)^kQBxF{(VJrB;B zc%uuw(Ry&1#wp2+3#T%Fto?B^Woq9VPOr{04!!#;rX?%53iq5Nt$+|vaHuiVta+q% zq}s&!#rLHXKkshX;_xu&^y?S5ueOI6zC7Q!l5Nta-qXr!Jl^E+t=Vm?)HUaa*db?x~n9wypC5pX@y04BNf2t-m9-u{*RRt+$J>F?)RCQ<~AU zRej#=l55&y^zU>3=FI87J&&Z;7`WwlgW=7cjSq@8RF@xT{G&5Hvg?oFyI*?8XFa*~ zJE?qTDvfN$z=k{NrD5SEXVM^Vh|K93T7eDu_`nBVR#nVsI zHPRfXBL$HS3#}11-6L$#w3f^PEa@+LZ{3Q)Zw%@aUyIxAMWnC2h z&LN>E)MN3))l;^;WX09e3U-*f)zNI8rQK{d@hyx^91Q}+UcQxeQ!me*ta-;I>0EJTneVy4aQpG4sUf{P< zhWcl#ipD!o#{m!*LPy2f9@#0M_Npi2+ zxlT>`wOn)6vdyOtsrdG%{s`K-pLt?rhtO-jM%(}~!Sy)z_$C2XIvf`XlrmAv2a#h1KQR{Lt0 zTxxmoVBxo}o>LXctBx?}ZQ^H`bRud3T3`@i--GOpNyq-~y-#fTq8oYSb->(|#eplX zWSL6!y5VP>Eopr-@xqG|D_OpF=Y_Z!tV<$xgZpD7HOt}6CH6zPNySx1Kb>B3%Gdf` z!M>||PHb$J?5^>7szpjS9NZECX>gi+cmY?6p`G;R7GotIzfR_T-ae&#F@DSTzIx@L zz;Sr}y3oaTW@~wD&elE1D$|#4m96_5vz_a+Ud!xjUR5i26s?P=E(xCM2^xSQp;q}xciTHL_4Q&K&L)L9wX1hPa8TS;P)|K42 zqd47p-V!lc*JK6u>g>B}lNmFD&!1X$_R8AjF|WSh>Ic<0uX`8Y8d*7a0a`WZ^*(HZ zEyueV^S<=AeA?T!M_*(sgLKEQhrOkH92$NkW$dig;@VZn=bXxvDQ>8-oPEmSiGhdX zx4*QMT_B|8R1gsQ>%!^t>~r^M9NE8iTTSxG-ILFq3sF*w;#wL`+K5=m%gZY?zw%H0 z5xDb#LX4&JlP2FjW8OJzY+tyeqdra(Js>;h5BCj&WaOGq~K??Ui|ODwl7|P`st^ie%9b(e0*@|bmnoF?@ORv z43a6YxnlY&#Fm+LZq`%cm6#I6VOGm_^-HyZZ>OK+oE!TtXp&aPKnL2)ec!v}`tNzZ zWF6BS_g5bhE`>$Nu|$8Yc`5bO=igtWGuK3KII?^0-eDo2x0^wF$LV-)OWSp%kG6Zh z5!oDKrdZ1Kl95SKUb5=N?T`9*sy>IuZovq8Sek8^5^>%|Rc@*Va$^e=YWyAiC)NgR z+wo%F+4K8Wx76&4Y+;HJ5Hg%wE-QSm!|(kO0fx&m!o3gs=$o%ml(}#dmpU`@W?Kgo#^c#=(%p*nj*%> z8dvP+%zfS5xNiHSS#K146B_w>)~Ri94)d5hD`u;y0(#MlzxDu)=%2AZ_2)(4&dG|~ zCbmA%`CC=^rtwQP&v){o)}ru0?iyt>r!veP82&m1d}O&3!Q6@DV{l0artDCYmR!$%*91Ii=?ky{3Bn&z`*!|ZI+zJbdT8C z>l8f?&HZy{y1U@aNnZLdj~#oKv+h;lY=NHdA!oDo=j_?)zlJM%r&oD}-JZ~!rN$P0 z3r~yuXI)gfugUD)rgMfdib0&`rhTm3F|X`u%G<;T5_`+mJN3NcE4?`6#RCQg*C^G*DF+^SvMBaOYd%ZA^qBAUDVB$sU%cYEc5&(? z%h^|4y)Ny`e&2Loo<_9zAh#yX7$Z*E-;Z~1dF;n(-b(-rPt zoiBe742V9?{k(na%FkbaIvr09JC&2Ypyei zjCu_BepCA+(<*xWz0rXKz9%wRxH@@rc)uMDbrE~-JCjNMyuvYQhOjLgmtBmzz`(%L z7tJzl7uRt^>nSEWQ{04lzvPFv-Ts#Dwr6#~iH+eq^}RaYh^=sJ%4)yj zTYVRP2!CnI%5~xTm!1|f)qZ1oQ6Wp|m*$FRFBD2GHn4K7R}-4ZWu@4?EOKq5%rcn_ z$KuQfEDyw#=l2LKyL%_zRA%b}1_tvwt&I6AzkD^?oKpSd`UH-@Jj+tcJY*#dw(n#0sHt6g&}8iR%)@P&_nQ-kr!(=^ET26kd6{7V-;;_U*ZPwi zehM%9;>RH$Qa16by~v_do%^nx-#RZW*1qr=kEnH~R>XzaCc%lv0@J>k$h3V?h!89= z(b>Oxa(!anQI+^ZQyODpgMZ9qSQ`{xo5H}rcp+(Oo#Uy0i_93%Yh{ye z?O&-Gpr(}e`+ARBEPLXT&#e7-r#<=H{LDlt`{Cn^SCcN(`yQy?`T7Cx{CVX{+_yH( zls&aatHCQ)FY`^gMnf3STBnM+tfhgscLnP%e|liiyN2VPyXSmbaoJ<&_{?z<#q{Z;$_y{kIpK+fz}rZo#)F>w*mr zFfhox4_B)E{cyWQ+!}{de{y#%n#$OI^|j!h_H7JD(HR(jtJx1tBrj!m-<%CCJHsy!z}Xaf5krr_HTw_6>wPyeXz(OShf zYr*bTO%a)WU5dxsMZ!*8dcCD=VcPu$2F6a7-VDosk5kU&Pm*VQYjo_vvh6cA_THH= z=~75$#M_kVx+!Lnj~42ue)ark`!F&@@A~{Q{r<doSlaY#Ip=mEhjG{Z z+~}OUCM-wIo`+8AdcAM*ha3krzqcRj62cEfb?chTZ^LTSfqkZZn`_;B;T@6^~D8;);w00?L3pZ zkJs0Ei-er(sZ^uG&O7(BtXQFVW|Lr|>5Tu?yI$&Xy!Ow~*!Z6J?4#XR-X!vcq#0Hj zz7>2L^mD^y!-py*dJ0qQ&i6dqzEkn7xt30B(+L%}J)!PykEgz$6JYt%_tK@^J9dV7 z>a}@Z(>i;10oSiv$L7lkzIye-tGa7fMu`|8624z4%zx0oCA?XOX3Rr$?>7e7XX zUCHT>ylAP?ms~J+gSwWK-g|Y~Nx~I(pS-%B|T=7gq05T|ej7SFyN_mn>#2s$N$adi@TwonL8iUgevH z4HF9ETZEEk8$~+v9=^FDqvE+3D@QoL;!eF8tb3oD9Xcn>lo336Q>pCSl|4R+`?ub# zPhJ#uBBdtx#B+Q7IhXqqkG1)~II}b*#--zV2fJv%(|gkoNql-=BKv%fvPYl$PowwW zRPG%_j)VYm;A0t>Qfc-nipuCnf`9Vk&iZE?5|$@T3eH^H+k)ik1IJ0-kh8x z7<;ogjd-Cb)-y#CnGMJk$dL9#W%?yEZ=KUSpB*P76l`WmwYMZw*_bl_tEgJLsEp?4&*Z0W##F>^$ciSXv4O?e! z-m*Hhc5+e<)6?exa%r2U=63(AU+Iu|V^&DCUE=Z|f3xIXO8W}iJ-#Sic)`InXP;Nx zx4&`fF~u$`(zvw_ubd@S)1B1!TE}ofdACJdv8fi5U<;7=Duxu%Ev1|%jO?0V9vd> zp>*fseaxxP*fwO;$7DCmKgT?|;YGSmnzo;RR)%WDle*0tJC_wCvns0U%I{&{5T>mu zyLR_9yKwEPb_@SMxmhB|+V1Egxc6mm3B#vX;hSbTvoO3=jMMmi;I1j-7kQaaR$lWh ze*X!MIk0`@wNIaU7hN%2bvEwh2Nz|Vp9Z@VPSyKh#@jch(Uysi2IP%t-r`wACLZ%GswGGx%xAGTH=v^PxHSzeC)1~Gm zXTysRExtE>v%dtwt^a({8bU*ko0HkU=epE+^$T<`qGiQCroI|*jkaAgXYz2)haZSRfF zn&x-n*MFJTZ@ZstY2jfmDb10+*mE@d5U)5*WH9;aL?&(xL=4yYO>MqH(j#2s1r}B!1Io7@>GxBOb2QCW# zDfie}b@H}@)<<;bKHRouYW_Y&3gZvMXe<66dj_sTBI_=HQHH|<^5=;|(7`bTu( zAFhMHmOR-SvP5Uo3v1<+E9V7{RqC9+Q}Y$goztJ(p6Ge*cfqe<<9pA`JnNl#oC*&z?A9O0=C6-4 za3~CLclX;ct8D3qq@r^-4YnP*a>zYEe_6t@UGhleyTW$J!%=-Syjjfx_9P5qDS>y{~K z$o!SFIL(;X{UvI4g9h`%8$6YDP72?)x2ZUL883QvuHOEO-S4fLH#E+xZr<4;)t=QY zUv=(`-=BroEp|?_IzOXq>LvarMJ3?0{#;t2zTPf33qWkN<(ZkPcw;3McXIVQrdTPSkvLEM`K3p`} zdO>ac*#?(9InI*3s$&1mHe`Lc!YcU9R^Y#<2y?7uiB$I5jYj36l9?*MrpDS-232r- ztLWU@@jGGStCPMb?_GO;`)l9oeUsf@minjh&0_lBRrjJNYVyA)0@G9(!Y7Cr+W!ij z_;zjJsx9YtZn+;TUhSN=iRr(=HFJ4f9qlcaA2Ho=I6-hd`(4M& zmu{Bq>f`!*ydrn`E$$J0$Cvc2bJ=Ki8~@pr zdxCYe_;cpA?YZCC_59zyQ=eBK(}~!x%J!>}Pfci|a7VnkO^?S0cmMx0xVKoiYo&-( zzi}09J!CnXeL|hJ{UV*RDLh@9b~^@^|3A0)Ox3FY2R3iX<2IA$ul_&tj{=i_(iG4my%c>La}sqR2+meZ{LlAq!QcGn3+&%BTyxhr)Y*N3}THZKg2N(oMWGef3) zmHARp(e$EQf=bmFos7LyG^K*q{QqHiAzyc%(pIl7v9;45R%WyRi?o%TVG-LKvyAUs zl!ZI5?*-E|Wm^{R!WQi}*Ealnp0xF+>%;HMjV~{i_>(qE^86dI1+Pp$X>M4|b3$eD zIpw7%=1gkX`gr%cvl_>)UoMz+a^+8B#}f7EozC}BNfp;4gA8XBDZX8)^yvFeN7vuJj!KdL`^wIK-BptC_R~ytv6D_3&htGN z%y{+t@>NAX?`o}^ivyOloNW3KeJEFN+VrPk-}*J@upF}bs?!(zeR?m~uV~L7yTZGA zUNkwnC@?Tc{Ry_JUsHQ_(fXHvqO^AI$@p=(tBp&wH+AiFjmw&`Pp`R@MDo_9ZCO=1 z`z`YlPVvXi7O@Tjwx6^z&ohMYXE?oap^tMx%q`jI+xlPE|4%xaDbY3czGqP0U1MV> z^M!q9{jN(3zh05Kux?ecS+&*#kMrED{7;SlxjTCN7QdmAbS3A~=hY$(3{b$%n>NXKPsgt!9pi)9g&j{_ z`Q*L_eD6%q>k*o)HvJ~M#K#*iP2a!u_$jkEUc`M=IIU12W8DOS@Crd;0s zCTE%avZsFv<8Mv;Y2bazItsNb`rW5*|x##4pOP6x}uB-@z z%H(#(mg{_Sy?)taY3TohMtQ!|RP^R^y!lf(RW8k1Y9;?)4|UH~tA9%RcW$`(@AV_g z3*t)>Uw5)CKXv^SBb$-f*TUF;VkflEy`SV^_36#p6LC>2JjSBN*Ysp5DZRNF=2f};imn&i|pJP&E7}%-sH)Nd}EOPRmt0W zvm1Nr@6&7ct+RT6BH`SZPBa&}yzP-p;mS8TF4up~itmTX*-bfpl_x^C&iQe3{=xQ&EjC+> zUGmSzUwUi1aMhQB!y00d*F`26p54AFv`ji)OLTvR?7Rspb6EDvo@Eg%RL^yeQqqgq z6Cv{U{G1>4|8!!%tP8W9zdpy~pN@CFx)f+7j0k{eEc*=8KvpnTrx&MN&SeqWCsD0E9X^_Pjidd@O;VXmkcVF{nkF=fToB{kPdBkTV>UE-2`KkRGs7*<$h2cb(DHDbB7YESmrH=GGXl@A_Z< z@9)D^+AY&hNLs|2Upx2sVb*g8N4~U>y-N?XPiACbkQAMk%YYMd@E$d4_Z|I|`3EVlXLzd09q zUAWReU;lbCd}~a+R!U>}q3p=2FB9!VU!As^c*ktznG~~?Q{1W|C`7aqHbzQzp3nK^0?#QvBLdug-+lC7G@%J7N~v?OkFcV)gZm z{*lFbpFVNEQN1uXc=b)gxFfUM-6i#yh2OvWqQ9g5g!`C9K358>=XEXC ze_uS+SJ7Pqb?}e4Fl{^2_TB7hOBgYAus@M|`zY3l6i=7#BtS7^L ztvlCu)1-^nCTv}0@$AEuRDXjg6SlAOvuv6BRMX^UI6jVolrX~$lPojqcn^QQU4FWFLGq=7w*f~h zrH*iaI^<+Lp~&U38>8zd-fIG)r?xIuSu`VP!u;)t%#3$5r~MQQEsCmtb;a9mhs3Ih zXFRV4%y$Z35nG#S^5^WbfQFD}H^0R@xQ?BAU7s+$cFBz@^T?cu=Ug65bE;Vs_M&+n%cIzkB-xzoZO6j

)5>Wi53nchNp}zQaXj&R?GhTJLxl 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 TSKBn&uQ