/** Ċ Ġ* ĠCopyright Ġ 2 0 1 7 - 2 0 1 9 Ġthe Ġoriginal Ġauthor Ġor Ġauthors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . zh udy . du ic . web . security Ċ Ċ import Ġcom . auth 0 . jwt . JWT Ċ import Ġcom . auth 0 . jwt . exceptions . JWT Decode Exception Ċ import Ġio . zh udy . du ic . Biz Code Ċ import Ġio . zh udy . du ic . Biz Code Exception Ċ import Ġio . zh udy . du ic . Config Ċ import Ġio . zh udy . du ic . User Context Ċ import Ġorg . springframework . web . reactive . function . server . Handler Filter Function Ċ import Ġorg . springframework . web . reactive . function . server . Handler Function Ċ import Ġorg . springframework . web . reactive . function . server . Server Request Ċ import Ġorg . springframework . web . reactive . function . server . Server Response Ċ import Ġreactor . core . publisher . Mono Ċ Ċ /** Ċ Ġ* Ġ@ author ĠKevin ĠZ ou Ġ( ke vin z @ we gh st . com ) Ċ Ġ*/ Ċ class ĠAuthor ized Handler Filter Ġ: ĠHandler Filter Function < Server Response , ĠServer Response > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfilter ( request : ĠServer Request , Ġnext : ĠHandler Function < Server Response >): ĠMono < Server Response > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request . uri (). path . endsWith ("/ api / admins / login ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnext . handle ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġrequest . cookies (). getFirst (" token ") ?. value ĊĠĠĠĠĠĠĠ Ġif Ġ( token . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠB iz Code Exception ( Biz Code . Classic . C _ 4 0 1 , Ġ" ç¼º å°ĳ Ġtoken ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjwt Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJWT . decode ( token ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJWT Decode Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠB iz Code Exception ( Biz Code . Classic . C _ 4 0 1 , Ġ" è§£æŀĲ Ġtoken Ġ å¤±è´¥ Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( jwt . expires At ?. time Ġ?: Ġ 0 ) Ġ< ĠSystem . currentTimeMillis ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠB iz Code Exception ( Biz Code . Classic . C _ 4 0 1 , Ġ" token Ġ å·²ç»ı è¿ĩ æľŁ è¯· éĩįæĸ° çĻ»å½ķ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( jwt . id . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠB iz Code Exception ( Biz Code . Classic . C _ 4 0 1 , Ġ" éĶĻè¯¯ çļĦ Ġtoken ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġrequest . attributes ()[ User Context . CONTEXT _ KEY ] Ġ= Ġobject Ġ: ĠUser Context Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġemail : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġjwt . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Root : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠConfig . root Email Ġ== Ġemail ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnext . handle ( request ) ĊĠĠĠ Ġ} Ċ }