package Ġcom . tencent . devops . auth . service Ċ Ċ import Ġcom . tencent . bk . sdk . iam . config . Iam Configuration Ċ import Ġcom . tencent . bk . sdk . iam . helper . Auth Helper Ċ import Ġcom . tencent . bk . sdk . iam . service . Policy Service Ċ import Ġcom . tencent . devops . auth . service . iam . Iam Cache Service Ċ import Ġcom . tencent . devops . auth . service . iam . impl . Abs Permission Service Ċ import Ġcom . tencent . devops . common . auth . api . Auth Permission Ċ import Ġcom . tencent . devops . common . auth . api . Auth ResourceType Ċ import Ġcom . tencent . devops . common . auth . utils . Action Utils Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ Ċ class ĠB k Permission Service Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġauth Helper : ĠAuth Helper , ĊĠĠĠ Ġprivate Ġval Ġpolicy Service : ĠPolicy Service , ĊĠĠĠ Ġprivate Ġval Ġiam Configuration : ĠI am Configuration , ĊĠĠĠ Ġprivate Ġval Ġiam Cache Service : ĠI am Cache Service Ċ ) Ġ: ĠAbs Permission Service ( auth Helper , Ġpolicy Service , Ġiam Configuration , Ġiam Cache Service ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġvalidate User Action Permission ( userId : ĠString , Ġaction : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isAdmin ( userId )) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . validate User Action Permission ( userId , Ġaction ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate User Resource Permission ( ĊĠĠĠĠĠĠĠ ĠuserId : ĠString , ĊĠĠĠĠĠĠĠ Ġaction : ĠString , ĊĠĠĠĠĠĠĠ Ġproject Code : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Type : ĠString ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isAdmin ( userId )) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġuse Action Ġ= Ġbuild Action ( action , Ġresource Type Ġ?: ĠAuth ResourceType . PIPELINE _ DEFAULT . value ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . validate User Resource Permission ( userId , Ġuse Action , Ġproject Code , Ġresource Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate User Resource Permission By Relation ( ĊĠĠĠĠĠĠĠ ĠuserId : ĠString , ĊĠĠĠĠĠĠĠ Ġaction : ĠString , ĊĠĠĠĠĠĠĠ Ġproject Code : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Code : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Type : ĠString , ĊĠĠĠĠĠĠĠ Ġrelation ResourceType : ĠString ? ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isAdmin ( userId )) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġuse Action Ġ= Ġbuild Action ( action , Ġresource Type ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . validate User Resource Permission By Relation ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= ĠuserId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= Ġuse Action , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Code Ġ= Ġproject Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Code Ġ= Ġresource Code , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Type Ġ= Ġresource Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelation ResourceType Ġ= Ġrelation ResourceType ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Resource By Action ( ĊĠĠĠĠĠĠĠ ĠuserId : ĠString , ĊĠĠĠĠĠĠĠ Ġaction : ĠString , ĊĠĠĠĠĠĠĠ Ġproject Code : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Type : ĠString ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" getUser Resource By Action Ġ$ userId Ġ$ action Ġ$ project Code ") ĊĠĠĠĠĠĠĠ Ġif Ġ( isAdmin ( userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" getUser Resource By Action Ġ$ userId Ġis Ġadmin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġarray ListOf ("* ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuse Action Ġ= Ġbuild Action ( action , Ġresource Type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getUser Resource By Action ( userId , Ġuse Action , Ġproject Code , Ġresource Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetUser Resources By Actions ( ĊĠĠĠĠĠĠĠ ĠuserId : ĠString , ĊĠĠĠĠĠĠĠ Ġactions : ĠList < String >, ĊĠĠĠĠĠĠĠ Ġproject Code : ĠString , ĊĠĠĠĠĠĠĠ Ġresource Type : ĠString ĊĠĠĠ Ġ): ĠMap < Auth Permission , ĠList < String >> Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isAdmin ( userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpermission Map Ġ= Ġmutable Map Of < Auth Permission , ĠList < String >>() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Map [ Auth Permission . get ( it )] Ġ= Ġarray ListOf ("* ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpermission Map ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Actions Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġactions . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Actions . add ( build Action ( it , Ġresource Type )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . getUser Resources By Actions ( userId , Ġuser Actions , Ġproject Code , Ġresource Type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Admin ( userId : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( userId Ġ== Ġ" admin ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Action ( action : ĠString , Ġresource Type : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġaction éľĢè¦ģ åħ¼ å®¹ repo åıª ä¼ł Auth Permission çļĦ æĥħåĨµ , éľĢè¦ģ ç»Ħ è£ħ ä¸º V 3 çļĦ action ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ(! action . contains ("_ ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAction Utils . build Action ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth ResourceType Ġ= ĠAuth ResourceType . get ( resourceType ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpermission Ġ= ĠAuth Permission . get ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Bk Permission Service :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ