package Ġbr . com . strn . erp . api . security . permission Ċ Ċ import Ġbr . com . strn . erp . api . errors . Permission Exception Ċ import Ġbr . com . strn . erp . api . security . profile . Profile Ċ import Ġbr . com . strn . erp . api . service . seg uran ca . Per mis sa o Service Ċ import Ġorg . springframework . stereotype . Component Ċ import Ġorg . springframework . web . method . Handler Method Ċ import Ġorg . springframework . web . servlet . handler . Handler Interceptor Adapter Ċ import Ġjava . lang . reflect . Method Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ @ Component Ċ class ĠPermission Interceptor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġservice : ĠPer mis sa o Service , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġprofile : ĠProfile Ċ ) Ġ: ĠHandler Interceptor Adapter () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġpre Handle ( request : ĠHttpServletRequest , Ġresponse : ĠHttpServletResponse , Ġhandler : ĠAny ): ĠBoolean Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( profile . is Dev ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . pre Handle ( request , Ġresponse , Ġhandler ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhm Ġ= Ġhandler Ġas ĠHandler Method ĊĠĠĠĠĠĠĠ Ġval Ġmethod Ġ= Ġhm . method ĊĊĠĠĠĠĠĠĠ Ġval Ġres : ĠBoolean ĊĊĠĠĠĠĠĠĠ Ġres Ġ= Ġif Ġ( annotated Permission ( method )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpermit ed ( method ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( res ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . pre Handle ( request , Ġresponse , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠPermission Exception () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpermit ed ( method : ĠMethod ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermission Method Ġ= Ġmethod . getDeclared Annotation ( Permission :: class . java ) Ġ?: Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ( service . usuario At ual T em Per mis sa o ( permission Method . value )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġval Ġpermission Class Ġ= Ġmethod . decl aring Class . getAnnotation ( Permission :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . usuario At ual T em Per mis sa o ( permission Class . value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġannotated Permission ( method : ĠMethod ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmethod . decl aring Class . is Annotation Present ( Permission :: class . java ) Ġ|| Ġmethod . is Annotation Present ( Permission :: class . java ) ĊĠĠĠ Ġ} ĊĊ Ċ }