Ċ package Ġio . coll app . model Ċ Ċ import Ġorg . apache . commons . lang 3 . Validate Ċ import Ġjava . util .* Ċ Ċ enum Ġclass ĠPermission Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠĠĠĠĠ Ġval Ġcategory : ĠPermission Category , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġonly Ġfor Ġbase Ġpermission , Ġif Ġfalse : Ġcannot Ġbe Ġused Ġin ĠProject Ġlevel Ġpermission ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġonly For Base : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġ/* Ġaccess Ġto Ġthe Ġadmin Ġtool Ġ*/ ĊĠĠĠ ĠADMIN ISTR ATION ( Permission Category . APPLICATION , Ġtrue ), Ġ// ĊĊĠĠĠ Ġ/* Ġrole Ġfor Ġadmin Ġproject Ġ*/ ĊĠĠĠ ĠPROJECT _ ADMIN ISTR ATION ( Permission Category . PROJECT ), ĊĊĠĠĠ Ġ/* Ġrole Ġfor Ġreading Ġa Ġboard Ġand Ġrelated Ġcolumn / card / comments Ġ*/ ĊĠĠĠ ĠREAD ( Permission Category . BOARD ), ĊĊĊĠĠĠ Ġ/* Ġcan Ġcreate Ġnew Ġcolumn Ġ*/ ĊĠĠĠ ĠCREATE _ COLUMN ( Permission Category . COLUMN ), Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġreorder Ġcolumn Ġ*/ ĊĠĠĠ ĠMOVE _ COLUMN ( Permission Category . COLUMN ), Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġrename Ġcolumn Ġ*/ ĊĠĠĠ ĠR ENAME _ COLUMN ( Permission Category . COLUMN ), Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġcreate Ġcards Ġ*/ ĊĠĠĠ ĠCREATE _ CARD ( Permission Category . CARD ), Ġ// ĊĠĠĠ ĠUPDATE _ CARD ( Permission Category . CARD ), Ġ// ĊĠĠĠ ĠMOVE _ CARD ( Permission Category . CARD ), Ġ// ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ/* Ġcan Ġcreate Ġa Ġcomment Ġ*/ ĊĠĠĠ ĠCREATE _ CARD _ COMMENT ( Permission Category . CARD ), Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġupdate Ġand Ġdelete Ġcomments Ġfrom Ġother Ġusers Ġ*/ ĊĠĠĠ ĠUPDATE _ CARD _ COMMENT ( Permission Category . CARD ), Ġ// ĊĠĠĠ ĠDELETE _ CARD _ COMMENT ( Permission Category . CARD ), Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġmanage Ġa Ġaction Ġlist Ġ*/ ĊĠĠĠ ĠMAN AGE _ ACTION _ LIST ( Permission Category . CARD ), Ġ// ĊĊĠĠĠ Ġ// Ġfile Ġrelated ĊĠĠĠ ĠCREATE _ FILE ( Permission Category . CARD ), Ġ// ĊĠĠĠ ĠUPDATE _ FILE ( Permission Category . CARD ), Ġ// ĊĠĠĠ ĠDELETE _ FILE ( Permission Category . CARD ), Ġ// ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ// Ġlabel Ġrelated ĊĠĠĠ ĠMAN AGE _ LABEL _ VALUE ( Permission Category . CARD ), Ġ// ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ/* Ġcan Ġupdate Ġthe Ġ_ current _ Ġuser Ġprofile Ġ*/ ĊĠĠĠ ĠUPDATE _ PROFILE ( Permission Category . APPLICATION ), Ġ// ĊĊĠĠĠ ĠSEARCH ( Permission Category . APPLICATION ), ĊĊĊĠĠĠ Ġ// this Ġpermissions Ġmust Ġbe Ġused Ġfor Ġaccessing Ġthe Ġhook Ġendpoints Ġdefined Ġin ĠApi Hooks Controller ĊĠĠĠ Ġ// special Ġ" technical " Ġusers Ġwill Ġbe Ġdefined ĊĠĠĠ ĠGLOBAL _ HOOK _ API _ ACCESS ( Permission Category . APPLICATION , Ġtrue ), ĊĠĠĠ ĠPROJECT _ HOOK _ API _ ACCESS ( Permission Category . APPLICATION ); ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠA VA IL ABLE _ PERMISSION _ FOR _ PROJECT : ĠSet < Permission > ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp Ġ= ĠEnum Set . none Of ( Permission :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( perm Ġin ĠPermission . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! perm . only For Base ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp . add ( perm ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA VA IL ABLE _ PERMISSION _ FOR _ PROJECT Ġ= ĠCollections . unmodifiable Set ( p ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġensure Permission For Project ( permissions : ĠSet < Permission >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠValidate . isTrue ( Permission . AVAILABLE _ PERMISSION _ FOR _ PROJECT . contains All ( permissions ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" permission Ġat Ġproject Ġlevel Ġonly : Ġ$ permissions Ġcontain Ġa Ġonly For Base ĠPermission .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ